AWS ECS服务部署长时间处于进行中状态该如何解决?
AWS ECS 超1小时未完成部署排查解决步骤
你使用的部署配置
minimumHealthyPercent=100、maximumPercent=200意味着部署过程中,服务的健康任务数不能低于期望实例数的100%,最多可以同时运行2倍期望数的任务,必须新任务完全启动并通过健康检查后才会终止旧任务,因此部署卡住的核心原因通常为新任务无法正常启动或通过健康检查。
排查&解决步骤
- 第一步:定位新任务异常状态
进入ECS控制台对应集群的服务页面,切换到部署标签页,查看当前部署的新任务状态:- 如果状态为
PENDING:检查集群资源是否充足(EC2模式检查CPU/内存剩余,Fargate模式检查子网可用IP配额)、任务执行角色是否有拉取镜像、读取配置/Secret的权限、镜像地址是否正确可用 - 如果状态为
RUNNING但健康检查失败:检查任务定义的容器端口、健康检查参数是否正确,负载均衡目标组的健康检查路径、端口、合法状态码是否和应用实际匹配,安全组是否放通了对应端口的入站规则 - 可以直接查看CloudWatch对应容器的运行日志,排查应用启动报错、依赖服务连接失败等代码/配置层面的问题,修复问题后重新发起部署
- 如果状态为
- 第二步:调整部署参数临时推进部署(适合需要快速恢复部署的场景)
由于minimumHealthyPercent=100要求新任务100%就绪才会下线旧任务,若存在少量新任务无法启动就会导致部署无限卡住,可以临时下调该参数释放资源:
执行AWS CLI命令修改配置:aws ecs update-service --cluster <你的集群名称> --service <你的服务名称> --deployment-configuration "minimumHealthyPercent=50,maximumPercent=200"
调整后等待10分钟观察部署进度,部署完成后可根据需求将参数改回100% - 第三步:强制终止卡住的部署
若调整参数后仍然无进展,可以强制取消当前部署,触发回滚或重新部署:
执行AWS CLI命令强制刷新部署:aws ecs update-service --cluster <你的集群名称> --service <你的服务名称> --force-new-deployment
强制部署后需同步监控新任务状态,确认根因修复后再发起正式部署 - 第四步:排查资源配额限制
检查负载均衡目标组是否还有注册目标配额、ECS服务的任务配额是否足够、对应子网的IP配额是否已满,释放多余资源或提升配额后重新部署
内容的提问来源于stack exchange,提问作者James Anderbard
相关产品推荐
相关产品推荐

