AWS ECS双部署状态异常:导致Ansible服务稳定校验失败
ECS部署卡住及Ansible校验失败问题解析
核心原因:连接排空机制的延迟
你的问题本质是ECS的**连接排空(Connection Draining)**流程导致的部署状态延迟:
- 当旧部署(ACTIVE状态,期望计数0)需要终止时,ECS会先触发连接排空,发送
(service x, taskSet ecs-svc/9969948609626318494) has begun draining connections on 1 tasks.事件,等待该任务上的现有客户端连接处理完毕后,才会彻底终止任务并标记部署完成。 - 你设置的
最小健康百分比=0仅控制部署过程中允许的健康任务数量下限,不影响旧任务的连接排空等待流程——这是独立于健康检查的机制。
Ansible校验失败的原因
aws ecs wait services-stable命令的触发条件是服务下所有部署都进入稳定状态:
- 当服务同时存在“进行中”的PRIMARY部署和“未彻底完成”的ACTIVE部署时,服务整体不满足“稳定”要求,因此命令会持续等待直到所有部署状态收敛。
后续自动恢复的逻辑
当旧任务的连接排空完成后:
- ECS会发送
service x (deployment ecs-svc/9969948609626318494) deployment completed.事件,同时清理旧的ACTIVE部署记录和已停止的任务 - 此时服务仅剩状态稳定的PRIMARY部署(期望计数1),满足
services-stable的等待条件,Ansible命令随即执行成功。
优化建议
如果需要减少这类等待时长,可参考以下操作:
- 调整ECS服务的连接排空超时时间(默认300秒),根据业务场景设置合理的超时阈值(可在服务的负载均衡配置或任务定义中修改)
- 若业务允许强制终止旧任务,可在部署时添加
--force-new-deployment参数,跳过部分连接排空等待(需注意可能导致未处理的客户端连接中断)
内容的提问来源于stack exchange,提问作者João Amaro
相关产品推荐
相关产品推荐

