0

0

Linux HAProxy 负载均衡配置方法

冷漠man

冷漠man

发布时间:2026-02-25 16:07:22

|

838人浏览过

|

来源于php中文网

原创

haproxy backend balance算法需按场景选择:http短连接用roundrobin;长连接(websocket/grpc)选leastconn;性能不均且需会话保持时用source+hash-type consistent。

linux haproxy 负载均衡配置方法

haproxy.cfg 里 backend 的 balance 算法选哪个?

多数人直接写 balance roundrobin,但实际得看后端服务特性。HTTP 短连接用 roundrobin 没问题;如果后端是长连接(比如 WebSocket 或 gRPC),leastconn 更稳,避免单节点堆积太多连接;若后端节点性能差异大,得用 balance source 配合 hash-type consistent,否则 IP 哈希容易因节点增减导致大量会话重定向。

常见错误:把 source 当成“固定分发”,忘了默认 hash-type 是 map-based,节点变动时几乎全量漂移。必须显式写 hash-type consistent 才能缓解。

  • balance roundrobin:适合无状态、响应快的 HTTP 服务
  • balance leastconn:适合连接生命周期长、响应时间波动大的服务
  • balance source + hash-type consistent:适合需会话保持且集群动态扩缩的场景

健康检查 timeout 和 interval 怎么设才不误杀?

默认 check inter 2000 rise 2 fall 3 对很多 Java 应用来说太激进——Spring Boot 启动慢、GC 时响应卡顿几秒很常见,结果刚起来就被踢出集群。关键不是调大数值,而是让检查更贴合真实行为。

建议用 option httpchk GET /health 替代默认 TCP 探针,并在后端提供轻量级健康接口。同时把 inter 设为 5000ms 起步,fall 不低于 3,避免 GC 或日志刷盘瞬间触发误判。

PopShort.AI
PopShort.AI

PopShort是一个AI短剧生成平台

下载
  • TCP 层检查(默认)只确认端口通,无法反映应用是否就绪
  • HTTP 检查要确保后端 /health 返回 2xx 且响应体不含 error 字样
  • timeout check 必须显式设(如 timeout check 3s),否则可能卡住整个检查队列

HTTPS 流量透传还是卸载?

90% 的误配置发生在 SSL 处理位置。如果后端是 Nginx/Tomcat 且已配好证书,别在 HAProxy 做 bind :443 ssl 再转发到后端 HTTPS —— 这属于重复加解密,徒增延迟和 CPU 开销。真需要加密链路,用 option ssl-hello-chk + TCP 透传更轻量。

只有当后端无法处理 TLS(比如老 PHP 应用)、或需统一 WAF/限流策略时,才做 SSL 卸载。此时务必关掉后端的 HTTP Strict Transport Security(HSTS)头自动注入,否则用户浏览器会拒绝降级到 HTTP,而 HAProxy 又没配好重定向逻辑,导致白屏。

  • SSL 卸载:HAProxy 终止 TLS,用 http-request set-header X-Forwarded-Proto https 通知后端
  • TCP 透传:backend 用 mode tcp,不解析 HTTP,不设 http-check
  • 混用风险:frontend HTTPS + backend HTTPS 未设 ssl-server-verify none 会导致证书校验失败

ACL 规则为什么总不生效?

最常漏的是 use_backend 放错了位置。ACL 判断必须在 use_backend 之前定义,且不能跨 frontend/backend 区域引用。另一个隐形坑是大小写——hdr(host) -i example.com 中的 -i 表示忽略大小写,但若写成 -m str 就严格匹配,而域名通常带大写字母(比如某些 CDN 回源头),结果规则静默失效。

调试技巧:开 option http-log,看 access log 里 captured_req_hdr_0 实际值,比猜 header 名字靠谱得多。

  • ACL 必须定义在 frontendlisten 块内,backend 里不能定义新 ACL
  • 匹配路径用 path_begpath 更安全,避免 /api 错杀 /apisix
  • 多个 use_backend 按顺序匹配,第一个命中即终止,不继续往下判
配置里真正难的不是语法,是搞清每个参数背后对应的真实网络行为——比如 timeout server 不是“后端超时”,而是“HAProxy 等后端响应的最大时间”,它和后端自己的超时设置是两套逻辑,叠在一起容易互相掩盖问题。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
如何配置Tomcat环境变量
如何配置Tomcat环境变量

配置Tomcat环境变量需要在系统中添加CATALINA_HOME变量,并将Tomcat的安装路径添加到PATH变量中。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

117

2023.10.26

idea如何集成Tomcat
idea如何集成Tomcat

idea集成Tomcat的步骤:1、添加Tomcat服务器配置;2、配置项目部署;3、运行Tomcat服务器;4、访问项目;5、注意事项;6、关闭Tomcat服务器。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

171

2024.02.23

怎么查看Tomcat源代码
怎么查看Tomcat源代码

查看Tomcat源代码的步骤:1、下载Tomcat源代码;2、在IDEA中导入Tomcat源代码;3、查看源代码;4、理解Tomcat的工作原理;5、参与社区和贡献;6、注意事项;7、持续学习和更新;8、使用工具和插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

98

2024.02.23

常见的tomcat漏洞有哪些
常见的tomcat漏洞有哪些

常见的tomcat漏洞有:1、跨站脚本攻击;2、跨站请求伪造;3、目录遍历漏洞;4、缓冲区溢出漏洞;5、配置漏洞;6、第三方组件漏洞。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

169

2024.02.23

tomcat日志乱码怎么解决
tomcat日志乱码怎么解决

tomcat日志乱码的解决办法:1、修改tomcat的日志编码设置;2、检查ide的编码设置;3、检查操作系统的编码设置;4、使用过滤器处理日志;5、检查外部系统的编码设置;6、检查文件编码方式等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

155

2024.02.23

weblogic和tomcat有哪些区别
weblogic和tomcat有哪些区别

weblogic和tomcat的区别:1、功能;2、性能;3、规模;4、价格;5、安全性;6、配置和管理;7、社区支持;8、集成能力;9、升级和更新;10、可靠性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

200

2024.02.23

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

243

2024.02.23

tomcat启动闪退怎么解决
tomcat启动闪退怎么解决

tomcat启动闪退的解决办法:1、检查java环境;2、检查环境变量配置;3、检查端口被占用;4、检查配置文件编码;5、检查启动时需要的配置文件;6、检查相关文件是否丢失;7、检查防火墙和杀毒软件设置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

167

2024.02.23

batoto漫画官网入口与网页版访问指南
batoto漫画官网入口与网页版访问指南

本专题系统整理batoto漫画官方网站最新可用入口,涵盖最新官网地址、网页版登录页面及防走失访问方式说明,帮助用户快速找到batoto漫画官方平台,稳定在线阅读各类漫画内容。

65

2026.02.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.7万人学习

Git 教程
Git 教程

共21课时 | 3.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号