我非常肯定这个问题已经解决了,但我找不到任何关于它的信息......
sysadmins如何以编程方式将新节点添加到现有且正在运行的负载均衡器?假设我有一个负载均衡器正在运行并已经在两个EC2实例之间说我的API服务器,突然出现流量峰值,我需要负载均衡器中的第三个节点但是我睡着了...如果我会很好有什么监控可能是RAM使用情况和一些关键性能指标告诉我何时应该有另一个节点,如果它可以单独向负载均衡器添加一个新节点,那就更好了......
我确信这对于node-http-proxy和distribute来说是可能的,甚至是微不足道的,但我想知道这是否可以与HAproxy和/或Nginx一起使用。我知道亚马逊的弹性负载平衡可能是我最好的选择,但我想自己做(我想从rackspace,EC2,Joyent以及其他可能的方便产生实例)。
再一次,产生一个节点很容易,我想知道如何将它添加到haproxy.cfg或与Nginx类似的东西,而无需重新加载整个代理,并以编程方式进行。 Bash脚本编写是我最好的选择,但它仍然需要重新加载整个代理,这是不好的,因为它失去了连接......
答案 0 :(得分:8)
你有几个问题。对于“在不重新启动的情况下将节点添加到haproxy”:
我为类似问题所做的是使用服务器名称预填充配置文件。 web01,web02 ... web20即使我当时只有5个Web服务器。然后在我的hosts文件中,我将它们映射到Web服务器的实际ips。
要添加新服务器,只需在hosts文件中为其创建一个条目,它就会开始通过运行状况检查并添加。
对于自动编排,它实际上取决于您的环境,您可能必须编写适合您需求的自定义内容。有一些付费解决方案(Scalr可以想到)来处理编排。
答案 1 :(得分:7)
我的所作所为:我在haproxy.cfg的后端部分有一行说:
# new webservers here
使用sed脚本我用以下内容更新haproxy.cfg:
sed -i -e "/new webservers here/a\ server $ip_address $ip_address:12080 check maxconn 28 weight 100"
然后重新加载haproxy。透明地工作。
答案 2 :(得分:0)
HAProxy有一个运行时API,允许您动态执行此操作。