Linux-lvs-调度算法-总结
LVS调度算法
ipvs scheduler:根据其调度时是否考虑各RS当前的负载状态
分为两种:静态方法和动态方法
静态方法
仅根据算法本身进行调度
- RR: roundrobin, 轮询,较常用
- WRR: weighted RR ,加权轮询,较常用
- SH: source hashing,实现session sticky,源IP地址hash;将来同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定
- DH: Destination Hashing ;目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡:web缓存
动态方法
主要根据RS当前的负载状态及调度算法进行调度Overhead=value较小的RS将被调度
- LC: least connections 使用于长连接应用
- WLC: weighted LC,默认调度方法较常用
- SED: shortest expection delay, 初始连接高权重优先,只检查活动连接,而不考虑非活动连接
- NQ: Never Queue,第一轮均匀分配,后续SED
- LBLC: Locality-Based LC,动态的DH算法,使用场景:根据负载状态实现正向代理,实现Web Cache等
- LBLCR: LBLC with Replication,带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制 到负载轻的RS,,实现Web Cache等
内核版本 4.15 版本后新增调度算法:FO和OVF
- FO(Weighted Fail Over)调度算法,在此FO算法中,遍历虚拟服务所关联的真实服务器链表,找到还未 过载(未设置IP_VS_DEST_F_OVERLOAD标志)的且权重最高的真实服务器,进行调度,属于静态算法
- OVF(Overflow-connection)调度算法,基于真实服务器的活动连接数量和权重值实现。将新连接调度 到权重值最高的真实服务器,直到其活动连接数量超过权重值,之后调度到下一个权重值最高的真实服 务器,在此OVF算法中,遍历虚拟服务相关联的真实服务器链表,找到权重值最高的可用真实服务器。,属 于动态算法
一个可用的真实服务器需要同时满足以下条件:
- 未过载(未设置IP_VS_DEST_F_OVERLOAD标志)
- 真实服务器当前的活动连接数量小于其权重值
- 其权重值不为零
算法调用选项
选项: lvs类型: -g: gateway, dr类型,默认 -i: ipip, tun类型 -m: masquerade, nat类型 -w weight:权重
ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.8:8080 -m -w 3