Ubuntu 16のsystemdファイルにAirflowをインストールする方法

Ubuntu 16のsystemdファイルにAirflowをインストールする方法

私はLinuxとその用語に精通していません。

エアフローを設置しました。 AirflowスケジューラとWebサーバーは、AirflowスケジューラとAirflow Webサーバー-p 8080を使用して動作します。

バックグラウンドで実行して失敗した場合は、再起動できるようにsystemdファイルを使用したいと思います。

私は指示に従っています。

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

次のサービスファイルを/etc/systemd/systemに保存しました。

  1. airflow webserver.service
  2. airflowscheduler.service

airflowscheduler.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

airflowscheduler.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. AirflowスケジューラとAirflow Webサーバー-p 8080を実行します。

どのようなヒントがありますか? ?

ありがとう

答え1

postgresql.service、mysql.service、redis.service、Rabbitmq-server.serviceサービスを保証する必要がありますか?

Airflowがこれらの実行中のサービスの組み合わせに依存している場合は、適切なパッケージがインストールされ実行されるように設定されていることを確認する必要があります。

私が知っている限り、ディレクティブはサービスが実際に正常に起動する必要はないので、AirflowでPostgreSQLとMySQLの両方を実行する必要がない限り、両方をインストールする必要はありませんAfter=Wants=

ExecStart は特定のコマンドを実行します。bin/airflow webserver --pid /run/airflow/webserver.pidそのコマンドが実行するタスク、Ubuntuで同じタスクを実行する方法

これにより、Airflow Webサーバーが起動し、プロセスのプロセスID(PID)が保存されます/run/airflow/webserver.pid。 Airflowがインストールされていると仮定すると、Ubuntuで実行されます。/bin/airflow

AirflowスケジューラとAirflow Webサーバー-p 8080を実行します。

スケジューラはscheduler.service次から始まります。

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

-p 8080だから言及されていないポート8080で実行するのがデフォルトの動作です。

どのようなヒントがありますか? ?

特定のディレクティブについて不明な場合は、systemd以下を参照して、そのディレクティブが文書化されている場所を見つけることができます。man systemd.directives

一般的な紹介としては、systemd「システム管理者のためのSystemd」シリーズをお勧めします。

関連情報