LVS的赘述

  1. IPVS,ipvs ,ip_vs是负载均衡器中的内核代码
  2. LVS是完整的负载均衡器+后端服务器。这些组件组成了虚拟服务器。

LVS是一个4层负载均衡方案,标准的客户端-服务器网络语义也被保留下来了。每个客户端都认为直接连接到了后端服务器,同时后端服务器也认为直接连接到了客户端。客户端和后端服务器没有办法获知负载均衡器干预了网络连接。负载均衡器不会检查包的内容,不能够根据包的内容做出负载均衡的判断(例如包里面包含了cookie),LVS不是一个高性能计算集群或者分布式集群,后端服务器之间互相感知不到,不能够协同工作。

为什么要有LVS?

  1. 为了更高的吞吐量。在LVS里面,添加后端服务器的成本是线性的,但是如果采用替换替换为更高端单一的服务器达到相同的效果,成本会高很多,前者是横向扩展(scale out),后者是纵向扩展(scale up)
  2. 为了冗余。后端服务器可以从LVS上被管理员提出,然后做其他相关的服务器操作。
  3. 为了适应性。如果吞吐量被评为逐步增加的,或者事件性陡增,后端服务器的增加可以对用户透明。

LVS的三中各模式

LVS有三种模式:LVS-NAT,LVS-DR,LVS-TUN。下面对说说每个模式。

LVS-NAT

NAT是LVS软件实现第一种转发模式,搭建一个LVS集群DR模式的话,是最简单的,因为不需要对后端服务器做任何设置上的变更。LVS-NAT其实也是基于NAT技术的,网络数据流如下:

  1. LB收到client的请求后,改写目的IP地址为后端服务器真实IP和端口号,转发给后端服务器。
  2. 后端服务器处理完成后,回复给负载均衡器。
  3. 负载均衡服务器改写源IP为虚拟IP(其实就是LVS的ip),发送给客户端。

    如图所示:

lvs在nat模式中,是有1个内网IP,还有1个外网IP的。所有后端服务器的网关都指向LVS的内网IP。

LVS-DR

DR是direct Routing的缩写,是直连路由的。

请求流程如下:

  1. client首先发起Arp 广播,请求LVS1的MAC地址,LVS回复client,告诉它自己的MAC地址。此时arp广播,所以mac地址都是0
  2. Client连接lvs的80端口,发送TCP SYN。此时数据包的目标mac地址是lvs1,目的IP也是lvs1的外网IP。
  3. 负载均衡器转发报文,在转发之前修改mac地址,把目标mac地址由LVS的改为后端服务器WEB1的。
  4. web服务器处理client的请求,此时MAC地址为web服务器的,目标IP也是。
  5. web服务器处理完请求,回包的给client,此时回包的目的MAC是client的mac,目的IP也是client,回包不需要经过lvs服务器了。

LVS-DR模式简要概括就是:client发起请求经过lvs调度后,后端服务器响应数据直接发回给客户端,不再经过LVS了。

流程图如下:

LVS-Tun

这是LVS原创的一种转发模式,基于LVS-DR。LVS把原始的包(源客户端IP到虚拟IP)封装成ipip包,目的IP地址就是后端服务器的真实IP,然后进入OUTPUT链,并路由到后端服务器。后端服务器解封ipip包并处理,以源地址虚拟IP,目的地址客户端IP直接回复给客户端。这种模式就是为了解决服务器和负载均衡器不在同一个物理区域设计的(也就是跨网段)

3种模式对比

  • 从后端服务器要求来看,LVS-NAT只需要把后端服务器网关指向负载均衡器的内网地址,无任何其它的要求;LVS-DR模式要求后端服务器禁用对虚拟IP的arp响应。后端服务器的网关不指向LVS;LVS-Tun要求后端服务器支持ipip解封包,部分操作系统不支持。
  • 从吞吐量上来看,LVS-DR最高,LVS-NAT最低。
  • 从配置项来看,LVS-NAT最简单,其他两个比较复杂。

