jacky4955 发表于 2019-1-3 06:13:12

LVS十种调度算法详解

  
         Lvs十种调度算法
  

最近在网上看到很多lvs调度算法的文章,然后自己以自己的理解整理了一下,如有错误,请指正,谢谢!
  

Lvs调度算法分为静态和动态两类
  

静态算法(4种):只根据算法进行调度 而不考虑后端真实服务器的实际连接情况和负载情况
  

1:轮询调度(Round Robin)简称: RR
  

调度器(lvs)把外部的请求按请求顺序分配给集群中的真实服务器,均等的对待每一台服务器
  

2:加权轮询(Weighted Round Robun) 简称:WRR
  

带权重的轮询方式,调度器(lvs)把外部的请求按请求顺序分配给真实服务器,但是是根据权重的大小来分配的
  

3:目标地址散列(Destination Hashinf )简称: DH
  

调度器(lvs)把相同请求或者把同一用户的请求转发到集群中同一台真实服务器上
  

例如:客户端A第一个请求假如给了真是服务器web1,那么也就是说,接下来客户端A所有
  

的请求都会交给web1
  

优点:有缓存
  

4:源地址散列(Source Hashing) 简称: SH
  

假如公司有两台防火墙让员工上网,则会把某个员工往外的访问及向内返回的请求结果定向到同一台防火墙上面,方便防火墙做状态检测
  

从哪个接口出去,就从哪个接口回来
  

动态算法(6种):前端的调度器会根据后端真实服务器的实际连接情况来分配请求
  

5:最少链接(Least Connections) 简称: LC
  

通俗点来说:也就是谁的连接数少,就把下个请求分配给谁
  

计算的方法是: 活动连接数 * 256 + 非活动连接数
  

然后计算出结果,谁的值小,下个请求就分配给谁
  

活动链接数:当前有数据包传输的连接
  

非活链接数:当前连接出于建立状态,但是没有数据传输
  

6:加权最少连接(默认采用的就是这种)(Weighted Least Connections) 简称:WLC
  

在最少连接(LC)调度 算法上加了权重
  

计算方法:活动链接数 * 256 + 非活动连接数
    ——————————————————————
             权重
  

7:最短的期望的延迟(Shortest Expected Delay Scheduling ) 简称:SED
  

SED:只考虑活动连接数
  

基于WLC算法,也就是在WLC算法上做的微调,对WLC做优化
  

计算方法:
  

      (活动连接数 + 1 )* 256
    ——————————————————
          权重
  

8:最少队列调度(Never Queue Seheduling ) 简称:NQ
  

NQ:只考虑活动连接数,无需队列,如果集群中有台真实服务器的连接数=0的话,就直接分配过去,不需要再进行sed运算
基于sed 算法,对sed的改进
  

9:基于局部性的最少链接(Locality-Based Least Connections) (LBLC)
  

LBLC 缓存服务器集群,主要用于cache集群系统,基于本地的最小连接,把请求传递到负载小的服务器上
  

10:带复制的基于局部性最少连接(Locality-Based Least Connections with Replication)简称:LBLCR
  

LBLCR 带复制调度的缓存服务器集群。例如:某页面缓存在服务器A上,被访问次数极高,而集群中其他缓存服务器的负载较低,监视是否访问同一页面,如果是访问同一页面, 服务器A把缓存共享给集群中其他的机器, 调度器则把请求分到其他服务器
  




页: [1]
查看完整版本: LVS十种调度算法详解