HAProxy
HAProxy 是一款免费的负载均衡软件,能够运行在大多数主流 Linux 发行版上。它同时支持 L4(TCP)和 L7(HTTP)两层负载均衡,功能完整,配置也相当灵活。更重要的是,它在性能和稳定性上都很能打,很多场景里已经足够替代商用负载均衡器。
HAProxy 的核心能力
- 负载均衡:支持 L4 和 L7 两种模式,常见算法包括 RR、静态 RR、LC、IP Hash、URI Hash、URL_PARAM Hash、HTTP_HEADER Hash 等。
- 健康检查:支持 TCP 和 HTTP 两种检查方式,能比较可靠地判断后端服务是否可用。
- 会话保持:对于没有做会话共享的应用集群,可以通过 Insert Cookie、Rewrite Cookie、Prefix Cookie,以及多种 Hash 方式来维持会话一致性。
- SSL 处理:HAProxy 可以解析 HTTPS,请求解密后再转发给后端 HTTP 服务。
- HTTP 请求重写与重定向:适合做入口层的规则控制。
- 监控与统计:自带基于 Web 的统计页面,可以查看健康状态和流量数据,也便于进一步接入监控系统。
配置示例
下面这段配置展示了一个最基础的 HTTP 反向代理场景:前端监听 8080 端口,把请求转发到后端 servers 组中的一台机器。
global
maxconn 2048 # 最大同时连接数
defaults
mode http # 使用 HTTP 模式
timeout connect 15000ms # 连接后端超时 15s
timeout client 15000ms # 客户端响应超时 15s
timeout server 15000ms # 后端响应超时 15s
balance roundrobin # 负载均衡策略
frontend http-in # 前端服务 http-in
bind *:8080 # 监听 8080 端口
default_backend servers # 请求转发到名为 servers 的后端服务
backend servers # 后端服务 servers
server server1 192.168.10.25:7010 maxconn 128 check inter 2000 fall 2
这段配置里有几个地方值得注意。
global 和 defaults 是最常见的基础段,前者放全局参数,后者放通用默认值。mode http 决定了 HAProxy 按 HTTP 代理来工作;如果你的业务是纯 TCP 转发,写法会不一样。
timeout connect、timeout client、timeout server 这几个值一定要结合实际业务来调。时间太短,慢请求会被误判;时间太长,又容易把异常连接拖住。真实环境里,很多问题并不是'HAProxy 不行',而是超时时间和后端服务特性没对齐。
后端这一段只有一台服务器,check 表示开启健康检查,inter 2000 表示每 2 秒检查一次,fall 2 表示连续失败 2 次就判定为不可用。maxconn 128 则限制了单个后端实例的最大并发连接数,避免某一台机器被压得太狠。
如果你要把它扩展成真正的生产配置,通常还会继续补上更多后端节点、日志参数、统计页面、ACL 规则以及更细的健康检查逻辑。

