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

相关推荐
通信小呆呆7 小时前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
benben0447 小时前
强化学习之DQN算法族(基于gymnasium开发)
算法
何以解忧,唯有..8 小时前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
想吃火锅10059 小时前
【leetcode】88.合并两个有序数组js
算法
生成论实验室10 小时前
机器人:一个自主运动的系统
人工智能·算法·语言模型·机器人·自动驾驶·agi·安全架构
Qres82110 小时前
算法复键——树状数组
数据结构·算法
H1785350909610 小时前
SolidWorks第四部分_直接实体建模特征9_替换面原理
线性代数·算法·机器学习·3d建模·solidworks
不会就选b10 小时前
算法日常・每日刷题--<二分查找>3
算法
绿算技术11 小时前
Mooncake 与绿算ForinnBase GroundPool如何联手打破推理僵局?
科技·算法·架构