弹性负载平衡

时间:2010-07-15 21:51:29

标签: http load-balancing elasticity

我想知道是否有办法进行弹性负载平衡。我已经阅读了有关HAProxy的内容,但似乎我需要关闭HAProxy以重新配置它以适应更多或更少的机器。

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

我在想有可能有两种负载均衡器可以实现冗余。然后我可以关闭一个,更新其配置,重新启动它,然后取下另一个。但我对如何做到这一点并不了解。

2 个答案:

答案 0 :(得分:2)

如果您需要添加新服务器,则必须重新启动它,尽管当您使用“-sf $ oldpid”启动新进程时几乎检测不到,因为新旧进程都在 平行。

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

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

2)简单的方法:使用socat,连接到stats套接字并禁用你打算使用的服务器:

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

只要你没有修改配置,就没有理由重启,即使它 仍未被发现。

答案 1 :(得分:0)

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

免费版本可以作为开发者许可证使用,因此您可以免费为您尝试实现的内容建模。

如果您想在某个时间沿着这条路线走下去,也可以从众多云提供商那里获得Zeus软件。