我的服务部署有多个地理区域,例如 Region1、Region2 和 Region3。每个区域都有一个故障转移 haproxy 实例。每个 haproxy 都配置了多个后端服务器,这些服务器会将请求传递到其私有 IP。
我使用基于 DNS 的负载平衡解决方案将每个国家的流量引导到速度最快的可用区域。DNS 解决方案具有故障转移功能,但由于 TTL、监控间隔和传播时间,这可能需要一点时间。
如果一个数据中心的后端出现问题,我希望该区域的 HAProxy 将流量定向到其他在线区域(使用“allbackups”选项,并在备份上启用 httpchk)以服务请求,即使延迟增加,直到问题在本地解决或 DNS 故障转移启动。最初这听起来是个好主意,但现在我认为这有时会导致周期性重定向,想知道是否有人对如何实现这样的设置(或更好的替代配置)有建议。
我上面描述的例子:
区域1-haproxy
- r1b1(私人)
- r1b2(私人)
- region2-haproxy(公共)备份
- region3-haproxy(公共)备份
区域2-haproxy
- r2b1(私人)
- r2b2(私人)
- region1-haproxy(公共)备份
- region3-haproxy(公共)备份
region3-haproxy
- r3b1(私人)
- r3b2(私人)
- region1-haproxy(公共)备份
- region2-haproxy(公共)备份
答案1
我正在为基于 AWS 的生产环境寻找类似的东西,我认为使用 heartbeat 对你的情况来说是一个很好的解决方案。我计划在我的两个 HAProxy 服务器之间使用 heartbeat,如果其中一个服务器出现故障,我计划将弹性 IP 分配给现在成为我主服务器的机器。我建议查看 heartbeat,以下是另一个我发现对这种情况有用的链接: