LVS负载均衡简介(三种工作模式 调度算法)

一、LVS简介

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
特点:
可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份)。我们先分析实现虚拟网络服务的主要技术,指出IP负载均衡技术是在负载调度器的实现技术中效率最高的。在已有的IP负载均衡技术中,主要有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,我们称之为VS/NAT技术(Virtual Server via Network Address Translation)。在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出了通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。VS/NATVS/TUNVS/DR技术是LVS集群中实现的三种IP负载均衡技术。
优点:

1、开源,免费
2、在网上能找到一些相关技术资源
3、具有软件负载均衡的一些优点

缺点:

1、最核心的就是没有可靠的支持服务,没有人对其结果负责;
2、功能比较简单,支持复杂应用的负载均衡能力较差,如算法较少等;
3、开启隧道方式需重编译内核;
4、配置复杂;
5、主要应用于LINUX,没有专门用于WINDOWS的版本,不过可以通过配置,使windows成为LVS集群中的real server(win2003、win2008中)。

二、LVS三种工作模式原理

1.1 DR模式

下面是DR模式的数据传输图:
LVS负载均衡简介(三种工作模式 调度算法)
DR模式:即 Virtual Server via Direct Routing,也就是用直接路由技术实现虚拟服务器。这种方式的连接调度和管理与前两种-样, 但它的报文转发方法又有所不同,VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。这种方式是三种负载调度方式中性能最好的。
下面是DR模式IP包调度过程图:
LVS负载均衡简介(三种工作模式 调度算法)
原理图简述:

DR模式将报文直接路由给目标真实服务器。在DR模式中,调度器根据各个真实服务
器的负载情况,连接数多少等,动态地选择一台服务器, 不修改目标IP地址和目标端口,
也不封装IP报文,而是将请求报文的数据帧的目标MAC地址改为真实服务器的MAC地址。
然后再将修改的数据帧在服务器组的局域网上发送。因为数据帧的MAC地址是真实服务器
的MAC地址,并又在同一个局域网。那么根据局域网的通讯原理,真实复位是一定能够
收到由LB发出的数据包。真实服务器接收到请求数据包的时候,解开IP包头查看到的目标
IP是VIP。.
此时只有自己的IP符合目标IP才会接收进来,所以我们需要在本地的回环接口上面配
置VIP。另:由于网络接口都会进行ARP广播响应,但集群的其他机器都有这个VIP的lo接
口,都响应就会冲突。所以我们需要把真实服务器的lo接口的ARP响应关闭掉。
然后真实服务器做成请求响应,之后根据自己的路由信息将这个响应数据包发送回给客
户,并且源IP地址还是VIP。

DR模式小结:

1、通过在调度器LB上修改数据包的目的MAC地址实现转发。注意源地址仍然是CIP,目的
地址仍然是VIP地址。
2、请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此并发访问量大时使用效率很高
(和NAT模式比)
3、因为DR模式是通过MAC地址改写机制实现转发,因此所有RS节点和调度器LB只能在
一个局域网里面
4、RS主机需要绑定VIP地址在L0接口上,并且需要配置ARP抑制。
5、RS节点的默认网关不需要配置成LB,而是直接配置为上级路由的网关,能让RS直接出,
网就可以。.
6、由于DR模式的调度器仅做MAC地址的改写,所以调度器LB就不能改写目标端口,那
么RS服务器就得使用和VIP相同的端口提供服务。

1.2.NAT/FULL NAT模式

下面是NAT模式数据传输图:
LVS负载均衡简介(三种工作模式 调度算法)
NAT模式:即 Virtual Server via Network Address Translation,也就是网络地址翻译技术实现虚拟服务器。当用户请求到达调度器时,调度器将请求报文的目标地址(即
虛拟IP地址)改写成选定的Real Server地址,同时将报文的目标端口也改成选定的Real
Server的相应端口,最后将报文请求发送到选定的Real Server.在服务器端得到数据后,
Real Server将数据返回给用户时,需要再次经过负载调度器将报文的源地址和源端口改
成虚拟IP地址和相应端口,然后把数据发送给用户,完成整个负载调度过程。
下面是NAT模式IP包调度过程图:
LVS负载均衡简介(三种工作模式 调度算法)

原理图简述:

1、客户端请求数据,目标IP为VIP
2、请求数据到达LB服务器,LB 根据调度算法将目的地址修改为RIP地址及对应端口(此
RIP地址是根据调度算法得出的。)并在连接HASH表中记录下这个连接。
3、数据包从LB服务器到达RS服务器webserver,然后webserver进行响应。Webserver 的
网关必须是LB,然后将数据返回给LB服务器。
4、收到RS的返回后的数据,根据连接HASH表修改源地址为VIP、目标地址为aP,及对应
端口80.然后数据就从LB出发到达客户端。
5、客户端收到的就只能看到VIP\DIP信息。

NAT模式优缺点:

