取消注册ec2实例时出现ELB后端连接错误

时间:2016-12-12 05:27:32

标签: amazon-web-services amazon-ec2 aws-cli amazon-elb autoscaling

我编写了一个自定义发布脚本来管理EC2自动扩展应用程序的版本。处理工作如此......

  1. 根据应用程序git标记创建AMI。
  2. 创建启动配置。
  3. 配置ASG以使用新的启动配置。
  4. 查找当前所需的ASG容量。
  5. 将所需容量设置为之前容量的2倍。
  6. 通过查询ELB等待新实例变得健康。
  7. 将所需容量设置回以前的值。
  8. 这一切都运行得很好,除非每次运行时,对ELB的监视都会显示很多后端连接错误。

    我不知道为什么会发生这种情况,因为如果为ELB启用“连接耗尽”选项(它是),它应该(基于我的理解)仍然是服务当前连接。

    我想也许ASG在连接完成之前终止了实例,所以我改变了我的脚本,首先从ELB注销实例,然后等待一段时间再更改ASG的所需容量。然而,这没有任何区别。一旦实例从ELB注销(即使它们仍在运行且运行正常),也会发生后端连接错误。

    似乎它忽略了连接耗尽选项,只是在实例取消注册后立即删除连接。

    这是我用来取消注册实例的命令......

    aws elb deregister-instances-from-load-balancer --load-balancer-name $elb_name --instances $old_instances
    

    在从ASG中删除实例之前,是否有一些首选方法可以从ELB中正常删除实例?

1 个答案:

答案 0 :(得分:2)

进一步调查表明发生了后端连接错误,因为当从ELB中删除旧实例时,新实例尚未准备好承担全部负载。它们很健康,但似乎需要更多的变暖。

我正在调整运行状况检查设置,以便在开始尝试提供请求之前为实例提供更多时间。我可能还需要更改apache2设置以更快地准备好它们。