haproxy的算法——静态算法

1.简介

haproxy 的静态负载均衡算法,是指在分发请求时不依赖后端服务器的实时负载、连接数或响应时间,而是严格按照预先定义的固定规则进行调度的一类策略。这类算法的调度逻辑在配置后保持稳定,不会根据服务器状态动态调整,因此具有 predictable(可预测)和性能开销低的特点。

常见的静态算法包括:

  • static-rr(静态轮询):与 roundrobin 类似,但运行时无法修改权重,性能略高,适合权重固定的场景。
  • first(空闲优先):优先使用列表中靠前的服务器,仅当前一台满负荷时才启用下一台,完全按顺序调度,不考虑负载。

2.static-rr算法

static-rr 是静态轮询算法 ,根据配置的权重轮流分发请求,运行时不能动态修改权重,调度简单、性能较高,适用于后端服务器稳定不变的场景。

进入haproxy配置文件编写命令

设定算法种类(balance static-rr)以及权重大小(webserver1:weight 2;webserver2:weight 1)

保存退出,重启服务生效

测试:

检测是否支持热更新

3.first算法

  • 算法类型 :属于 HAProxy 的静态负载均衡算法,不根据后端服务器实时负载、响应时间动态调整。
  • 调度规则 :严格按照服务器在配置文件中的先后顺序分配请求,优先使用排在前面的服务器。
  • 分配方式 :前面的服务器连接数未达到上限时,所有新请求都发给它;只有当前一台满连接后,才会启用下一台服务器。
  • 特点:逻辑简单、性能开销小,但负载分配不均匀,容易出现前面服务器压力大、后面服务器空闲的情况。
  • 适用场景:适用于按顺序启用服务器、做备用机切换,或后端服务器性能、请求量稳定且无需均匀负载的环境。

进入haproxy配置文件编写命令,修改算法为first,保存退出,重启服务生效

在新的shell上执行持续访问。first 算法与权重无关,只按服务器在配置文件中的先后顺序选择,前面的优先被访问。

继续新建一个shell,继续访问。由于该主机默认最大连接数为3000,所以我们为了体现效果,提前在haproxy.cfg文件里的server webserver1 192.168.83.10:80 check inter 3s fall 3 rise 5 weight 2中添加 maxconn 1 限制一下(当然,这个在现实是不合理的),然后保存退出,重启服务生效,再去新的shell里测试连接。之前的那个shell要提前访问并且一直保持运行,然后这个新的shell再访问

之前的shell:

新的shell:

发现出现了webserver2的名字和ip,说明第一个 shell 的长连接持续占用 webserver1 的maxconn=1,导致第二个 shell 只能走 webserver2,这就体现了first 算法只认 "顺序 + maxconn 上限",优先占满第一个服务器再用第二个

相关推荐
YYRAN_ZZU几秒前
Petalinux新建自动脚本启动
linux
charlie11451419116 分钟前
嵌入式Linux驱动开发pinctrl篇(1)——从寄存器到子系统:驱动演进之路
linux·运维·驱动开发
Agent手记23 分钟前
异常考勤智能预警与处理与流程优化方案 | 基于企业级Agent的超自动化实战教程
运维·人工智能·ai·自动化
于小猿Sup35 分钟前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
cen__y1 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
x_yeyue2 小时前
三角形数
笔记·算法·数论·组合数学
不仙5202 小时前
VMware Workstation 26.0.0 在 Ubuntu 24.04 (内核 6.17.0) 上的安装与内核模块编译问题
linux·ubuntu·elasticsearch
念何架构之路3 小时前
Go语言加密算法
数据结构·算法·哈希算法
AI科技星3 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
失去的青春---夕阳下的奔跑3 小时前
560. 和为 K 的子数组
数据结构·算法·leetcode