如何设置具有故障转移功能的 HAProxy?

如何设置具有故障转移功能的 HAProxy?

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

答案1

如果您的负载太大,需要在两个 haproxy 实例之间进行负载平衡,那么 DNS 轮询不失为一个好主意(不过,如果您有这种负载,我会感到惊讶)。但是 DNS 轮询无法提供良好的故障转移。

在 Stack Overflow,我们使用heartbeat单个虚拟 IP,该 IP 一次只能在一个 haproxy 主机上处于活动状态(如果该主机发生故障,另一个主机将接管该 IP)。您可以使用 heartbeat 在每台机器上都有一个 IP,然后在两台机器之间进行 DNS 轮询。如果其中一台发生故障,那么另一台将拥有这两个 IP。

HAProxy 使用我们物理服务器上大约 1-5% 的 CPU 来平衡只有一个 的流量Intel(R) Xeon(R) CPU E5504 @ 2.00GHz。因此 HAProxy 通常可以轻松处理大量流量。

答案2

正如 Kyle 所说,心跳可以使两个 haproxy 服务器充当故障转移对。然而,虽然许多人确实使用心跳为了工作,保持活跃由 haproxy 的作者建议。

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

简而言之,它是这样的:

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

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

答案3

相关内容