AWS ECS集群Capacity Provider无法触发缩容事件问题问询
排查修复步骤
删除手动配置的ASG自定义伸缩策略
ECS Capacity Provider开启托管伸缩(ManagedScaling状态设为ENABLED)后,会自动为绑定的ASG创建专属的目标追踪伸缩策略,完全接管ASG的扩缩容调度。手动为该ASG配置的其他动态伸缩策略会与ECS托管规则冲突,直接导致缩容逻辑失效,请先删除所有手动为该ASG创建的自定义伸缩策略,仅保留ECS自动生成的AWS/ECS/ManagedScaling/前缀的托管策略。检查ASG实例缩减保护配置
- 检查ASG级别的
NewInstancesProtectedFromScaleIn参数是否被设为true,如果开启该参数,所有新扩容的实例默认会被标记为禁止缩容,导致缩容流程无法执行 - 检查当前运行的EC2实例是否被手动开启了实例级别的缩减保护,如有请手动关闭
- 检查ASG级别的
检查集群容量提供者关联策略的base参数
将Capacity Provider关联到ECS集群时,如果配置的CapacityProviderStrategy中base参数被设为2,ECS会强制要求该容量提供者至少维持2台实例的容量,即使没有任务运行也不会缩容到2以下,调整该参数到预期值即可。确认实例排水配置正常
检查ECS容器实例是否开启了防止意外终止的自定义配置,或者有长时间运行的任务配置了stopTimeout超过默认的30秒,导致ECS无法正常完成实例排水流程,无法将实例标记为可终止。
完成上述排查调整后,Capacity Provider即可恢复正常的双向扩缩容能力。
内容的提问来源于stack exchange,提问作者David Gard
相关产品推荐
相关产品推荐

