一、基础核心定义
- HAProxy :高性能四层 + 七层通用负载均衡、反向代理软件
- 工作层级:同时支持四层 (TCP/UDP)、七层 (HTTP/HTTPS)
- 定位:兼顾 LVS 高性能、Nginx 丰富功能,中小型集群、中间件集群首选
- 特点:开源、稳定、高并发、低消耗、故障检测强
二、核心架构组成
- 前端 frontend:接收客户端请求,配置监听端口、访问控制、规则
- 后端 backend:挂载真实业务 RS 服务器集群
- 监听套接字:对外暴露访问端口
- 转发逻辑:客户端请求→frontend 匹配规则→调度至 backend 真实节点
三、核心工作模式(四层 / 七层)
1. 四层模式(TCP)
- 仅基于IP + 端口转发,不解析应用层报文
- 适用:MySQL、Redis、MQ、SSH 等 TCP 长连接服务
- 转发速度快、损耗小
2. 七层模式(HTTP/HTTPS)
- 解析应用层协议头、请求报文
- 支持 URL 路径、Host 域名、Cookie、请求头转发匹配
- 适用:Web 接口、微服务网关、域名拆分
四、常用负载均衡调度算法(必背)
- roundrobin 轮询:默认,请求均匀分发
- static-rr 静态加权轮询:按权重分配,权重越高流量越多
- leastconn 最小连接数:分给当前空闲连接最少节点,适合长连接
- source 源 IP 哈希:同一客户端 IP 固定访问一台后端,保持会话
- uri URL 哈希:按请求路径哈希绑定节点,利于本地缓存
- hdr(host) 按域名哈希:不同域名分发不同集群
五、核心核心功能(背诵考点)
- 双层级转发:四层七层一体,一套软件搞定多种转发场景
- 健康检查:自动探测后端节点状态,故障节点自动剔除,恢复自动加回
- 会话保持:源 IP、Cookie、URL 绑定会话,保证用户请求落同一节点
- 黑白名单:IP 访问拦截、权限限流
- SSL 证书卸载:统一 HTTPS 加解密,减轻业务服务器压力
- 日志统计监控:请求耗时、状态码、流量、节点负载监控
- 动静分离:静态资源、动态接口拆分转发
- 故障熔断、权重动态调整
- HTTP 重定向、请求头修改
六、HAProxy 三种主流转发场景
- 数据库集群:MySQL 主从、读写分离、分库代理(四层 TCP)
- 中间件集群:Redis、RabbitMQ、Elasticsearch 负载
- Web / 微服务:域名路由、接口负载、七层灰度转发
七、HAProxy 优缺点
优点
- 四层七层全能,通用性极强
- 性能优秀,并发吞吐高,稳定性极强
- 健康检测、故障转移机制完善
- 配置简洁,资源占用低
- 支持长连接、会话绑定、SSL 卸载
缺点
- 静态页面缓存能力弱,不如 Nginx
- rewrite 重写规则复杂度弱于 Nginx
- 超高流量入口场景性能略低于纯四层 LVS
八、HAProxy / LVS / Nginx 三者横向对比(面试必考)
表格
| 组件 | 工作层级 | 核心优势 | 典型场景 |
|---|---|---|---|
| LVS | 四层 | 内核转发、性能天花板、超大流量 | 全站入口一级负载 |
| HAProxy | 四层 + 七层 | 全能均衡、中间件 / 数据库首选 | 二级负载、数据库、MQ 集群 |
| Nginx | 七层 | HTTP 功能最强、缓存、rewrite、静态服务 | Web 网关、静态资源、业务反向代理 |
通用企业层级架构
LVS (一级四层入口) → HAProxy/Nginx (二级负载) → 业务服务 / 中间件
九、高可用部署
- 搭配 Keepalived 实现 HAProxy 主备集群
- 故障自动切换、VIP 漂移,避免单点故障
- 主节点承载流量,备节点待命,宕机无缝接管
十、极简背诵口诀
- HAProxy = 四层七层全能负载均衡
- 架构分前端接收、后端调度
- 常用算法:轮询、加权、最小连接、IP/URL 哈希
- 擅长数据库、中间件、Web 混合集群转发
- 比 LVS 功能多,比 Nginx 并发稳定性强
- 配合 Keepalived 消除单点故障
十一、高频面试简答
-
**HAProxy 四层和七层区别?**四层只转发 IP 端口,不解析报文,速度快,适合数据库长连接;七层解析 HTTP 协议,可按 URL、域名路由,适合 Web 业务。
-
**HAProxy 和 Nginx 怎么选型?**数据库、Redis、MQ 等 TCP 服务优先 HAProxy;静态资源、页面缓存、复杂 rewrite 选用 Nginx;混合业务用 HAProxy。
-
**leastconn 算法适用场景?**长连接类服务,避免请求堆积到繁忙节点,均衡后端连接压力。
-
**HAProxy 能否做 HTTPS 解密?**支持,可以统一配置 SSL 证书,集中完成加密解密,减轻后端服务压力。