我已经根据 CPU 监视器设置了 EC2 自动缩放策略,并且运行良好。
我偶尔会遇到触发自动缩放的突发事件,并添加更多服务器。
如果服务器经历了持续 30 分钟的突发事件,并且添加了两个实例来帮助完成当前的工作,我希望让它们保留 59 分钟(因为我支付了 1 小时的费用),而不是在触发缩减时终止它们。
因此,基本上我想将检查从开始到一小时左右移动,看看是否仍然需要它们,否则就关闭。我应该使用冷却时间还是宽限期?
这是当前的规则(未显示警报),正如您所见,我正在使用新的OldestInstance
终止政策。
as-create-auto-scaling-group MyASGroup \
--availability-zones us-east-1c \
--launch-configuration MyLaunchConfig \
--grace-period 300 \
--health-check-type ELB \
--min-size 1 \
--max-size 3 \
--desired-capacity 1 \
--load-balancers MyELB \
--termination-policies "OldestInstance" \
--tag ...
as-put-scaling-policy ScaleUp \
--type ChangeInCapacity \
--auto-scaling-group MyASGroup \
--adjustment=1 \
--cooldown 300
as-put-scaling-policy ScaleDown \
--type ChangeInCapacity \
--auto-scaling-group MyASGroup \
--adjustment=-1 \
--cooldown 300
这可能吗?谢谢。
答案1
您应该调整 ScaleDown 策略的冷却时间,以使您的实例运行更长时间。宽限期应设置为启动实例所需的时间,因此无需调整它(如果您的实例在 300 秒内启动)。制定策略后,您可以使用带有 --honor-cooldown 参数的 as-execute-policy 命令对其进行测试。这将允许您确保冷却按您希望的方式运行,而无需等待满足负载条件。
答案2
您可能考虑的另一个解决方案是将 ASG 的默认终止策略更改为“最近实例小时”。这仍然会留下一些不确定性,但它为您提供了 ASG 中的所有实例供您选择,而不仅仅是最近启动的实例,并且根据其运作方式,与让实例运行更长时间相比,它可能为您节省资金,因为无法保证 ASG 会在需要缩减时终止这些新实例。事实上,在 ASG 扩展容量时,一些原始实例可能已经完成了另一个实例小时。