9

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

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

一旦我们变得足够大,需要多个区域覆盖,我们就会考虑使用 Amazon 的 ELB,但在那之前,我们需要一个简单的设置,可以从 HAProxy 中添加/删除机器。

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

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

4

1 回答 1

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 或进行任何丑陋的 hack(除非您需要超过 10 个,然后只需添加 100 即可设置)。

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

于 2011-07-23T10:57:41.227 回答