Appearance
HAProxy 简介
HAProxy(High Availability Proxy)是一款开源的、专为高可用场景设计的 TCP/HTTP 负载均衡器及代理服务器。它以稳定性、高效性和丰富的功能而闻名,广泛应用于互联网生产环境。
核心特性
| 特性 | 说明 |
|---|---|
| 协议支持 | TCP、HTTP、HTTPS、SPDY、HTTP/2(需前端终止) |
| 负载均衡 | Round Robin、Least Connections、Source Hash、URI Hash 等 |
| 健康检查 | TCP 层、HTTP 层主动检查,被动(4xx/5xx 计数)检查 |
| SSL/TLS | 完整 SSL 终止,支持 SNI 路由、OCSP Stapling |
| ACL | 基于 IP、URI、Header、Cookie 等的访问控制 |
| 会话保持 | Cookie 插入、Cookie 被动、Session ID 绑定 |
| 压缩 | gzip / deflate 响应压缩 |
| 日志 | Syslog、本地文件、Stats Unix Socket |
工作原理
HAProxy 通常部署在客户端和后端服务器之间,所有流量经过 HAProxy:
Client → [HAProxy] → Backend ServersHAProxy 负责:
- 接收客户端请求
- 根据 ACL 和负载均衡算法选择后端服务器
- 转发请求到选定的后端
- 收集响应并返回给客户端
- 记录访问日志
HAProxy 与 Nginx 的区别
| 对比项 | HAProxy | Nginx |
|---|---|---|
| 定位 | 专业的负载均衡器 | Web 服务器 + 负载均衡 |
| 协议层 | Layer 4 (TCP) / Layer 7 (HTTP) | 主要 Layer 7,可做 Layer 4 |
| 调度算法 | 8+ 种,灵活度高 | 少数几种 |
| 健康检查 | 内置,配置丰富 | 被动检查为主 |
| 性能 | 极高,专注于代理 | 也很高,但功能更杂 |
| 配置语法 | 声明式,相对简单 | 块配置,稍繁 |
适用场景
- 网站负载均衡:分发流量到多台 Web 服务器
- API 网关:基于路径、Header 做路由
- 数据库负载均衡:MySQL、PostgreSQL 读负载均衡
- SSL 终端:集中管理 SSL 证书
- 灰度发布:按比例或规则分流到不同版本服务
- 防御 DDoS:结合 ACL 和限速缓解攻击
💡 HAProxy 3.3.3 是 3.x 系列的最新稳定版本,带来了多项性能优化和新功能,下一页详细介绍。