Amazon ec2 什么';让EC2实例自动加入HAProxy的最佳实践是什么?

Amazon ec2 什么';让EC2实例自动加入HAProxy的最佳实践是什么?,amazon-ec2,load-balancing,haproxy,scalr,Amazon Ec2,Load Balancing,Haproxy,Scalr,我们正在扩展我们的EC2体系结构,以便管理我们自己的负载平衡。目前,我们在HAProxy上配置了一系列机器来进行基本的负载平衡,但我们正在寻找“最佳实践”方法,让新实例联机并自动(或几乎自动)加入HAProxy 理想情况下,我们会监控系统的负载,或者依靠几年的分析数据来制定鲁奇计划,当我们达到阈值或计划时间时,让流程启动一个新实例,让新节点连接到HAProxy机器上的系统,将其主机名写入配置并重新加载HAProxy,使其成为池的一部分 我们正在考虑亚马逊的ELB,一旦我们发展到需要多区域覆盖,但

我们正在扩展我们的EC2体系结构,以便管理我们自己的负载平衡。目前,我们在HAProxy上配置了一系列机器来进行基本的负载平衡,但我们正在寻找“最佳实践”方法,让新实例联机并自动(或几乎自动)加入HAProxy

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

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

我知道有一些服务我们可以付费来管理这些东西,但Scalr似乎将我们限制在非常特定的实例类型,而Rightscale太贵了,所以像许多其他人一样,我们希望推出自己的解决方案


不幸的是,那些推出自己的解决方案的人似乎在他们的过程中有点沉默。

您不需要过度考虑这个解决方案;)

您可以在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台服务器,您应该为此编写一个脚本。

scalr有什么问题?只要安装scalr客户端,就可以使用自定义实例类型。我们正在使用他们的nginx负载平衡器,它到目前为止工作得很好。啊,不知道Scalr会允许定制构建。我看了一下他们的产品,似乎他们已经预先配置了你必须使用的实例才能正常工作。只是对上面的建议进行了调整,我在过去几个小时里一直在与之斗争。。。与直接指向内部IP不同,因为在Amazon上您没有静态的内部IP,即使您可以使用静态的外部IP,取消分配也要收费,而且您可能会遇到防火墙/流量更改问题,我的建议是使用DynDNS服务(如DynDNS.org)或提供API的DNS提供商(像泽里戈)并在计算机上设置一些主机。如果您创建,比如说10个主机,并将内部amazon IP分配给它们,它应该可以工作。因为我在上面的评论中用完了空间,我会注意:您可能需要不时清理DNS,因为如果您扩展到,比如说6个实例,然后再返回到4个实例,那么其他2个仍然有IP,现在可能是长到一个新实例。可能是启动和关闭时的脚本,并使用amazon中的实例数据来命名机器…这就是我解决问题的方法。更新:自从我上次发布这个问题以来,在我的新工作中,我面临着同样的问题,但在使用RackSpace的数百台机器上,这需要一种方法来拥有这些机器nes在haproxy机器上ping一个守护进程以添加到配置中。这非常聪明。但仅回复TiemanO的评论,您可以轻松地在Amazon上启动一个VPC(无需任何费用),这样您就可以在自己的CIDR块上为您的内部地址提供固定IP。VPC的唯一费用是隧道费。