如何在Aws自动缩放中使用Haproxy而不是ELB?

问题描述 投票:1回答:3

如何在Aws自动缩放中使用Haproxy而不是ELB,以及如何将现有的aws实例设置集成到自动缩放中。

amazon-web-services haproxy ec2-ami
3个回答
2
投票

您可以向自动缩放组添加通知。每次发生自动缩放操作时,这将向SNS主题添加消息。您可以为主题订阅SQS队列,并使用脚本来调整HAProxy配置以响应每个事件。

另一种选择是在用户数据脚本中向负载均衡器添加实例,但是如果它们消失,您需要确保平衡器可以正常地删除它们。


4
投票

Here是我写的一篇文章,描述了如何使用一个自动扩展组为loadbalancer和生命周期钩子来触发lambda函数,以便在ASG更改时更新route53。以下是3个主要步骤:

1.克隆aws-load-balancer存储库

大多数魔法都是由ansible处理的,所以让我们得到那些代码:

git clone https://github.com/filipenf/aws-load-balancer.git

2.编辑my-lb配置文件

在aws-load-balancer目录中,有一个定义一些变量的vars / my-lb.yml文件。您需要编辑该文件并更改其中一些文件。即:

  • domain_name - 将使用的顶级域名(即:example.com)
  • auto_register_domain - 将在ASG的生命周期挂钩上更新的FQDN(从组中创建/删除的实例)
  • 子网 - 负载均衡器将存在的子网
  • lb_mappings - 域名和后端实例之间的映射

3.执行启动剧本

现在,您已准备好执行启动手册,该手册将为我们的负载均衡器创建必要的AWS资源。

ansible-playbook -i localhost, launch-lb.yml \
    -e server_config=mylb \
    -e aws_account_id=<your_aws_account_id> \
    -e key_name=<some_key>

如果一切顺利,你应该有一个带有一个实例的新ASG。该实例已经为lb_mappings变量中指定的域正确配置了haproxy。

该剧本还将创建它所需的lambda函数,SNS主题,生命周期钩子和IAM角色。

haproxy配置设置为使用粘性会话并将粘性表与其他ASG成员同步。除此之外,还有一个名为“update-peers”的脚本,它将检测对自动调节组的更改并相应地更新对等配置。


2
投票

我建议使用haproxy v 1.6或更高版本,因为每次使用以下配置向HAProxy添加或取消注册实例时,此版本都会保存服务器状态:

global
stats socket /tmp/socket
server-state-file /tmp/server_state

backend bk
load-server-state-from-file global
server s1 10.0.0.3:4444 check weight 11
server s2 10.0.0.4:4444 check weight 12

在重新加载HAProxy之前,我们使用以下命令保存服务器状态:

socat /tmp/socket - <<< "show servers state" > /tmp/server_state

你可以保存:

  • 运营状态
  • 行政国家(maint)
  • 重量(包括慢启动相对重量)

更多信息What's new in HAProxy 1.6

您应该有一个脚本来调整您的HAProxy配置,以响应每个自动缩放事件,如@Julio。

问候

© www.soinside.com 2019 - 2024. All rights reserved.