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


14

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


Answers:


20

如果您有这么多的负载,需要在两个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通常可以轻松处理大量流量。


1
不,我绝对没有这种流量。这只是为了避免SPOF。
mixdev 2011年

2
@mixdev:在这种情况下,只需将DNS指向heatbeat提供的单个虚拟IP,您就可以使用了。您只需在两台计算机上都运行haproxy。当然,在上线之前,请务必先测试心跳故障转移。
凯尔·布​​兰特

@KyleBrandt:如果haproxy过程消失了怎么办?您是否配置了允许基于此虚拟IP进行移动的任何内容?
CarpeNoctem 2011年

@CarpeNoctem:目前我们还没有覆盖。我认为也可以设置心跳和keepalived来监视进程。如果您选择这条路线,我建议您将其设置为要求该过程在相当长的时间内(例如1分钟)停机。您可能不希望心跳在配置错误时发生波动。HAProxy使用来检查其中的大多数内容-c,但可能无法捕获诸如绑定配置错误之类的信息。
凯尔·布​​兰特

5
对于任何在乎的人,一年前在Stack我们搬到保持健康状态
Kyle Brandt 2014年

24

正如Kyle所说,心跳可用于使两个haproxy服务器充当故障转移对。然而虽然很多人都使用心跳作业,的keepalived就是通过HAProxy的的作者建议。

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

简而言之,它是这样的:

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

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


-1

1
请在您的帖子中包含食谱的全部内容。我们并非完全是博客链接服务。
Deer Hunter

1
另外,博客经常掉下来或更改URL,然后信息就会丢失。
丹尼斯·诺尔特

投反对票,因为这与问题完全无关。
danieljimenez 2015年

@danieljimenez,我认为并非完全无关,只是一种误解。OP为HAProxy 本身请求主动/被动,而user3595100将此问题解释为对于HAProxy后端是主动/被动。但是,发布链接本身并不是可接受的答案。
pipe_tape_coder
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.