AWS自动缩放ELB状态检查宽限期

Ofe*_*ich 9 load-balancing amazon-web-services amazon-elb autoscaling

我正在AWS自动量表组中运行服务器.正在运行的服务器位于负载均衡器之后.我正在使用ELB来管理自动缩放组健康检查.启动服务器并加入自动缩放组后,它们将立即加入负载均衡器.

我需要等多少时间(即健康检查宽限期)才能让他们加入负载均衡器?

它应该只在服务器处于运行状态之后吗?

它应该只在服务器通过系统并且实例状态检查后?

Joh*_*ein 20

Auto Scaling组有两种类型的运行状况检查:

  • EC2运行状况检查:这使用EC2状态检查来确定实例是否健康.它仅在虚拟机管理程序级别运行,无法查看在实例上运行的应用程序的运行状况.
  • Elastic Load Balancer(ELB)运行状况检查:这会导致Auto Scaling组将运行状况检查委派给Elastic Load Balancer,后者能够检查特定的HTTP(S)URL.这意味着它可以检查应用程序是否在实例上正确运行.

鉴于您的系统正在使用ELB运行状况检查,Auto Scaling将在确定每个EC2实例的运行状况时信任ELB运行状况检查的结果.这可能有点危险,因为如果实例需要一段时间才能启动,则运行状况检查可能会错误地将实例标记为"运行状况不佳".反过来,这将导致Auto Scaling终止实例并启动替换.

为避免出现这种情况,Auto Scaling组配置中存在Health Check Grace Period设置(以秒为单位).这表示Auto Scaling应该等待多长时间,直到它开始使用ELB运行状况检查(反过来,它具有检查频率的设置以及将实例标记为健康/不健康所需的检查次数).

因此,如果您的应用程序需要3分钟才能启动,请将运行状况检查宽限期设置为最少180秒(3分钟).文档没有说明时间是从实例标记为"正在运行"的时刻开始,还是从状态检查完成时开始,因此执行一些时序测试以避免任何"反弹"情况.

事实上,我建议将健康检查宽限期设置为更高的值(例如,所需时间的两倍).这不会影响系统的运行,因为健康实例将在满足ELB运行状况检查后立即开始提供流量,这比Auto Scaling宽限期更快.最糟糕的情况是,真正不健康的实例将在几分钟后终止,但这应该是罕见的.