Linux扩展应用 ·

LVS的十种调度算法

静态调度:

RR(Round Robin):轮询调度,轮叫调度;

轮询调度算法的原理是每一次把来自用户的请求轮流分配给内部中的服务器,从 1 开始,直到 N (内部服务器个数),然后重新开始循环。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。

WRR(Weighted Round Robin ):加权轮询

由于每台服务器的配置、安装的业务应用等不同,其处理能力会不一样。所以,我们根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求,然后根据其权重进行轮询。

SH(Source Hashing):源地址散列

其能够实现 session sticy,源 IP 地址 hash,将来自于同一个 IP 地址的请求始终发往第一次挑中的 RS,从而实现会话绑定。

源地址散列调度算法正好与目标地址散列调度算法相反,它根据请求的源 IP 地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的并且没有超负荷,将请求发送到该服务器,否则返回空。它采用的散列函数与目标地址散列调度算法的相同。它的算法流程与目标地址散列调度算法的基本相似,除了将请求的目标 IP 地址换成请求的源 IP 地址,所以这里不一个一个叙述。

DH(Destination Hashing):目标地址散列

其原理是把同一个 IP 地址的请求,发送给同一个 server。目标地址散列调度算法也是针对目标 IP 地址的负载均衡,它是一种静态映射算法,通过一个散列(Hash)函数将一个目标IP地址映射到一台服务器。目标地址散列调度算法先根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

动态调度

LC(Least-Connection):最少连接调度

最少连接调度算法是把新的连接请求分配到当前连接数最小的服务器,最小连接调度是一种动态调度短算法,它通过服务器当前所活跃的连接数来估计服务器的负载均衡,调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1,当连接中止或超时,其连接数减一,在系统实现时,我们也引入当服务器的权值为0时,表示该服务器不可用而不被调度。

简单算法:active*256+inactive(谁的小,挑谁)

WLC(Weighted Least-Connection Scheduling):加权最少连接调度

加权最小连接调度算法是最小连接调度的超集,各个服务器用相应的权值表示其处理性能。服务器的缺省权值为 1,系统管理员可以动态地设置服务器的权限,加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。

简单算法:(active*256+inactive)/weight【(活动的连接数+1)/除以权重】(谁的小,挑谁)

SED(Shortest Expected Delay):最短期望延迟调度

其基于 wlc 算法

简单算法:(active+1)*256/weight 【(活动的连接数+1)*256/除以权重】

NQ(Never Queue):永不排队(改进的sed)

无需队列,如果有台 realserver 的连接数=0 就直接分配过去,不需要在进行 sed 运算。

LBLC(Locality-Based Least Connection):基于局部性的最少连接

基于局部性的最少连接算法是针对请求报文的目标 IP 地址的负载均衡调度,不签主要用于 Cache 集群系统,因为 Cache 集群中客户请求报文的布标 IP 地址是变化的,这里假设任何后端服务器都可以处理任何请求,算法的设计目标在服务器的负载基本平衡的情况下,将相同的目标 IP 地址的请求调度到同一个台服务器,来提高个太服务器的访问局部性和主存 Cache 命中率,从而调整整个集群系统的处理能力。

基于局部性的最少连接调度算法根据请求的目标 IP 地址找出该目标 IP 地址最近使用的 RealServer,若该 Real Server 是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器。

LBLCR(Locality-Based Least Connections withReplication):带复制的基于局部性最少链接

带复制的基于局部性最少链接调度算法也是针对目标 IP 地址的负载均衡,该算法根据请求的目标 IP 地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。

参与评论