AWS ECS健康检查失败时如何自动重启或销毁任务?
AWS ECS Airflow 2调度器健康检查自动重启配置方案
1. 补全任务定义健康检查参数
你当前的健康检查配置仅包含重试次数与执行命令,需要补充和docker-compose配置对齐的间隔、超时参数,还可按需添加启动宽限期,避免调度器启动阶段误判健康检查失败:
"healthCheck": [ { "command": [ "CMD-SHELL", "airflow jobs check --job-type SchedulerJob --hostname \"$${HOSTNAME}\"" ], "interval": 10, "timeout": 10, "retries": 5, "startPeriod": 30 } ]
参数说明:interval、timeout单位为秒,startPeriod为可选配置,可根据你的调度器实际启动时长调整,该时间段内的健康检查失败不会计入重试次数
2. 配置任务重启策略
在任务定义的根层级添加restartPolicy配置,指定任务失败时自动重启:
"restartPolicy": "ON_FAILURE"
3. 确认ECS服务配置
Airflow调度器属于长期运行的后台服务,必须通过ECS服务(Service)方式部署,只要你配置的服务期望副本数≥1,ECS默认会自动执行异常任务替换逻辑:当任务连续5次健康检查失败后,ECS会自动终止不健康的任务实例,拉起新的实例替代,完全实现docker-compose中restart: always的效果。
注意事项
如果你的自定义Airflow镜像未将airflow命令加入全局PATH,需要将健康检查命令中的airflow替换为绝对路径(例如/opt/airflow/.local/bin/airflow,可进入运行中的容器执行which airflow查看实际路径),避免命令不存在导致的健康检查误判。
内容的提问来源于stack exchange,提问作者mrc
相关产品推荐
相关产品推荐