1. NAT技术将请求的报文和响应的报文都需要通过LB进行地址改写,因此网站访问量比较
大的时候LB负载均衡调度器有比较大的瓶颈,一般要求最多之能 10-20台节点。
2、只需要在LB上配置一个公网IP地址就可以了。
3、每台内部的realserver服务器的网关地址必须是调度器LB的内网地址。
4、NAT模式支持对IP地址和端口进行转换。即用户请求的端口和真实服务器的端口可以不一致。

1.2.1.FULL NAT模式
在NAT模式基础之上又升级的一种模式

**FULL NAT的基本原理:**
FULLNAT在client请求VIP时,不仅替换了padkage 的dstip,还替换了package 的src
ip;但VIP返回给dient时也替换了srcip.

LVS负载均衡简介(三种工作模式 调度算法)
原理图简述:

1、首先client发送请求package给VIP;
2、VIP 收到package后,会根据IVS设置的LB算法选择-一个 合适的realserver,然后把
package的DSTIP修改为realserverIP;把sorceip改成Ivs集群的LBIP。
3、realserver 收到这个package后判断dstip是自己,就处理这个package,处理完后把
这个包发送给LVSLBIP。
4、IVS 收到这个package后把sorce ip改成VIP的IP,dstip改成client ip然后发送给client。

FULL NAT模式的注意事项:

FULL NAT模式也不需要LBIP和realserverip在同一个网段:
full nat跟nat相比的优点是:保证RS回包- -定能够回到LVS;因为源地址就是VS->不确定
fullnat因为要更新sorceip所以性能正常比nat模式下降10%

1.3.IP TUNNEL模式

下面是IP TUNNEL模式数据传输图:
LVS负载均衡简介(三种工作模式 调度算法)
TUN :即Virtual Server via IP Tunneling也就是通过IP隧道技术实现虚拟服务
器。在VS/TUN方式中,调度器采用IP隧道技术将用户请求转发到某个RealServer,而
这个Real Server将直接响应用户的请求,不再经过前端调度器。此外,对Real Server
的地域位置没有要求,可以和Director Server位于同- -个网段,也可以在独立的一一个网
络中。因此,在TUN方式中,调度器将只处理用户的报文请求,从而使集群系统的吞吐量大大提高。
TUN的工作流程图如下:
LVS负载均衡简介(三种工作模式 调度算法)
它和NAT模式不同的是,它在LB和RS之间的传输不用改写IP地址。而是把客户请求
包封装在- -个IP tunnel 里面,然后发送给RS节点服务器,节点服务器接收到之后解开IP
tunnel后,进行响应处理。并且直接把包通过自己的外网地址发送给客户不用经过LB服务器。

扫描二维码关注公众号,回复: 11242275 查看本文章

原理图过程简述:

1、客户请求数据包,目标地址VIP发送到LB上。
2、LB接收到客户请求包,进行IP Tunnel 封装。即在原有的包头加上IP Tunnel 的包头。然
后会根据IVS设置的LB算法选择-一个合适的realserver;并把dient发送的package包装到
一个新的IP包里面:新的IP包的dst是realserver 的IP。
3、RS 节点服务器根据IP Tunnel包头信息收到请求包,realsenver 收到这个package后判断
dstip是自己,然后解析出来的package的dst是VIP:会检测我们的网卡上是否绑定了VIP
的ip地址;如果绑定了就会处理这个包,如果没有直接丢掉。我们一-般在realserver.上面lo:0
绑定了VIP的ip地址,就可以处理得到客户的请求包并进行响应处理。
4、响应处理完毕之后,RS 服务器使用自己的公网线路将这个响应数据包发送给客户端。源
IP地址是VIP地址。

IP TUNNEL模式的注意事项:

* TUNNEL模式必须在所有的realserver机器上面绑定VIP的IP地址
* TUNNEL模式的vip ---aserver的包通信通过TUNNEL模式,不管是内网和外网都能通
 信,所以不需要lvsvip 跟realserver在同一个网段内
* TUNNEL模式realserver 会把packet直接发给client 不会给Ivs了
* TUNNEL模式走的隧道模式,所以运维起来比较难,所以一般不用。

三、LVS负载调度算法

Lvs的调度算法决定了如何在集群节点之间分布工作负荷。当director调度器收到来
自客户端访问VIP的上的集群服务的入站请求时,director 调度器必须决定哪个集群节点
应该处理请求。Director 调度器用的调度方法基本分为两类:

固定调度算法: m, wrr, dh, sh
动态调度算法: wlc, lc, lblc, lblcr

LVS负载均衡简介(三种工作模式 调度算法)
LVS调度算法的生产环境选型:

1、一般的网络服务,如www,mail, mysql 等常用的LVS调度算法为:
* 基本轮询调度rr
* 加权最小连接调度wlc 
* 加权轮询调度wrc
2、基于局部性的最小连接Iblc和带复制的给予局部性最小连接Iblcr 主要适用于web
cache和DB cache
3、源地址散列调度SH和目标地址散列调度DH可以结合使用在防火墙集群中,可以保
证整个系统的出入口唯一。
实际适用中这些算法的适用范围很多,工作中最好参考内核中的连接调度算法的实现原
理,然后根据具体的业务需求合理的选型。

猜你喜欢

转载自blog.51cto.com/14306186/2497234