以编程方式将节点添加到负载均衡器,如Haproxy?

Joã*_*imo 12 proxy reverse-proxy load-balancing nginx haproxy

我非常肯定这个问题已经解决了,但我找不到任何关于它的信息......

sysadmins如何以编程方式将新节点添加到现有且正在运行的负载均衡器?假设我有一个负载均衡器正在运行并已经在两个EC2实例之间说我的API服务器,突然出现流量峰值,我需要负载均衡器中的第三个节点但是我睡着了...如果我会很好有什么监控可能RAM使用和一些关键性能指标告诉我何时应该有另一个节点,甚至更好,如果它可以单独向负载均衡器添加一个新节点...

我相信这对于node-http-proxy分发来说是可能的,甚至是微不足道的,但我想知道这是否可以与HAproxy和/或Nginx一起使用......我知道亚马逊的弹性负载平衡可能是我最好的选择,但我想自己做(我想从rackspace,EC2,Joyent和其他人那里生成实例,因为它很方便).

再一次,产生一个节点很容易,我想知道如何将它添加到haproxy.cfg或与Nginx类似的东西,而无需重新加载整个代理,并以编程方式进行.Bash脚本是我最好的选择,但它仍然需要重新加载整个代理,这是坏的,因为它失去了连接...

skr*_*ler 8

你有几个问题.对于"在不重新启动的情况下将节点添加到haproxy":

我为类似问题所做的是使用服务器名称预先填充配置文件..例如web01,web02 ... web20,即使我当时只有5个Web服务器.然后在我的hosts文件中,我将它们映射到Web服务器的实际ips.

要添加新服务器,只需在hosts文件中为其创建一个条目,它将开始通过运行状况检查并添加.

对于自动编排,它实际上取决于您的环境,您可能必须编写适合您需求的自定义内容.还有付费解决方案(Scalr浮现在脑海中)来处理编排.


小智 7

我做了什么:我在haproxy.cfg的后端部分有一行说:

# new webservers here
Run Code Online (Sandbox Code Playgroud)

使用sed脚本我用以下内容更新haproxy.cfg:

  sed -i -e "/new webservers here/a\    server $ip_address $ip_address:12080 check maxconn 28 weight 100"
Run Code Online (Sandbox Code Playgroud)

然后重新加载haproxy.透明地工作.

  • 这是推荐的方法吗?对我来说似乎不切实际.虽然,它的确有效. (2认同)