amazon-web-services - 防止 AWS Autoscalingroup 在通过 Cloudformation 更新期间启动超过最大大小的实例

标签 amazon-web-services aws-cloudformation autoscaling

我有一个通过 Cloudformation 使用此更新的策略定义的自动缩放组:

UpdatePolicy:
  AutoScalingRollingUpdate:
    WaitOnResourceSignals: false

自动缩放组的 maxSize 设置为 4。我有一个用于启动和停止实例的生命周期 Hook 。

当我更新 ASG(例如通过更改 LaunchConfiguration 中的 AMI)时,它会在旧实例完全停止之前(在终止生命周期 Hook 完成之前)启动新实例。

我可以阻止这种情况吗?我可以告诉 Cloudformation/ASG 在生命周期 Hook 完成之前不要启动新实例吗?

最佳答案

当我更新 ASG(例如通过更改 LaunchConfiguration 中的 AMI)时,它会在旧实例完全停止之前(在终止生命周期 Hook 完成之前)启动新实例。

来自Amazon EC2 Auto Scaling Lifecycle HooksAuto Scaling Lifecycle :

生命周期 Hook 使您能够通过在 Auto Scaling 组启动或终止实例时暂停实例来执行自定义操作。

您新启动的实例完成其启动序列,并且生命周期 Hook 暂停该实例。当实例处于等待状态时,您可以在其上安装或配置软件,确保您的实例在开始接收流量之前已完全准备就绪。

enter image description here

您可以尝试做的是添加一个生命周期 Hook ,在扩展时暂停实例。与此同时,用于缩减的生命周期钩子(Hook)将完成其执行,稍后扩展实例上的暂停将被释放,并且它将启动。这肯定会影响正常扩展条件下的实例创建,因为您的实例创建将暂停,但您可以将其用于其他事件,例如升级、部署等。

您可以阅读 Cooldowns and Custom Actions这也可能对您有帮助。

关于amazon-web-services - 防止 AWS Autoscalingroup 在通过 Cloudformation 更新期间启动超过最大大小的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57959425/

相关文章:

java - 具有智能精度(比例)的 BigDecimal

kubernetes - 在 Kubernetes 中,可以暂时耗尽一个节点来扩展部署吗?

amazon-ec2 - 如何在 AWS EC2 中同步机器 key ?

amazon-web-services - CloudWatch 中的自定义指标

amazon-web-services - 允许用户在阻止访问 IAM 的同时更改自己的密码的 AWS IAM 策略

mysql - AWS RDS 存储已满

aws-cloudformation - cloudformation包上传hash而不是zip

amazon-web-services - 控制 Lambda + Kinesis 成本

amazon-web-services - AWS::Event::Rule 上的 EventPattern 需要触发 bash 脚本记录器

amazon-web-services - 使用cloudformation启动ec2,它应该使用启动模板