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

相关推荐
cpp_250119 小时前
P1024 [NOIP 2001 提高组] 一元三次方程求解
数据结构·c++·算法·题解·二分答案·洛谷·csp
Gofarlic_oms11 天前
利用API实现ANSYS许可证管理自动化集成
运维·服务器·开发语言·matlab·自动化·负载均衡
档案宝档案管理1 天前
权限分级管控,全程可追溯,筑牢会计档案安全防线
运维·网络·人工智能
田梓燊1 天前
力扣:23.合并 K 个升序链表
算法·leetcode·链表
re林檎1 天前
算法札记——4.27
算法
数据牧羊人的成长笔记1 天前
逻辑回归与Softmax回归
算法·回归·逻辑回归
倔强的石头1061 天前
【Linux指南】基础IO系列(八):实战衔接 —— 给微型 Shell 添加完整重定向功能
linux·运维·服务器
try2find1 天前
打印ascii码报错问题
java·linux·前端
郑州光合科技余经理1 天前
同城O2O海外版二次开发实战:从支付网关到配送算法
开发语言·前端·后端·算法·架构·uni-app·php
观北海1 天前
AiScan-N:AI全自动化渗透测试工具的深度技术解析
运维·自动化