lvs的四种模式和常用的挑选算法

时间:2021-06-28 18:04:42   收藏:0   阅读:0

lvs(Linux Virtual Server)

lvs(Linux Virtual Server),即虚拟服务器,是一个虚拟的服务器集群系统.

工作在OSI第四层中,在服务器承受不了业务需求量的时候,使用均衡负载的方式来使服务器能够给用户正常提供服务

lvs工作流程: 当用户发起请求时,lvs 调度器先将请求接收,调度器会根据收到请求的服务和根据自己预设的工作模式和算法来判断哪台服务器的负载较低,然后将此条请求转发给负载较低提供服务的服务器,由这台提供服务的服务器来处理此条请求,最后提供服务的服务器根据预设的工作模式来决定资源返回给客户端的方式

lvs工具: ipvsadm:工作在用户空间的命令行工具,用于管理集群服务

ipvs:工作于内核中netfilter INPUT钩子上 支持TCP,UDP,AH,EST,AH_EST,SCTP等多种协议

lvs专业名词: 调度器:director,dispatcher,balancer

RS:Real Server

Client IP:CIP

Director Virutal IP:VIP

Director IP:DIP

Real Server IP:RIP

lvs的四种工作模式 

1.NAT模式

特点

工作流程

技术图片

 

 

 如上图:首先客户端向VIP发送请求,报文首部为①,director收到请求后通过预设的算法来判断将请求转发给哪一台RS并且将报文首部修改为②,请求通过DIP转发到RIP,服务器返回资源时,报文首部为③,资源通过RIP转发到DIP,director收到资源后将报文首部修改为④,最后通过VIP返回到CIP客户端

2.dr模式(默认模式)

特点

因为所有RS都要配置VIP为了确保客户端将请求发送给director有以下三种解决方案:

静态绑定:在客户端上将VIP和director的MAC地址绑定。(可以实现功能,但是不现实)

arptables:在所有RS主机上配置arp防火墙,使RS主机即使收到arp包,也不响应,这样只有director收到apr包才会响应,客户端自然只会将请求发送给director

修改RS主机内核的2个参数:

arp_announce:是否接收并记录别人的通告以及是否通告自己的MAC地址给别人,arp_announce参数有三个值:

0:(default,默认为0):通告自己所拥有的所有地址

1:尽量不通告与自己不在同一个网段的地址,比如不同高2.0网段的地址给1.0网段,但是是尽量不通告,有可能还是会通告。

2:总是不通告与自己不在同一个网段的地址,绝对不会通告。(配置dr模式时,应该将arp_announce参数设置为2)

arp_ignore:是否响应arp请求,arp_ignore参数有9个可选值,0-8:

0:(default,默认为0)回应任何网络接口上对任何本地IP地址的arp查询请求。

1:请求报文从那个接口进入的且请求的目标地址就是此接口配置的地址才响应,否则不响应。(只回答目标IP地址是来访网络接口本地地址的arp查询请求)

2:只回答目标IP地址是来访问网络接口本地地址的arp查询请求,且来访IP必须在该网络接口的子网段内。

3:不回应该网络接口的arp请求,而只对设置的唯一和连接地址做出回应。

4-7:保留未使用。

8:不回应所有(本地地址)的arp查询。(配置dr模式时,应该将arp_ignore参数设置为1)

工作流程

技术图片

如上图:首先客户端向VIP发送请求,报文首部为①,因为RS的VIP都限制了arp包的回应和通告并且VIP是配置到lo网卡上,所以客户端发送的请求一定是发送到director,director收到请求后通过预设的算法来判断将请求转发给哪一台RS并且将报文首部修改为②,由MAC地址来判断由哪台服务器提供服务,RS收到请求后,通过lo网卡上的VIP将资源返回给客户端,报文首部为③

 3.tun模式

特点

工作流程

技术图片

 

 如上图:客户端将请求发送给VIP,报文首部为①,因为RIP是公网地址,而VIP是配置再lo网卡上,客户端从公网访问是找不到RS的VIP的,所以客户端发送的请求一定是发送到director,director收到请求后通过预设的算法来判断将请求转发给哪一台RS并且将报文首部再封装一层报文首部,此时报文首部修改成②,通过外面一层报文首部访问到RS,RS收到请求后,再解封装内层报文首部得知,是客户端通过CIP到director的VIP来访问的,于是通过lo网卡的VIP和客户端的CIP来封装报文首部,并且将资源返回给客户端,报文首部为③

4.fullnat模式

特点

工作流程

技术图片

 

 如上图:客户端通过CIP将请求发送给director的VIP,报文首部为①,director收到请求后通过预设的算法来判断将请求转发给哪一台RS,因为RIP和DIP不在同一个网络中,需要经过路由器,所以报文首部为②,RS收到请求后,返回资源时,因为中间需要经过路由器,所以报文首部为③,最后又director将资源返回给客户端,报文首部为④

 

lvs scheduler调度算法

1.静态

仅根据算法本身进行调度

RR:round robin,论调,平均分配请求

WRR:weighted rr,加权的rr,根据一定的用户设置比例进行轮调,比如每次RS1给2个请求,RS2给1个请求

SH:source hash,源地址hash,实现session保持的机制,将来自于同一个IP的请求始终调度至同一RS,每个服务单独调度

DH:destination hash,目标地址hash,将对同一个目标(资源)的请求始终发往同一个RS

2.动态

根据算法及各RS的当前负载状态进行调度,根据指定的算法算出overhead(负载),最终挑选出overhead值最小的则为被选中的RS。

LC:Least Connection,最少连接数,算法如下:

overhead = Active * 256 + Inactive WLC:

Weighted LC,加权的LC,算法如下:

overhead=(Active*256+Inactive)/ weight SED:

Shortest Expection Delay,最短期望延迟,算法如下:

overhead = (Active + 1) * 256 / weight NQ:Nevel Queue,是SED算法的改进,根据SED算法每台主机第一次至少要均分配一次,然后再按SED算法来挑选。

LBLC:Locality-Based LC,基于本地的最少连接数,即为动态的DH算法。

正向代理情形下的cache server调度。

LBLCR:Locality-Based Least-Connection with Replication,带复制功能的LBLC算法。

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!