HAProxy 3.1 与 3.2 介绍与选型指南

HAProxy 3.1 与 3.2 双线介绍与选型指南:版本分支生命周期实查、事件驱动架构、四层七层功能特性、官方文档快速上手,以及与 Nginx、Envoy、Keepalived 的量化对比

HAProxyHAProxy负载均衡2026/10/19

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-Q42028-Q1(dev 转 stable)开发分支3.5-dev9(2026-10-14)
3.42026-06-032031-Q2LTS3.4.7(2026-10-14)
3.32025-11-262027-Q1stable3.3.17(2026-10-14)
3.22025-05-282030-Q2LTS3.2.26(2026-10-14)
3.12024-11-262026-Q1stable(官网已标注 unmaintained)3.1.17(2026-03-19)
3.02024-05-292029-Q2LTS3.0.30(2026-10-14)
2.82023-05-312028-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.txt3.1 线关键字定义
GitHub 发布流https://github.com/haproxy/haproxy/releases.atom线内补丁版本与发布时间
官方许可文件https://github.com/haproxy/haproxy/blob/master/LICENSEGPL-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

落地步骤(引自官方文档与发行版惯例,本文未做本地实测):

  1. 安装:Debian/Ubuntu 使用 sudo apt install haproxy,RHEL 系使用 sudo dnf install haproxy;发行版仓库版本可能落后于官方分支表,追新需自建官方源。
  2. 将上述配置写入 /etc/haproxy/haproxy.cfg。
  3. 语法校验:haproxy -c -f /etc/haproxy/haproxy.cfg,官方流程要求生产变更前先校验通过。
  4. 启动: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.2NginxEnvoyKeepalived
开源许可GPL-2.0(附例外条款,见仓库 LICENSE)BSD-2-ClauseApache-2.0GPL-2.0
GitHub stars(2026-10-19)6,931(haproxy/haproxy,git.haproxy.org 同步副本)31,910(nginx/nginx 官方同步副本仓库)29,0864,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 漂移。

八、参考链接