如何在Systemd中使用Airflow Scheduler?

时间:2018-10-23 12:15:17

标签: airflow

文档指定instructions for the integration

我想要的是,每次调度程序停止工作时,它将自己重新启动。通常,我会使用airflow scheduler -D手动启动它,但有时在没有空时会停止。

阅读文档时,我不确定配置。

GitHub包含以下文件:

airflow
airflow-scheduler.service
airflow.conf

我正在运行Ubuntu 16.04

气流安装在:

home/ubuntu/airflow

我有以下路径:

etc/systemd

文档说:

  

将它们复制(或链接)到/ usr / lib / systemd / system

  1. 复制哪些文件?
  

将airflow.conf复制到/etc/tmpfiles.d /

  1. 什么是tmpfiles.d?

  2. 气流文件中的# AIRFLOW_CONFIG=是什么?

或者换句话说...关于如何做到这一点的更多“脚踏实地”指南?

3 个答案:

答案 0 :(得分:2)

将Airflow与systemd文件集成在一起可以轻松监视守护程序,因为systemd可以在失败时重新启动守护程序。这样还可以在系统启动时自动启动气流Web服务器和调度程序。

根据当前配置编辑Airflow Githubairflow文件夹中的systemd文件,为AIRFLOW_CONFIGAIRFLOW_HOME和{{1 }}。

将服务文件(扩展名为SCHEDULER的文件)复制到VM中的.service

/usr/lib/systemd/system文件复制到/etc/tmpfiles.d/或/usr/lib/tmpfiles.d/。复制airflow.conf确保使用正确的所有者和权限(airflow.conf)创建/run/airflow。检查0755 airflow airflow是否与气流用户和气流组拥有的/run/airflow存在,如果它没有创建具有这些权限的airflow:airflow文件夹。

通过在命令行上发出/run/airflow来启用此服务,如下所示。

systemctl enable <service>

sudo systemctl enable airflow-webserver sudo systemctl enable airflow-scheduler 文件应如下所示:

airflow-scheduler.service

答案 1 :(得分:0)

您的问题有一点约会,但我刚刚发现了它,因为目前我对同一主题感兴趣。我认为您的问题的答案就在这里。

https://medium.com/@shahbaz.ali03/run-apache-airflow-as-a-service-on-ubuntu-18-04-server-b637c03f4722

答案 2 :(得分:0)

如果你的气流库安装在Python3虚拟环境中,我已经在/opt/python3_venv/中安装了python3虚拟环境路径

在 profile.d 文件中设置 Airflow Home

sudo vi /etc/profile.d/airflow.sh

export AIRFLOW_HOME=/home/airflow/airflow
export AIRFLOW_CONFIG=/home/airflow/airflow/airflow.cfg 

sudo mkdir /run/airflow/

sudo chown -R airflow:airflow /run/airflow

调度系统:

sudo vi /etc/systemd/system/airflow-scheduler.service

[Unit]
Description=Airflow Scheduler daemon

[Service]
User=airflow
Type=simple
ExecStart=/opt/python3_venv/bin/python /opt/python3_venv/bin/airflow scheduler --pid /run/airflow/scheduler.pid
Environment="PATH=/opt/python3_venv/bin:/sbin:/bin:/usr/sbin:/usr/bin"

[Install]
WantedBy=multi-user.target

网络服务器 systemd:

sudo vi /etc/systemd/system/airflow-webserver.service

[Unit]
Description=Airflow Webserver daemon

[Service]
User=airflow
Type=simple
ExecStart=/opt/python3_venv/bin/python /opt/python3_venv/bin/airflow webserver  --pid /run/airflow/webserver.pid
Environment="PATH=/opt/python3_venv/bin:/sbin:/bin:/usr/sbin:/usr/bin"

[Install]
WantedBy=multi-user.target