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 运行几年,管理员都忘了它存在。

负载策略非常灵活
不仅轮询,还能按响应时间、连接数、甚至会话黏性分流。

健康检查机制强
后端机器慢了、挂了、半死不活,都能自动摘除。

配置与资源占用极低
不像一些网关组件,需要大量内存和复杂依赖。