0

我有一个AWS ECS正在运行服务的任务 ( Airflow 2)。我想按照文档中的建议设置运行状况检查,以避免调度程序出现故障时出现问题。

在我的docker-compose我有:

scheduler:
    image: my-custom-airflow2
    command: scheduler
    healthcheck:
      test: [ "CMD-SHELL", 'airflow jobs check --job-type SchedulerJob --hostname "$${HOSTNAME}"' ]
      interval: 10s
      timeout: 10s
      retries: 5
    restart: always
    container_name: my-scheduler
    build:
      context: .
      dockerfile: Dockerfile
    env_file:
      - ./airflow.env
    volumes:
      - ./database_utils:/database_utils
      - ./dags:/opt/airflow/dags
      - ./logs:/opt/airflow/logs
    depends_on:
      - webserver

在我的任务定义中,我有这个:

healthCheck: [
        {
          retries : 5
          command : [
            "CMD-SHELL",
            "airflow jobs check --job-type SchedulerJob --hostname \"$${HOSTNAME}\""
          ]
        },
      ],

如何在任务定义的 docker-compose 中复制重启命令?目标是如果检查不成功,则终止服务并重新启动新服务。

4

1 回答 1

0

AWS ECS 健康检查文档是这样说的:

如果任务是手动运行的,而不是作为服务的一部分,则无论其健康状况如何,该任务都将继续其生命周期。对于属于服务一部分的任务,如果任务报告为不健康,则该任务将停止并且服务调度程序将替换它。

所以这里的问题是确保任务在服务中运行。否则不重启。

于 2021-09-20T08:13:52.510 回答