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 上限",优先占满第一个服务器再用第二个

相关推荐
发量惊人的中年网工34 分钟前
AI服务器托管怎么选机房?GPU集群对机柜、电力和网络的硬要求
服务器·网络·人工智能
盐焗鹌鹑蛋35 分钟前
【Linux】权限
linux
窝子面37 分钟前
认识Docker与启动容器与镜像的关系
运维·docker·容器
geovindu41 分钟前
java: Backtracking Algorithm
java·开发语言·windows·后端·算法·回溯算法
玖玥拾1 小时前
Unity 3D 笔记(十五)Unity/C# Socket 网络笔记4
服务器·网络·unity·c#
小此方1 小时前
Re:Linux系统篇(四十六)信号篇·四:一文串联操作系统底层:时钟中断、内核态切换、系统调用与 Linux 信号处理全解析
linux·驱动开发·信号处理
编程序的员1 小时前
使用OpenTelemetry来监控GoLang应用
运维·golang·monitoring·apm·opentelemetry
晚风叙码1 小时前
C++ vector底层模拟实现与迭代器失效深度剖析
c++·算法
羑悻的小杀马特2 小时前
把随身WiFi改成网盘聚合器:中兴F50挂载本地存储+夸克网盘实战
运维·服务器·人工智能·网盘·openlist
无人生还别怕2 小时前
如何制作一个linux标准iso镜像
linux·iso·opencloudos·openanolisos