如何使用故障转移设置 HAProxy?

mix*_*dev 15 failover load-balancing haproxy

我明白,要在 HAProxy 负载平衡设置上进行故障转移,您需要两台运行 HAproxy 的机器(并将其路由到多个网络服务器实例)。但是在这种情况下,比如说 abcd.com,我们如何将此流量拆分/路由到 2 个 IP 地址而不是一个?DNS 通常将域名解析为单个 IP。我们如何使用免费/廉价的工具/服务来做到这一点?

Coo*_*ops 25

正如 Kyle 所说,heartbeat可用于使两个 haproxy 服务器充当故障转移对。然而,虽然许多人确实使用心跳来完成这项工作,但haproxy 的作者建议使用keepalived

他概述了 haproxy 邮件列表的详细信息:http : //www.formilux.org/archives/haproxy/1003/3259.html

简而言之,它是这样的:

  • 心跳是面向集群的。它确保只有一台服务器可以访问资源(即 SAN 存储)

  • keepalived 是面向网络的。它确保至少一台服务器拥有相关 IP。


Kyl*_*ndt 21

如果您有太多的负载需要在两个 haproxy 实例之间进行负载平衡,那么 DNS 循环不是一个坏主意(如果您有这个负载,我会感到惊讶)。不过,DNS 循环不会提供良好的故障转移。

在 Stack Overflow,我们使用heartbeat单个虚拟 IP,该 IP 一次仅在一个 haproxy 主机上处于活动状态(如果它出现故障,另一个接管此 IP)。您可以使用心跳在每台机器上拥有一个 IP,然后在两者之间使用 DNS 循环。如果一个失败,那么另一个将拥有这两个 IP。

HAProxy 在我们的物理服务器上使用大约 1-5% 的 CPU 来平衡我们的流量,它具有单个Intel(R) Xeon(R) CPU E5504 @ 2.00GHz. 所以HAProxy一般可以轻松处理大量流量。

  • 对于任何关心的人,在 Stack 我们一年多以前就开始使用 keepalived (6认同)
  • @mixdev:在这种情况下,只需让 DNS 指向 heatbeat 提供的单个虚拟 IP,就可以了。您只需让 haproxy 在两台机器上运行即可。当然,在上线之前一定要测试心跳故障转移。 (3认同)