如何在 ubuntu 16 中的 systemd 文件中安装 Airflow

如何在 ubuntu 16 中的 systemd 文件中安装 Airflow

我不太熟悉 Linux 及其术语。

我已经安装了气流。气流调度程序和网络服务器使用气流调度程序和气流网络服务器 -p 8080 进行工作。

我想使用 systemd 文件,这样它就可以在后台运行,如果失败则重新启动。

我正在遵循指示。

https://github.com/apache/incubator-airflow/tree/master/scripts/systemd

我已将以下服务文件保存到 /etc/systemd/system

  1. 气流网络服务器.service
  2. 气流调度程序.service

气流调度程序.service

[Unit]
Description=Airflow scheduler daemon
After=network.target postgresql.service mysql.service redis.service rabbitmq-server.service
Wants=postgresql.service mysql.service redis.service rabbitmq-server.service

[Service]
EnvironmentFile=/etc/sysconfig/airflow
User=ubuntu
Group=airflow
Type=simple
ExecStart=/bin/airflow scheduler -n ${SCHEDULER_RUNS}
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target

气流调度程序.service

[Unit]
Description=Airflow webserver daemon
After=network.target postgresql.service mysql.service redis.service rabbitmq-server.service
Wants=postgresql.service mysql.service redis.service rabbitmq-server.service

[Service]
EnvironmentFile=/etc/sysconfig/airflow
User=airflow
Group=airflow
Type=simple
ExecStart=/bin/airflow webserver --pid /run/airflow/webserver.pid
Restart=on-failure
RestartSec=5s
PrivateTmp=true

[Install]
WantedBy=multi-user.target

几个问题

  1. 我们是否需要确保服务 postgresql.service、mysql.service、redis.service、rabbitmq-server.service

  2. ExecStart 运行特定命令,bin/airflow webserver --pid /run/airflow/webserver.pid 正在做什么,如何在 ubuntu 中做同样的事情

  3. 我们运行气流调度程序和气流网络服务器 -p 8080

有小费吗 ??

谢谢

答案1

我们是否需要确保服务 postgresql.service、mysql.service、redis.service、rabbitmq-server.service

如果 Airflow 依赖于这些正在运行的服务的任意组合,那么您应该确保已安装适当的软件包并将其设置为运行。

据我所知,After=Wants=指令并不要求服务实际成功启动,因此如果 Airflow 不需要同时运行 PostgreSQL 和 MySQL,则不一定需要同时安装它们。

ExecStart 运行特定命令,正在bin/airflow webserver --pid /run/airflow/webserver.pid做什么,如何在 ubuntu 中做同样的事情

这将启动 Airflow Web 服务器并将进程的进程 ID (PID) 存储在/run/airflow/webserver.pid。这将在 Ubuntu 中运行,假设 Airflow 安装在/bin/airflow

我们运行气流调度程序和气流网络服务器 -p 8080

调度程序启动scheduler.service

 ExecStart=/bin/airflow scheduler -n ${SCHEDULER_RUNS}

没有提及-p 8080因为在端口 8080 上运行是默认行为

有小费吗 ??

如果您不确定某个特定systemd指令,您可以通过在以下位置查找它的记录位置:man systemd.directives

对于一般性的介绍systemd,我推荐“Systemd for systemadministrator”系列

相关内容