静态算法
静态算法只根据算法本身进行调度,不考虑后端服务器的情况
- RR roundrobin 轮询 所有服务器平均分配请求
- WRR weighted RR 加权轮询 按比例将请求调度给后端服务器
- SH source hash 源地址hash 将来自同一个IP的请求调度到固定后端服务器,可以实现会话绑定
- DH destination hash 目的地址hash
动态算法
根据后端服务器的负载情况进行调度,以overhead作为调度的衡量标准,而每种算法又以不同的方式得出overhead的值。overhead值小将被优先调度使用。
- LC least connections 最少连接数
overhead = 活动连接数 * 254 + 非活动连接数 - WLC weighted LC (默认调度算法)
overhead = (活动连接数 * 254 + 非活动连接数)/ weight
后端服务器的权重值越大,overhead越小,越优先调度 - SED shortest expction delay 初始连接高权重优先,只考虑活动连接数
overhead = (活动连接数+1)* 256 / weight
初始情况下,确保overhead不是0,实现请求优先调度到高权重的服务器;缺点是可能连接初期该服务器会连续接受较多请求,低权重服务器空闲 - NQ never queue
第一轮均匀分配,后续以sed方法进行分配 - LBLC locality based LC 局部最少连接算法是针对目标IP地址的负载均衡
简而言之就是先根据目地IP将请求调度到该目标IP最近使用的服务器来提高缓存的命中率,等到该服务器负荷已满,再根据LC算法将请求调度到符合LC算法的后端服务器。 - LBLCR 带复制的局部最少连接算法
将请求复制到负载较轻的服务器,减轻压力
新增算法
- FO weighted fail over
虚拟服务器VS根据后端服务器链表,找到未加链表标记的权重最高的服务器进行调度 - 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