私はLinuxとその用語に精通していません。
エアフローを設置しました。 AirflowスケジューラとWebサーバーは、AirflowスケジューラとAirflow Webサーバー-p 8080を使用して動作します。
バックグラウンドで実行して失敗した場合は、再起動できるようにsystemdファイルを使用したいと思います。
私は指示に従っています。
https://github.com/apache/incubator-airflow/tree/master/scripts/systemd
次のサービスファイルを/etc/systemd/systemに保存しました。
- airflow webserver.service
- 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
いくつかの問題
postgresql.service、mysql.service、redis.service、Rabbitmq-server.serviceサービスを保証する必要がありますか?
ExecStart は特定のコマンドを実行します。 bin/airflow webserver --pid /run/airflow/webserver.pid が行うこと、Ubuntu で同じことをする方法
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」シリーズをお勧めします。