2010-07-15 134 views
4

我想知道是否有办法做弹性负载平衡。我已经阅读了HAProxy,但似乎我需要将HAProxy重新配置为使用更多或更少的机器。弹性负载平衡

为了让图片更清晰:我有一个web后端集群(可以说apache + mod_rails)。如果流量非常高,我可以监控后端的使用情况,并快速调出另一台具有相同内容的机器(时间大约为几秒)。但是,我不知道如何让HAProxy使用额外的后端,而无需重新启动它(损害可用性)。有没有办法使用HAProxy或其他负载平衡器来做到这一点?

我在想有可能有一种方法可以有两个负载均衡器用于冗余。然后,我可以降低一个,更新它的配置,使它恢复,然后取下另一个。但是我不知道如何做到这一点。

回答

2

如果您需要添加新服务器,则必须重新启动它,但当您使用“-sf $ oldpid”启动新进程时几乎无法检测到,因为新进程和旧进程都在 并行工作。

如果您需要暂时禁用一台服务器,你有几种选择:

1)(首选之一):启用“选项HTTP-禁用-ON-404”和处理服务器的检查响应返回404这将禁用新的连接,但仍然允许现有用户完成他们的会话。然后你安排返回500,你可以停止你的过程。这种方法的优点是你永远不必碰LB,一切都从你操作的服务器来控制。大多数合理的基础设施就是这样做的。

2)容易的:使用socat,连接到插座的统计信息,并禁用服务器你打算工作:

printf "disable server 1\n" | socat stdio unix-connect:/var/state/haproxy.stat 

然后启用它,一旦你完成:

printf "enable server 1\n" | socat stdio unix-connect:/var/state/haproxy.stat 

只要你没有修改配置,即使没有检测到 ,也没有理由重新启动。

0

如果您有此预算,请访问www.Zeus.com。新版本在几周内即可提供,但您也可以使用现有版本来提供服务级别监控,然后使用脚本语言和API为您的后端服务器创建自动配置功能。

免费evals可以作为开发者许可证使用,因此您可以免费模拟您试图达到的目标。

如果您想要在某个点上沿着该路线行驶,也可以从多个云提供商处获得Zeus软件。

+0

我没有任何预算,所以它不是一个选项。即便如此,我在他们的网站上看不到任何符合我要求的功能。 – dschatz 2010-07-16 13:30:25