现有单HAProxy负载均衡架构如何新增第二台负载均衡器避免单点故障
双HAProxy负载均衡部署方案解答
疑问1:是否需要额外部署第三台转发服务器?
完全不需要,部署第三台服务器做上层转发反而会重新引入单点故障问题,还会额外增加链路延迟,属于完全没必要的冗余设计。
目前业界成熟的多负载均衡部署方案都不需要额外的上层转发节点,主要分为两类:
- 主备高可用模式:两台HAProxy通过
keepalived共享同一个虚拟IP(VIP),正常仅主节点承接流量,主节点故障时VIP自动漂移到备节点,该模式下同一时间只有一台负载均衡处理请求,适合流量规模较小、仅需要解决单点故障的场景。 - 双活模式:两台HAProxy同时承接流量,资源利用率更高,完全符合你要求两台负载均衡都处理请求的需求。
疑问2:两台不同IP的负载均衡如何实现流量分流?
不需要额外组件,直接修改DNS解析规则即可实现流量自动分流,最常用的低成本方案是DNS轮询:
- 给你的域名
example.com新增一条A记录,指向第二台HAProxy的公网IP,此时该域名会有两条对应不同IP的A记录 - 递归DNS服务器会按照轮询规则(也可自定义权重分配)将用户的解析请求随机返回其中一个IP,天然实现流量在两台负载均衡之间的分摊
- 可配合DNS服务商的IP健康检查功能,当某台HAProxy故障时,DNS会自动将故障IP从解析列表中剔除,避免用户请求访问到故障节点
如果是部署在自有IDC的业务,也可以采用ECMP等价路由方案:核心交换机配置同一条VIP路由指向两台HAProxy的内网地址,交换机自动将流量哈希分摊到两台服务器,分流精度和故障切换速度优于DNS轮询,但需要交换机支持对应功能,云服务器场景不适用。
落地建议
- 两台HAProxy配置完全相同的反向代理规则,均指向后端3台Web应用服务器,数据库层配置保持不变
- 建议额外在两台HAProxy之间部署
keepalived做节点存活检测,万一单节点故障,故障节点的IP流量可以自动漂移到正常节点,进一步提升可用性
内容的提问来源于stack exchange,提问作者Himanshu Poddar
相关产品推荐
相关产品推荐

