http – Elastic Load Balancing

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

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

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

最佳答案 如果您需要添加新服务器,则必须重新启动它,尽管当您使用“-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

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

点赞