高可用与负载均衡(6)之聊聊LVS的三种模式的更多相关文章

  1. 高可用与负载均衡(7)之聊聊Lvs-DR+Keepalived的解决方案

    今天直接开门见山了,直接说配置吧.首先介绍下我这的环境 如有问题,请联系我18500777133@sina.cn IP 安装软件 192.168.1.7 lvs1+keepalived master角 ...

  2. Mycat - 高可用与负载均衡实现,满满的干货!

    前言 开心一刻 和朋友去吃小龙虾,隔壁桌一个小女孩问妈妈:"妈妈,小龙虾回不了家,它妈妈会不会着急?" 她妈妈愣住了,我扒虾的手停下了,这么善良的问题,怎么下得了口.这是老板急忙过 ...

  3. Keepalived+HAProxy实现RabbtiMQ高可用的负载均衡

    HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案,包括Twitter,Reddit,StackOverflow,GitHub在 ...

  4. PostgreSQL 9.5 高可用、负载均衡和复制

    高可用.负载均衡和复制 1. 不同方案的比较 共享磁盘故障转移 共享磁盘故障转移避免了只使用一份数据库拷贝带来的同步开销. 它使用一个由多个服务器共享的单一磁盘阵列.文件系统(块设备)复制 DRBD是 ...

  5. Mysql读写分离 及高可用高性能负载均衡实现

    什么是读写分离,说白了就是mysql服务器读的操作和写的操作是分开的,当然这个需要两台服务器,master负责写,slave负责读,当然我们可以使用多个slave,这样我们也实现了简单意义上的高可用和 ...

  6. 搭建Keepalived+LNMP架构web动态博客 实现高可用与负载均衡

    环境准备: 192.168.193.80  node1 192.168.193.81 node2 关闭防火墙 [root@node1 ~]# systemctl stop firewalld #两台都 ...

  7. Dubbo入门到精通学习笔记(十六):Keepalived+Nginx实现高可用Web负载均衡

    文章目录 Keepalived+Nginx实现高可用Web负载均衡 Keepalived+Nginx实现高可用Web负载均衡 高可用架构篇 Keepalived + Nginx 实现高可用 Web 负 ...

  8. EMQ集群搭建实现高可用和负载均衡(百万级设备连接)

    一.EMQ集群搭建实现高可用和负载均衡 架构服务器规划 服务器IP 部署业务 作用 192.168.81.13 EMQTTD EMQ集群 192.168.81.22 EMQTTD EMQ集群 192. ...

  9. Keepalived + Nginx 实现高可用 Web 负载均衡

    一.Keepalived 简要介绍 Keepalived 是一种高性能的服务器高可用或热备解决方案, Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前 ...

随机推荐

  1. 我开源了一个ios应用,你们拿去随便玩

    今天开源一个ios应用,自己写的,你们拿去随便玩.地址是: https://github.com/huijimuhe/prankPro 光拿来玩不理清个来龙去脉玩的也不开心是吧,那我就给你们摆摆来龙去 ...

  2. Bootstrap系列 -- 12. 水平表单

    Bootstrap框架默认的表单是垂直显示风格,但很多时候我们需要的水平表单风格(标签居左,表单控件居右) 在Bootstrap框架中要实现水平表单效果,必须满足以下两个条件: 1.在<form ...

  3. 史密斯(smith)圆图讲解

    不管多么经典的射频教程,为什么都做成黑白的呢?让想理解史密斯原图的同学一脸懵逼. 这是什么东东? 今天解答三个问题: 1.是什么? 2.为什么? 3.干什么? 1.是什么? 该图表是由菲利普·史密斯( ...

  4. Uwp Windows10获取设备位置(经纬度)

    先在Package.appxmanifest中配置位置权限 2. 创建LocationManager类 using System; using System.Collections.Generic; ...

  5. C# Gabbage Collecting System

    * 这个程序非常巧妙的探测了一下垃圾回收机制,发现如下结论: * 当内存紧急时,才会启动垃圾回收GC.Collect() * 从此程序的运行上来看,delete是连续出现的,这体现了垃圾回收的强度. ...

  6. 虚拟机VirtualBox 5.1.0|VBOX

    Oracle VM VirtualBox是一款免费.开源的虚拟机软件,现属于Oracle旗下产品.可以安装Windows.Linux.IBM OS/2.Solaris.BSD等操作系统,具有远端桌面协 ...

  7. 【JavaEE企业应用实战学习记录】sessionListener

    package sanglp.servlet; import javax.servlet.ServletContext; import javax.servlet.annotation.WebList ...

  8. 解决"415 Cannot process the message because the content type 'application/x-www-form-urlencoded' was not the expected type 'text/xml; charset=utf-8'"

    wcf basicHttpBinding content-type    text/xml;charset=utf-8 wsHttpBinding  'application/soap+xml; ch ...

  9. Apache启动提示 httpd: apr_sockaddr_info_get() failed for xxx

    httpd: apr_sockaddr_info_get() failed for xxx httpd: Could not reliably determine the server's fully ...

  10. Http 和TCP的关系,TCP长连接和短连接有什么区别?

    HTTP 协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用.由于HTTP在 ...