4

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

为了让画面更清晰:我有一个 Web 后端集群(比如说 apache + mod_rails)。如果流量变得非常高,我可以监控后端的使用情况并非常快速地(以秒为单位)启动另一台具有相同内容的机器。但是,我不知道如何让 HAProxy 使用额外的后端而不重新启动它(损害可用性)。有没有办法使用 HAProxy 或其他负载均衡器来做到这一点?

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

4

2 回答 2

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

只要您不修改配置,就没有理由重新启动,即使它仍然未被检测到。

于 2010-07-16T21:36:17.267 回答
0

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

免费 eval 和开发人员许可证一样可用,因此您可以免费为您想要实现的目标建模。

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

于 2010-07-16T09:57:03.617 回答