当 aws ec2 主机名更改或增加时,如何自动更新 nginx 上游服务器列表?

Lui*_*bia 17 nginx amazon-ec2 amazon-web-services autoscaling

我想在 AWS 中设置自动缩放。我不想使用弹性负载均衡器。

Amazon 中的 Autoscalling 在需求高峰期间无缝创建 EC2 实例以保持性能,并在需求平静期间自动减少以最大限度地降低成本。

由于此 EC2 实例是自动创建的,因此 NGINX 不知道它们的主机名。

我知道并且已经在 nginx 中设置了 10 个 EC2 实例的上游。

当自动扩展添加/更新/删除 EC2 实例时,我希望能够自动添加/更新/删除服务器名称到我的上游 nginx 配置。

Upe*_*dra 7

这可以通过使用 Amazon SDK(我几乎完成,将放在 github 上),利用 SNS、EC2 和 Autoscaling 服务来实现。

我已按照以下步骤实现此目的:

  1. 启用 HTTP 通知并订阅我的网络服务器。
  2. 向我的自动缩放组添加了一个心跳为 1 分钟(在终止前等待 1 分钟)的生命周期钩子以终止服务器
  3. 创建一个索引文件来解析消息以检测它是什么类型的消息(即启动或终止)
  4. 确定事件类型后,我查询 EC2 以获取实例的私有 ip
  5. 在 Launch 的情况下,等待收到 header 200,然后将 ip 添加到 nginx 配置并重新加载
  6. 在终止的情况下,从配置中删除 IP 并重新加载 nginx

请在此处找到脚本https://github.com/singhupendra/aws-autoscale