haproxy的算法——动态算法

1.简介

动态负载均衡算法会根据后端服务器的实时状态(如连接数、响应时间、负载情况等)动态调整请求分发策略,而不是依赖固定的权重或顺序。它能自动感知服务器性能变化,优先将请求分配给负载更低、响应更快的节点,从而实现更优的资源利用和服务稳定性。常见的动态算法包括最少连接数(leastconn)、最短响应时间、加权响应时间等,适用于后端负载波动较大、需要自适应调度的场景

常见的动态算法:

  • roundrobin:基于权重的轮询调度,支持动态调整权重和慢启动,是默认算法。
  • **leastconn(最少连接数)**将新请求分配给当前活跃连接数最少的后端服务器,适合处理耗时较长、连接时间差异大的场景。

2.roundrobin算法

基于权重的轮询动态调度算法,可以使用socat动态调整权重。

HAProxy的roundrobin轮询模式不完全等于LVS的RR轮训模式,区别在于

  • HAProxy中的roundrobin⽀持慢启动,新加的服务器会逐渐增加转发数;
  • HAProxy每个后端backend中最多⽀持4095个real server;
  • HAProxy⽀持对real server权重动态调整

进入haproxy配置文件编写命令

设定算法种类(balance roundrobin),保存退出,重启服务

查看权重修改前的效果:

动态权重更新

检验效果:

3. leastconn算法

进入haproxy配置文件编写命令,设定算法种类(balance leastconn),保存退出,重启服务

在新shell中测试效果:

4.总结

在权重不同的情况下:

roundrobin:严格按照 2:1 的权重比例,以平滑轮询的方式分配请求,表现为可预测的交替模式。

leastconn:在考虑权重的同时,实时根据 "有效负载" 动态决策。当服务器处理速度或连接释放速度有细微差异时,就会打破简单的交替模式,将请求更多地导向当前更空闲的服务器

相关推荐
xsyaaaan1 天前
leetcode-hot100-双指针:283移动零-11盛最多水的容器-15三数之和-42接雨水
算法·leetcode
炽烈小老头1 天前
【每天学习一点算法 2026/03/08】相交链表
学习·算法·链表
一碗白开水一1 天前
【工具相关】OpenClaw 配置使用飞书:打造智能飞书助手全流程指南(亲测有效,放心享用)
人工智能·深度学习·算法·飞书
仰泳的熊猫1 天前
题目2194:蓝桥杯2018年第九届真题-递增三元组
数据结构·c++·算法
Tisfy1 天前
LeetCode 1888.使二进制字符串字符交替的最少反转次数:前缀和O(1)
算法·leetcode·字符串·题解
滴滴答滴答答1 天前
机考刷题之 9 LeetCode 503 下一个更大元素 II
算法·leetcode·职场和发展
飞Link1 天前
梯度下降的优化算法中,动量算法和指数加权平均的区别对比
人工智能·深度学习·算法
啊哦呃咦唔鱼1 天前
LeetCode hot100-15 三数之和
数据结构·算法·leetcode
_日拱一卒1 天前
LeetCode(力扣):杨辉三角||
算法·leetcode·职场和发展
rqtz1 天前
基于I2C总线的IMU-磁力计融合算法与数据共享
算法·iic·espidf·qmc5883p·icm42670p·imu磁力计融合