![如何在 ubuntu 16 中的 systemd 文件中安装 Airflow](https://linux22.com/image/106784/%E5%A6%82%E4%BD%95%E5%9C%A8%20ubuntu%2016%20%E4%B8%AD%E7%9A%84%20systemd%20%E6%96%87%E4%BB%B6%E4%B8%AD%E5%AE%89%E8%A3%85%20Airflow.png)
我不太熟悉 Linux 及其术语。
我已经安装了气流。气流调度程序和网络服务器使用气流调度程序和气流网络服务器 -p 8080 进行工作。
我想使用 systemd 文件,这样它就可以在后台运行,如果失败则重新启动。
我正在遵循指示。
https://github.com/apache/incubator-airflow/tree/master/scripts/systemd
我已将以下服务文件保存到 /etc/systemd/system
- 气流网络服务器.service
- 气流调度程序.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
几个问题
我们是否需要确保服务 postgresql.service、mysql.service、redis.service、rabbitmq-server.service
ExecStart 运行特定命令,bin/airflow webserver --pid /run/airflow/webserver.pid 正在做什么,如何在 ubuntu 中做同样的事情
我们运行气流调度程序和气流网络服务器 -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”系列