讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux HAProxy 负载均衡配置方法

阿婷君_7509

阿婷君_7509

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

|

918人浏览过

|

来源于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 或日志刷盘瞬间触发误判。

WebChat Voice Proxy
WebChat Voice Proxy

⚠️ 已弃用 — 该技能已拆分为两个独立技能,以提升模块化程度:**webchat-https-proxy**(HTTPS/WSS 反向代理)和 **webchat-voi...**

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

热门AI工具

更多
讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

相关专题

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

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

865

2023.10.26

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

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

304

2024.02.23

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

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

489

2024.02.23

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

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

305

2024.02.23

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

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

348

2024.02.23

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

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

349

2024.02.23

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

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

601

2024.02.23

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

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

322

2024.02.23

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

60

2026.10.28

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn