lvs scheduler:
根据其调度时是否考虑后端主机的当前负载,可分为静态方法和动态方法
静态方法:仅根据算法本身进行调度:
RR:Round Ronin 轮询
WRR:Weighted Round Ronin 加权轮询
SH:Source Hash 将客户端的源IP和调度后的RS转换为hash值(key/value),保存在Director的会话表中,下一次连接时直接查找会话表进行转发,而不需要重新调度
在用户使用NAT上网时,因一内网中不同用户使用的源IP都是NAT后的某个IP,SH的调度方式很粗糙(LVS无法基于COOKIE做负载均衡)
DH:Destination Hash 将客户端请求的目标地址和调度后的RS转换为hash至,保存在Director的会话表中,下一次连接时直接查找会话表进行转发,而不需要重新调度
通常用在正向web代理(缓存),负载均衡内网用户对外部服务器的请求
哈希的是目标地址
动态方法:根据算法及各RS当前的负载状态进行调度
Overhead:RS当前的负载值
Overhead相同的情况下,按可用RS列表进行轮询
LC:least connections,最少连接
Overhead=Active*256+Inactive (活动连接*256+非活动连接) 非活动连接即服务器等待客户端发送请求,而客户端并不发送
根据各RS的Overhead选择负载最小的服务器
WLC:Weighted LC 加权最小连接
Overhead=(Active*256+Inactive)/weight
SED:Shortest Expections Delay 主要用于解决在空闲状态下,连接能够被分配至权重最大的服务器
Overhead=(Active+1)*256/weight
NQ:Nerver Queue 优先保证每台服务器上均分配到连接,之后根据Overhead值进行分配
LBLC:Locallity-Based LC 基于本地的最少连接
动态DH算法:对同一个目前请求进行动态的负载均衡,损失命中率而提高了均衡性
LBLCR:LBLC算法的改进,如在各web缓存RS服务器上可以相互同步缓存数据
带复制功能的LBLC
WLC动态算法是最为通常,而且是默认的动态算法
负载均衡集群中保持会话一致的方式:
(1)源地址哈希;
(2)会话集群:适用于小规模RS集群场景,将多台RS组件一个Seesion cluster,保证每台服务器上的会话内容都一致
(3)会话服务器:创建一个共享存储用于保持会话数据(需要支持KV类型的数据库,如redis、hbase等)
原创文章,作者:oranix,如若转载,请注明出处:http://www.178linux.com/66284