我想知道是否有办法做弹性负载平衡。我读过关于haproxy的文章,但似乎我需要把haproxy降下来,重新配置它,使其能够与更多或更少的机器一起工作。
为了更清楚地说明这一点:我有一个web后端集群(比如apache+mod_rails)。我可以监控后端的使用情况,如果流量非常大,我可以很快(按秒的顺序)调出另一台具有相同内容的机器。但是,我不知道如何使haproxy使用额外的后端而不重新启动它(损害可用性)。有没有办法使用haproxy或其他负载平衡器来实现这一点?
我在想有一种方法可以有两个负载平衡器来冗余。然后我可以放下一个,更新它的配置,把它拿回来,然后取下另一个。但我不知道怎么做。
最佳答案
如果需要添加新服务器,则必须重新启动它,尽管当使用“-sf$oldpid”启动新进程时几乎无法检测到,因为新进程和旧进程都在
平行的。
如果需要临时禁用服务器,可以使用以下选项:
1)(首选项):启用“option 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
只要不修改配置,就没有理由重新启动,即使它
仍然没有被发现。