HAProxy 3.1 与 3.2 介绍与选型指南
HAProxy 3.1 与 3.2 双线介绍与选型指南:版本分支生命周期实查、事件驱动架构、四层七层功能特性、官方文档快速上手,以及与 Nginx、Envoy、Keepalived 的量化对比
HAProxy 3.1 与 3.2 介绍与选型指南
一、信息基准
1.1 查询口径
本篇信息查询日期为 2026-10-19,全部资料取自 HAProxy 官方渠道(官网、官方配置文档、官方发布流),未做本地安装与运行实测。按任务口径,本篇以 3.1(stable 线)与 3.2(LTS 线)双线为版本基准,对应线内最新版本分别为 3.1.17 与 3.2.26;同时按官网实查结果如实标注全部分支的生命周期状态。
1.2 版本依据
官网 haproxy.org 版本分支表(2026-10-19 实查):
| 分支 | 发布日期 | 生命周期终点 | 角色定位 | 线内最新版本(发布日期) |
|---|---|---|---|---|
| 3.5-dev | 约 2026-Q4 | 2028-Q1(dev 转 stable) | 开发分支 | 3.5-dev9(2026-10-14) |
| 3.4 | 2026-06-03 | 2031-Q2 | LTS | 3.4.7(2026-10-14) |
| 3.3 | 2025-11-26 | 2027-Q1 | stable | 3.3.17(2026-10-14) |
| 3.2 | 2025-05-28 | 2030-Q2 | LTS | 3.2.26(2026-10-14) |
| 3.1 | 2024-11-26 | 2026-Q1 | stable(官网已标注 unmaintained) | 3.1.17(2026-03-19) |
| 3.0 | 2024-05-29 | 2029-Q2 | LTS | 3.0.30(2026-10-14) |
| 2.8 | 2023-05-31 | 2028-Q2 | 仅关键修复 | 2.8.31(2026-10-14) |
官方版本策略要点(haproxy.org 原文转述):自 1.8 起每年发布两个大版本,构成两个分支;偶数分支称为 LTS(long term support),发布后维护 5 年,面向追求极致稳定、不希望频繁升级的通用用户;奇数分支称为 stable,面向愿意频繁升级换取新特性、且具备回滚能力的高阶用户,维护 12 至 18 个月;同一分支内应始终跟随最后一个补丁版本。
关键结论:3.1 线自 2026-Q1 起在官网标注为 unmaintained(停止维护),3.1.17 是该线的最终版本;3.2 LTS 支持至 2030-Q2;官网当前最新 LTS 为 3.4(支持至 2031-Q2)。对新部署而言,3.2 与 3.4 均在支持期内,3.1 仅适合存量系统参考。
1.3 官方来源清单
| 来源 | 地址 | 用途 |
|---|---|---|
| HAProxy 官网 | https://www.haproxy.org/ | 分支表、生命周期、官方描述 |
| 3.2 官方配置文档 | https://www.haproxy.org/download/3.2/doc/configuration.txt | 关键字与功能定义 |
| 3.1 官方配置文档 | https://www.haproxy.org/download/3.1/doc/configuration.txt | 3.1 线关键字定义 |
| GitHub 发布流 | https://github.com/haproxy/haproxy/releases.atom | 线内补丁版本与发布时间 |
| 官方许可文件 | https://github.com/haproxy/haproxy/blob/master/LICENSE | GPL-2.0 及例外条款 |
二、软件概述
本文介绍的双线版本为 HAProxy 3.1.17(stable 线最终版)与 HAProxy 3.2.26(LTS 线最新版,2026-10-14 发布)。
HAProxy 是一款免费、非常快速且可靠的反向代理软件,提供高可用、负载均衡以及对 TCP 与 HTTP 类应用的代理能力。官方描述其特别适合访问量极大的网站,驱动了全球相当大比例的高流量站点,是事实上的开源负载均衡标准,已被大多数主流 Linux 发行版收录,并常被云平台默认集成。
项目由 Willy Tarreau 长期主导开发,主开发库位于 git.haproxy.org,GitHub 上的 haproxy/haproxy 仓库是开发分支的同步副本(官网 2026-10-19 实查 stars 为 6,931)。从演进脉络看:1.5 引入原生 SSL/TLS 终止,2.x 时代引入 HTTP/3(QUIC)传输、master-worker 进程模型与 Runtime API;本篇聚焦的 3.2 为 2025-05-28 发布的 LTS 线,其同代 stable 线即 3.1(2024-11-26 发布,已停止维护)。
三、核心架构
3.1 事件驱动的运行模型
HAProxy 采用事件驱动、非阻塞 I/O 的高性能模型,单进程内通过 nbthread 配置多线程并行处理连接,避免多进程带来的内存与锁开销。运行形态上支持 master-worker 模式:master 进程负责配置加载、平滑重载与运行时指令通道,worker 进程承载实际数据面流量;重载时旧 worker 在排空存量连接后退出,实现不中断升级。
3.2 代理实体与请求流水线
配置由 global(进程级)、defaults(默认值)与代理段组成,代理实体分三类:frontend 定义监听入口(bind 声明监听套接字),backend 定义后端服务器池,listen 将入口与池合二为一。HTTP 请求沿 http-request 规则集、后端选择、server 选择、http-response 规则集的顺序处理;ACL 提供条件判定原语,可与 map 文件配合实现表驱动的调度与分流。
3.3 健康检查与服务器状态
backend 中每个 server 可启用 check 做主动健康检查,检查方式覆盖 TCP 四层与 HTTP 七层(http-check 指令族);observe 允许从真实流量被动推断后端状态;backup 标记备机,仅在主机组全损时启用;agent-check 可接入外部状态注入。健康状态与权重可通过 Runtime API 在线调整,实现摘流与灰度。
3.4 运行时管理与可观测
stats socket 与 master CLI 暴露运行时接口,支持 show info、show stat、disable server、set server 等指令;stats enable/stat 页面提供内置可视化状态页;日志侧支持 log 指令向本地或远端 syslog 发送结构化日志,log-format 可完全定制,并有 log forwarding 段做日志转发。
四、功能特性
4.1 四层与七层负载均衡
mode tcp 与 mode http 分别对应四层、七层代理;balance 算法包括 roundrobin、static-rr、leastconn、source、uri、first、random 等(官方配置文档 balance 关键字)。配合权重、慢启动(slowstart)与连接数上限(maxconn)可精细控制流量分配。
4.2 现代 HTTP 协议栈
3.x 线原生支持 HTTP/2 与 HTTP/3(QUIC):bind 可声明 h2/h3 传输;支持 gRPC 与 WebSocket 长连接代理、请求与响应改写(http-request/http-response)、压缩(compression)、响应缓存(cache 关键字族)等七层能力。
4.3 会话保持与粘性调度
cookie 指令可向响应注入会话 Cookie 实现粘性;stick-table 与 stick match/stick store 指令族基于源地址、Cookie、Cookie 值等键建立粘性表,跨 frontend/backend 共享,可同时用于会话保持与限流计数。
4.4 TLS 终止与安全控制
bind 的 ssl 参数实现证书卸载与 mTLS 客户端校验;通过 stick-table 配合 http-request track-sc 与 deny 可实现速率限制、并发限制与基础抗刷;ACL 体系支持对地址、路径、方法、Header 等做细粒度访问控制。TCP 层还有 tcp-request 连接级规则。
4.5 可观测性与生态集成
内置 Prometheus 导出能力(stats socket 指定 prometheus-exporter 协议),可被监控体系直接抓取;SPOE(Stream Processing Offload Engine)与 Lua 支持在数据面挂载自定义处理逻辑;peers 指令支持跨实例同步 stick-table,用于多节点限流与粘性。
五、快速上手
以下为按官方 3.2 配置文档关键字组织的最小反向代理配置(global、defaults、frontend、backend、bind、balance、server check、stats 均为官方 configuration.txt 中定义的指令):
global
log stdout format raw local0
nbthread 2
defaults
mode http
log global
timeout connect 5s
timeout client 30s
timeout server 30s
frontend web_front
bind *:80
default_backend app_pool
backend app_pool
balance roundrobin
server web1 10.0.0.11:8080 check
server web2 10.0.0.12:8080 check
listen stats
bind *:8404
stats enable
stats uri /stats
落地步骤(引自官方文档与发行版惯例,本文未做本地实测):
- 安装:Debian/Ubuntu 使用
sudo apt install haproxy,RHEL 系使用sudo dnf install haproxy;发行版仓库版本可能落后于官方分支表,追新需自建官方源。 - 将上述配置写入 /etc/haproxy/haproxy.cfg。
- 语法校验:
haproxy -c -f /etc/haproxy/haproxy.cfg,官方流程要求生产变更前先校验通过。 - 启动:
sudo systemctl restart haproxy,随后访问 http://<主机>:8404/stats 查看状态页,并向 :80 发请求验证轮询转发。
来源标注:配置结构与指令定义见官方 3.2 配置文档 https://www.haproxy.org/download/3.2/doc/configuration.txt。
六、适用场景与限制
6.1 适用场景
- 超高并发 Web 入口、API 前置代理与七层负载均衡;
- TCP 长连接服务代理:数据库入口、消息中间件、游戏与物联网长连接等 TCP 服务;
- 微服务南北向流量入口,配合 ACL/stick-table 实现限流与灰度摘流;
- 与 Keepalived 组合实现 VIP 漂移的入口高可用主备集群;
- 需要精细健康检查、慢启动与权重调度的异构后端池。
6.2 限制与注意点
- 3.1 线已停止维护(官网 2026-10-19 标注 unmaintained),新部署不应从 3.1 起步;支持期内的 LTS 为 3.2(至 2030-Q2)与 3.4(至 2031-Q2)。
- 奇数 stable 线生命周期仅 12 至 18 个月,官方明确不希望其进入嵌入式等长期免维护产品。
- ACL、stick-table、规则集体系学习曲线较陡,配置变更依赖
haproxy -c校验纪律。 - 相比 Envoy 等云原生数据面,HAProxy 本体不提供 xDS 动态配置协议,需借助生态组件(如 HAProxy Technologies 的 Data Plane API)另行桥接。
七、同类选型对比
7.1 对比对象
选取 Nginx(Web 服务器与反向代理)、Envoy(云原生数据面代理)、Keepalived(VRRP VIP 高可用方案,常与代理软件叠加)三个对象。stars 与最近发版于 2026-10-19 经 GitHub 仓库页面与 releases.atom 实查;Nginx 版本取自 nginx.org 官方下载页。
7.2 量化对比
| 维度 | HAProxy 3.2 | Nginx | Envoy | Keepalived |
|---|---|---|---|---|
| 开源许可 | GPL-2.0(附例外条款,见仓库 LICENSE) | BSD-2-Clause | Apache-2.0 | GPL-2.0 |
| GitHub stars(2026-10-19) | 6,931(haproxy/haproxy,git.haproxy.org 同步副本) | 31,910(nginx/nginx 官方同步副本仓库) | 29,086 | 4,726 |
| 最近发版 | 3.2.26(2026-10-14) | 主线 1.31.7 / stable 1.30.6(nginx.org) | v1.40.0(2026-10-13) | v2.4.3(2026-07-20) |
| 版本节奏 | 每年 2 个分支;LTS 维护 5 年,stable 12-18 个月 | 主线约每半年推进,stable 线长期维护 | 季度大版本加月度补丁 | 年度小版本,节奏缓慢 |
| 角色与兼容 | TCP/HTTP 反代与负载均衡,LTS 适合长期驻留 | Web 服务、反代、缓存与 L7 入口 | 服务网格与云原生数据面,xDS 动态配置 | VRRP 浮动 IP,非负载均衡本体 |
7.3 选型建议
若核心诉求是极高并发下的四层/七层负载均衡、精细健康检查与粘性调度,HAProxy 是最稳妥的默认选择,新部署建议从 3.2 LTS 起步并同时评估更新的 3.4 LTS;需要服务网格或 xDS 动态配置时选 Envoy;以静态内容、缓存与 Web 托管为主的入口可选 Nginx;无论选哪个代理软件,多机入口高可用都建议叠加 Keepalived 做 VIP 漂移。
八、参考链接
- HAProxy 官网(分支表与生命周期):https://www.haproxy.org/
- 3.2 官方配置文档:https://www.haproxy.org/download/3.2/doc/configuration.txt
- 3.1 官方配置文档:https://www.haproxy.org/download/3.1/doc/configuration.txt
- GitHub 仓库与发布页:https://github.com/haproxy/haproxy
- 官方许可文件(GPL-2.0 及例外条款):https://github.com/haproxy/haproxy/blob/master/LICENSE
- Nginx 官方下载页:https://nginx.org/en/download.html
- Envoy 官网:https://www.envoyproxy.io/
- Keepalived 官方仓库:https://github.com/acassen/keepalived