让EC2实例自动加入HAProxy的最佳做法是什么?

时间:2011-07-06 23:08:17

标签: amazon-ec2 load-balancing haproxy scalr

我们正在努力将我们的EC2架构扩展到我们想要管理自己的负载平衡的程度。我们目前在HAProxy上配置了一系列机器来进行基本负载平衡,但是我们正在寻找“最佳实践”意味着让新实例联机并自动(或几乎自动)加入HAProxy。

理想情况下,我们会监控系统负载或依靠几年的分析数据来计算出一个路由计划,当我们达到阈值或预定时间时,让一个流程启动一个新实例,新节点连接到我们的HAProxy机器上的系统,将其主机名写入配置并重新加载HAProxy,使其成为池的一部分。

我们正在考虑亚马逊的ELB,一旦我们变得足够大,需要多个区域覆盖,但在此之前,我们需要一个简单的设置,可以从HAProxy添加/删除机器。

我知道有一些服务我们可以支付来管理这些东西,但是Scalr似乎限制我们使用非常具体的实例类型,而且Rightscale太贵了,所以和其他许多人一样,我们希望自己推出自己的服务溶液

不幸的是,那些推出自己的解决方案的人似乎对他们的流程有点嘘声。

1 个答案:

答案 0 :(得分:10)

您不需要过度思考此解决方案;)

您可以在HAProxy配置文件中简单地“预配置”服务器。它们将显示为“关闭”,并且在您实际将它们联机之前永远不会收到请求。

这是一个例子,假设您只有5台在线机器,并且预计在未来2年内有10台机器:

listen web *:80
    balance source
    server  web1 192.168.0.101:80 check inter 2000 fall 3
    server  web2 192.168.0.102:80 check inter 2000 fall 3
    server  web3 192.168.0.103:80 check inter 2000 fall 3
    server  web4 192.168.0.104:80 check inter 2000 fall 3
    server  web5 192.168.0.105:80 check inter 2000 fall 3
    server  web6 192.168.0.106:80 check inter 2000 fall 3
    server  web7 192.168.0.107:80 check inter 2000 fall 3
    server  web8 192.168.0.108:80 check inter 2000 fall 3
    server  web9 192.168.0.109:80 check inter 2000 fall 3
    server  web10 192.168.0.110:80 check inter 2000 fall 3

使用此配置,您将不需要重新启动HAProxy或执行任何类型的丑陋黑客至少一年(除非您需要超过10,然后只需添加100,您将被设置)。

您还可以编写一个快速shell脚本来自动生成此配置,实际上,如果您要向池中添加100台服务器,应该为此编写脚本。