我们正在努力将我们的EC2架构扩展到我们想要管理自己的负载平衡的程度。我们目前在HAProxy上配置了一系列机器来进行基本负载平衡,但是我们正在寻找“最佳实践”意味着让新实例联机并自动(或几乎自动)加入HAProxy。
理想情况下,我们会监控系统负载或依靠几年的分析数据来计算出一个路由计划,当我们达到阈值或预定时间时,让一个流程启动一个新实例,新节点连接到我们的HAProxy机器上的系统,将其主机名写入配置并重新加载HAProxy,使其成为池的一部分。
我们正在考虑亚马逊的ELB,一旦我们变得足够大,需要多个区域覆盖,但在此之前,我们需要一个简单的设置,可以从HAProxy添加/删除机器。
我知道有一些服务我们可以支付来管理这些东西,但是Scalr似乎限制我们使用非常具体的实例类型,而且Rightscale太贵了,所以和其他许多人一样,我们希望自己推出自己的服务溶液
不幸的是,那些推出自己的解决方案的人似乎对他们的流程有点嘘声。
答案 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台服务器,应该为此编写脚本。