Я запустил команду airflow scheduler, она работает.
Ниже приведен мой служебный код планировщика воздушного потока.
[Unit]
Description=Airflow scheduler daemon
After=network.target postgresql.service rabbitmq-server.service
Wants=postgresql.service rabbitmq-server.service
[Service]
EnvironmentFile=/home/ubuntu/airflow
User=ubuntu
Group=ubuntu
Type=simple
ExecStart=/bin/airflow scheduler -n ${SCHEDULER_RUNS}
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
Однако он не работает, когда я запускаю воздушный поток, планировщик. Я получаю следующую ошибку:
May 25 21:11:37 ip-11-210-11-108 systemd[1]: airflow-scheduler.service: Service hold-off time over, scheduling restart.
May 25 21:11:37 ip-11-210-11-108 systemd[1]: Stopped Airflow scheduler daemon.
-- Subject: Unit airflow-scheduler.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit airflow-scheduler.service has finished shutting down.
May 25 21:11:37 ip-11-210-11-108 systemd[1]: airflow-scheduler.service: Failed to load environment files: No such file or directory
May 25 21:11:37 ip-11-210-11-108 systemd[1]: airflow-scheduler.service: Failed to run 'start' task: No such file or directory
May 25 21:11:37 ip-11-210-11-108 systemd[1]: Failed to start Airflow scheduler daemon.
-- Subject: Unit airflow-scheduler.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit airflow-scheduler.service has failed.
--
-- The result is failed.
May 25 21:11:37 ip-11-210-11-108 systemd[1]: airflow-scheduler.service: Unit entered failed state.
May 25 21:11:37 ip-11-210-11-108 systemd[1]: airflow-scheduler.service: Failed with result 'resources'.
У меня нет опыта systemd. Что такое SCHEDULER_RUNS? Как настроить его?
В вашем файле systemd есть эта строка
EnvironmentFile=/home/ubuntu/airflow
Предполагается, что она должна указывать на EnvironmentFile, который используется systemd для хранения некоторых переменных. Похоже, вы указали на домашний каталог воздушного потока.
Он должен указывать на файл с именем airflow, внутри которого должна быть переменная для SCHEDULER RUNS. См. Файл воздушного потока здесь: https://github.com/apache/incubator-airflow/tree/master/scripts/systemd
У вас также есть эта ошибка: не удалось запустить задачу «начать»: нет таких файл или каталог
Это относится к этой строке: ExecStart=/bin/airflow scheduler -n ${SCHEDULER_RUNS}
Эта строка говорит, что для запуска /bin/airflow, который я предполагаю, не существует на вашем компьютере. Вероятно, это в /usr/local/bin/airflow или где-то в этом роде. Вы можете запустить which airflow, чтобы увидеть свое фактическое установленное местоположение. Вы могли бы добавить символическую ссылку для нее, чтобы / bin / airflow указывали на ваше фактическое местоположение, но не нужно чрезмерно усложнять его, по крайней мере, сначала работать. Только что проверенные, видимо, символические ссылки действительно работают в systemd https://github.com/apache/incubator-airflow/tree/master/scripts/systemd
В вашем файле systemd есть эта строка
EnvironmentFile=/home/ubuntu/airflow
Предполагается, что она должна указывать на EnvironmentFile, который используется systemd для хранения некоторых переменных. Похоже, вы указали на домашний каталог воздушного потока.
Он должен указывать на файл с именем airflow, внутри которого должна быть переменная для SCHEDULER RUNS. См. Файл воздушного потока здесь: https://github.com/apache/incubator-airflow/tree/master/scripts/systemd
У вас также есть эта ошибка: не удалось запустить задачу «начать»: нет таких файл или каталог
Это относится к этой строке: ExecStart=/bin/airflow scheduler -n ${SCHEDULER_RUNS}
Эта строка говорит, что для запуска /bin/airflow, который я предполагаю, не существует на вашем компьютере. Вероятно, это в /usr/local/bin/airflow или где-то в этом роде. Вы можете запустить which airflow, чтобы увидеть свое фактическое установленное местоположение. Вы могли бы добавить символическую ссылку для нее, чтобы / bin / airflow указывали на ваше фактическое местоположение, но не нужно чрезмерно усложнять его, по крайней мере, сначала работать. Только что проверенные, видимо, символические ссылки действительно работают в systemd https://github.com/apache/incubator-airflow/tree/master/scripts/systemd