lVS的模式和算法

lvs
lvs三种模式
lvs-nat:
多目标的DNAT(iptables);工作在网络层(三层),它通过修改请求报文的目标IP地址(同时可能会修改目标端口)至挑选出某RS的RIP地址实现转发;LVS开启路由转发,源和目标地址转换,数据的进出期间,都必须经过DR,会产生瓶颈,适合小网络,规模10台左右。

(1) RS应该和DIP应该使用私网地址,且RS的网关要指向DIP;
(2) 请求和响应报文都要经由director转发;极高负载的场景中,director可能会成为系统瓶颈;
(3) 支持端口映射;
(4) RS可以使用任意OS;
(5) RS的RIP和Director的DIP必须在同一IP网络;

工作原理:
1>.用户发送请求报文到LVS的VIP上,VIP选择一个Real Server,并记录连接信息到hash表中,然后修改用户的请求报文的目的IP地址为Real Server的地址,将请求发给Real Server;
2>.Real Server收到请求报文包后,发现目的IP是自己的IP,于是处理请求,然后发送reply给LVS;
3>.LVS收到reply包后,修改reply包的的源地址为VIP,发送给用户;
4>.从用户来的属于本次连接的包,查hash表,然后发给对应的Real Server。
5>.当用户发送完毕,此次连接结束或者连接超时,那么LVS自动从hash表中删除此条记录。

lvs-dr:
直接路由;工作在TCP/IP数据链路层(二层),它通过修改请求报文的目标MAC地址进行转发;不需要路由转发,客户请求处理后直接返回给客户。规模几十台左右。
Director: VIP, DIP
RSs: RIP, VIP

(1) 保证前端路由器将目标IP为VIP的请求报文发送给director;
解决方案:
静态绑定
arptables
修改RS主机内核的参数
(2) RS的RIP可以使用私有地址;但也可以使用公网地址;
(3) RS跟Director必须在同一物理网络中;
(4) 请求报文经由Director调度,但响应报文一定不能经由Director;
(5) 不支持端口映射;
(6) RS可以大多数OS;
(7) RS的网关不能指向DIP;
工作原理:
1>.当一个用户发送一个WEB请求到VIP;
2>.LVS服务器根据VIP选择对应的Real Server的Pool,根据算法,在Pool中选择一台Real Server,并将这台Real Server的MAC地址作为目的MAC地址,重新将IP包封装成帧转给Real Server,LVS在hash表中记录该次连接;
3>.然后将用户的请求包发给选择的Real Server;
4>.最后选择的Real Server把应答包直接传给用户;
5>.当用户继续发包过来时,LVS根据更才记录的hash表的信息,将属于此次连接的请求直接发到刚才选择的Real Server上;当连接中止或者超时,hash表中的记录将被删除。

lvs-tun:
工作在网络层(三层),不修改请求报文的ip首部,而是通过在原有的ip首部(cip<–>vip)之外,再封装一个ip首部(dip<–>rip);不需要路由转发。规模几十台左右。

(1) RIP, DIP, VIP必须是公网地址;
(2) RS的网关的不能指向DIP;
(3) 请求报文必须经由director调度,但响应报文必须不能经由director;
(4) 不支持端口映射;
(5) RS的OS必须支持隧道功能;

工作原理:
1>用户发送请求报文包到LVS服务器的VIP上。
2>.VIP按照算法选择后端的一个Real Server,将用户的请求报文包封装到一个新的IP包里,新IP包的目的IP是Real Server的IP,然后转发给Real Server,并将记录一条消息到hash表中。
3>.Real Server收到包后,解封装,取出用户的请求报文包,发现他的目的地址是VIP,而Real Server发现在自己的lo:0口上有这个IP地址,于是处理用户的请求,然后将relpy这个请求报文包直接发给用户。
4>.该用户的后面的请求报文包,LVS直接按照hash表中的记录直接转发给Real Server,当传输完毕或者连接超时,那么将删除hash表中的记录。

lvs-fullnat:
director通过同时修改请求报文的目标地址和源地址进行转发;

(1) VIP是公网地址;RIP和DIP是私网地址,二者无须在同一网络中;
(2) RS接收到的请求报文的源地址为DIP,因此要响应给DIP;
(3) 请求报文和响应报文都必须经由Director;
(4) 支持端口映射机制;
(5) RS可以使用任意OS;

lvs 调度算法:
调度器通过服务器当前所活跃的连接数来估计服务器的负载均衡,调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1,当连接中止或超时,其连接数减一,
在系统实现时,我们也引入当服务器的权值为0时,表示该服务器不可用而不被调度。
静态方法:仅根据算法本身进行调度;

RR:round robin,轮调
每一次把来自用户的请求轮流分配给内部中的服务器

WRR:weighted rr, 加权轮叫
根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

SH: source hash, 源地址散列。
将请求的目标IP地址换成请求的源IP地址;实现session保持的机制;将来自于同一个IP的请求始终调度至同一RS;源地址散列调度算法正好与目标地址散列调度算法相反,它根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的并且没有超负荷,将请求发送到该服务器,否则返回空。

DH:destination hash, 目标地址散列。
将对同一个目标的请求始终发往同一个RS;通过一个散列(Hash)函数将一个目标IP地址映射到一台服务器。目标地址散列调度算法先根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
动态方法:根据算法及各RS的当前负载状态进行调度;

LC:Least Connection最少连接
调度器通过”最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用”最小连接”调度算法可以较好地均衡负载。
Overhead=Active*256+Inactive

WLC: Weighted LC加权最少连接
在集群系统中的服务器性能差异较大的情况下,调度器采用”加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值
Overhead=(Active*256+Inactive)/weight
SED: Shortest Expection Delay
Overhead=(Active+1)*256/weight
NQ:Never Queue
SED算法的改进;
LBLC:Locality-Based LC,即为动态的DH算法;
基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用”最少链接”的原则选出一个可用的服务器,将请求发送到该服务器。
正向代理情形下的cache server调度;

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值