我有一个通过 Cloudformation 使用此更新的策略定义的自动缩放组:
UpdatePolicy:
AutoScalingRollingUpdate:
WaitOnResourceSignals: false
自动缩放组的 maxSize
设置为 4。我有一个用于启动和停止实例的生命周期 Hook 。
当我更新 ASG(例如通过更改 LaunchConfiguration 中的 AMI)时,它会在旧实例完全停止之前(在终止生命周期 Hook 完成之前)启动新实例。
我可以阻止这种情况吗?我可以告诉 Cloudformation/ASG 在生命周期 Hook 完成之前不要启动新实例吗?
最佳答案
当我更新 ASG(例如通过更改 LaunchConfiguration 中的 AMI)时,它会在旧实例完全停止之前(在终止生命周期 Hook 完成之前)启动新实例。
来自Amazon EC2 Auto Scaling Lifecycle Hooks和 Auto Scaling Lifecycle :
生命周期 Hook 使您能够通过在 Auto Scaling 组启动或终止实例时暂停实例来执行自定义操作。
您新启动的实例完成其启动序列,并且生命周期 Hook 暂停该实例。当实例处于等待状态时,您可以在其上安装或配置软件,确保您的实例在开始接收流量之前已完全准备就绪。
您可以尝试做的是添加一个生命周期 Hook ,在扩展时暂停实例。与此同时,用于缩减的生命周期钩子(Hook)将完成其执行,稍后扩展实例上的暂停将被释放,并且它将启动。这肯定会影响正常扩展条件下的实例创建,因为您的实例创建将暂停,但您可以将其用于其他事件,例如升级、部署等。
您可以阅读 Cooldowns and Custom Actions这也可能对您有帮助。
关于amazon-web-services - 防止 AWS Autoscalingroup 在通过 Cloudformation 更新期间启动超过最大大小的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57959425/