LVS的十二种调度算法

静态算法

静态算法只根据算法本身进行调度,不考虑后端服务器的情况

  1. RR roundrobin 轮询 所有服务器平均分配请求
  2. WRR weighted RR 加权轮询 按比例将请求调度给后端服务器
  3. SH source hash 源地址hash 将来自同一个IP的请求调度到固定后端服务器,可以实现会话绑定
  4. DH destination hash 目的地址hash

动态算法

根据后端服务器的负载情况进行调度,以overhead作为调度的衡量标准,而每种算法又以不同的方式得出overhead的值。overhead值小将被优先调度使用。

  1. LC least connections 最少连接数
    overhead = 活动连接数 * 254 + 非活动连接数
  2. WLC weighted LC (默认调度算法)
    overhead = (活动连接数 * 254 + 非活动连接数)/ weight
    后端服务器的权重值越大,overhead越小,越优先调度
  3. SED shortest expction delay 初始连接高权重优先,只考虑活动连接数
    overhead = (活动连接数+1)* 256 / weight
    初始情况下,确保overhead不是0,实现请求优先调度到高权重的服务器;缺点是可能连接初期该服务器会连续接受较多请求,低权重服务器空闲
  4. NQ never queue
    第一轮均匀分配,后续以sed方法进行分配
  5. LBLC locality based LC 局部最少连接算法是针对目标IP地址的负载均衡
    简而言之就是先根据目地IP将请求调度到该目标IP最近使用的服务器来提高缓存的命中率,等到该服务器负荷已满,再根据LC算法将请求调度到符合LC算法的后端服务器。
  6. LBLCR 带复制的局部最少连接算法
    将请求复制到负载较轻的服务器,减轻压力

新增算法

  1. FO weighted fail over
    虚拟服务器VS根据后端服务器链表,找到未加链表标记的权重最高的服务器进行调度
  2. OVF overflow-connection
    基于后端服务器的活动连接数和权重值来实现。将新连接调度到权重值最高的服务器,直到其活动连接数超过它的权重值,之后调度到下一个权重值最高的RS。该算法会遍历VS关联的后端服务器链表,找到权重值最高的可用后端服务器。该后端服务器需要处于未过载状态、权重值不为0,且当前活动连接数小于其权重值。

常用及系统支持的算法

查看系统支持算法

[root@81 ~]# grep -i 'IPVS SCHEDULER' -A 12 /boot/config-4.18.0-240.el8.x86_64 
# IPVS scheduler
#
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_FO=m
CONFIG_IP_VS_OVF=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
# CONFIG_IP_VS_MH is not set

常用算法有:rr、wrr、wlc

上一篇:LVS的隧道模式工作过程


下一篇:你管这破玩意儿叫负载均衡