延迟ASG在机器启动时向上扩展触发器

时间:2013-12-04 02:26:28

标签: amazon-web-services amazon-ec2 autoscaling

我们设置了Auto Scaling Group,以便在满足特定负载阈值时扩大实例数。

问题是当新实例完成启动时,我们有一个运行配置机器的引导脚本(启动脚本脚本启动puppet,相应地配置机器)。

在运行此脚本期间(可能需要几分钟),此计算机上的负载很高,这会导致ASG启动另一台计算机,从而导致另一个实例被创建,等等。

有没有办法告诉ASG不要开始从这台机器收集指标,直到x时间已经过去(或者更好的是,当启动带脚本完成时)?

2 个答案:

答案 0 :(得分:1)

您可能需要将healthcheckgraceperiod设置得更高:

  

新的Amazon EC2实例投入使用后,Auto Scaling开始检查其运行状况的时间长度(以秒为单位)。在此期间,将忽略该实例的任何运行状况检查失败。

     

如果要添加ELB运行状况检查,则必须执行此操作。通常情况下,新实例需要在进行健康检查之前进行简单的预热。要提供充足的预热时间,请将组的运行状况检查宽限期设置为与应用程序的预期启动时间段匹配。

http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_CreateAutoScalingGroup.html

答案 1 :(得分:0)

与此同时,扩展策略有这样的设置:Instance warm-up

它告诉自动缩放系统在指定的时间(预热时间)内不要考虑新启动的实例的指标。

由于它默认为 ASG 的 "cooldown" 时间,因此与此相关。您可能还需要对其进行调整,以免仅仅因为您的实例尚未准备好而触发过多的扩展活动。文档说它不受目标跟踪或步进扩展策略的约束,但我无法在我的测试中确认这一点,也不得不对其进行调整。