haproxy之负载均衡与反向代理
HAProxy 是一款高性能的开源负载均衡与反向代理软件,常年驻扎在高并发网站、API 网关和大型平台入口处,默默把洪水般的请求分流到后端服务器,让系统既稳又快。
它最初由 Willy Tarreau 在 2000 年前后开发,用来解决高流量网站的性能瓶颈。后来逐渐成为互联网基础设施中的“隐形支柱”,并由公司 HAProxy Technologies 推动商业支持与企业版本发展。
从技术视角看,它做三件核心工作:
- 负载均衡:把请求均匀分配到多台服务器
- 反向代理:对外只暴露 HAProxy,隐藏内部服务器
- 高可用入口:后端节点挂掉时自动切换
流量路径
flowchart LR
User[用户请求] --> HAProxy
HAProxy --> S1[后端服务器1]
HAProxy --> S2[后端服务器2]
HAProxy --> S3[后端服务器3]
用户只连接 HAProxy,后端机器的增加、下线、扩容对用户无感知。
工程上大家偏爱 HAProxy 的原因也很朴素:
- 单进程就能顶住极高并发
- 内存占用小
- 转发延迟极低
- 配置灵活
- 稳定性出了名
解决什么而存在
单机瓶颈
再强的服务器也有极限,CPU、内存、网络带宽总会满。HAProxy 把请求分发到多台机器,让系统横向扩展。单点故障
某台服务器挂掉,如果用户直接连它,请求就全失败。HAProxy 会自动绕开坏节点,请求转发到健康机器。流量突发洪峰
活动、抢购、热点事件会让流量突然暴涨。HAProxy 可以平滑分流,让后端不被瞬间冲垮。
可以用一张简单流转图理解它的位置:
flowchart LR
Client[用户流量] --> LB[HAProxy]
LB --> App1[应用服务器1]
LB --> App2[应用服务器2]
LB --> App3[应用服务器3]
用户只看到入口,后面服务器数量可以随时加减。
独特性能点
• 极致性能
事件驱动模型(非阻塞 I/O),单机可以轻松支撑几十万甚至百万连接。
• 稳定到近乎无感
线上常见情况是:HAProxy 运行几年,管理员都忘了它存在。
• 负载策略非常灵活
不仅轮询,还能按响应时间、连接数、甚至会话黏性分流。
• 健康检查机制强
后端机器慢了、挂了、半死不活,都能自动摘除。
• 配置与资源占用极低
不像一些网关组件,需要大量内存和复杂依赖。