注销 ec2 实例时出现 ELB 后端连接错误
ELB backend connection errors when deregister ec2 instances
我编写了一个自定义发布脚本来管理 EC2 自动缩放应用程序的发布。处理过程是这样的...
- 根据应用程序 git 标签创建 AMI。
- 创建启动配置。
- 配置 ASG 以使用新的启动配置。
- 查找 ASG 当前所需的容量。
- 将所需容量设置为之前容量的 2 倍。
- 通过查询 ELB 等待新实例变得健康。
- 将所需容量设置回以前的值。
这一切工作得很好,除了每当我 运行 这个,ELB 的监控显示大量后端连接错误。
我不知道为什么会发生这种情况,因为如果为 ELB(它是)启用 "Connection draining" 选项,它应该(根据我的理解)仍然服务当前连接。
我认为 ASG 可能会在连接完成之前终止实例,因此我更改了我的脚本以首先从 ELB 中注销实例,然后等待一段时间,然后再更改 ASG 的所需容量。然而,这没有任何区别。一旦实例从 ELB 中注销(即使它们仍然 运行ning 并且健康),后端连接错误就会发生。
它似乎忽略了连接耗尽选项,并在实例被注销后立即删除连接。
这是我用来注销实例的命令...
aws elb deregister-instances-from-load-balancer --load-balancer-name $elb_name --instances $old_instances
在从 ASG 中删除实例之前,是否有一些首选方法可以从 ELB 中优雅地删除它们?
进一步调查表明,后端连接错误的发生是因为当旧实例从 ELB 中删除时,新实例尚未准备好承担全部负载。它们很健康,但似乎需要更多的保暖。
我正在努力调整健康检查设置,以便在实例开始尝试处理请求之前给它们更多的时间。我可能还需要更改 apache2 设置以使其更快准备就绪。
我编写了一个自定义发布脚本来管理 EC2 自动缩放应用程序的发布。处理过程是这样的...
- 根据应用程序 git 标签创建 AMI。
- 创建启动配置。
- 配置 ASG 以使用新的启动配置。
- 查找 ASG 当前所需的容量。
- 将所需容量设置为之前容量的 2 倍。
- 通过查询 ELB 等待新实例变得健康。
- 将所需容量设置回以前的值。
这一切工作得很好,除了每当我 运行 这个,ELB 的监控显示大量后端连接错误。
我不知道为什么会发生这种情况,因为如果为 ELB(它是)启用 "Connection draining" 选项,它应该(根据我的理解)仍然服务当前连接。
我认为 ASG 可能会在连接完成之前终止实例,因此我更改了我的脚本以首先从 ELB 中注销实例,然后等待一段时间,然后再更改 ASG 的所需容量。然而,这没有任何区别。一旦实例从 ELB 中注销(即使它们仍然 运行ning 并且健康),后端连接错误就会发生。
它似乎忽略了连接耗尽选项,并在实例被注销后立即删除连接。
这是我用来注销实例的命令...
aws elb deregister-instances-from-load-balancer --load-balancer-name $elb_name --instances $old_instances
在从 ASG 中删除实例之前,是否有一些首选方法可以从 ELB 中优雅地删除它们?
进一步调查表明,后端连接错误的发生是因为当旧实例从 ELB 中删除时,新实例尚未准备好承担全部负载。它们很健康,但似乎需要更多的保暖。
我正在努力调整健康检查设置,以便在实例开始尝试处理请求之前给它们更多的时间。我可能还需要更改 apache2 设置以使其更快准备就绪。