Linux负载均衡--LVS(IPVS)主要算法实现分析

LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一种叫基于TCP/IP的负载均衡技术,转发效率极高,具有处理百万计并发连接请求的能力。

IPVS支持的调度算法:
轮流:"rr"
循环链表不停向后查找。


权重轮流:"wrr"
权重分表示优先级还是表示比例,此处为优先级;先用辗转相除法求取权重最大公约数,然后用最大权重依次递减最大公约数(递减最大公约数可减少递减次数)获取服务器。

最少连接:"lc"
每台服务器统计连接数,查询时获取连接数最少的服务


加权最少连接:"wlc"
获取每权重连接数最少的服务器,此处权重表示比例,即连接数cn1除以权重w1和连接数cn2除以权重w2,取值小的服务器:即若cn1/w1 < cn2/w2,则取ser1。为优化性能真正实现为 cn1*w2 < cn2*w1 则取serv1

源地址HASH: "sh"
目标地址HASH:"dh"
将服务器指针循环按个存储在HASH表上,报文到达时根据地址计算HASH获取服务器。

局部性最少连接:"lblc"
复制的局部性最少连接:"lblcr"
有效连接数*50加无效连接数,再除以权重,取每权重小的服务器

最少的期望延迟:"sed"
目前取每权重有效连接数小的服务器,类似wlc,但wlc取的所有连接数(有效+无效连接),sed只取有效连接。连接有效证明有数据正在传输,连接越多带宽占用越大,认为时延越大。

最少队列调度:"nq"
首先取有效连接数为0的服务器,若不存在为0的,则取每权重有效连接数小的服务器

原文地址:https://www.cnblogs.com/wangliangblog/p/13393304.html