본문 바로가기
Data/Data Engineering

[Airflow] Airflow를 데몬(서비스)로 실행 설정 (Ubuntu)

by DenverAlmighty 2023. 4. 23.
반응형

0. 실행 환경

OS : Ubuntu 22.04.2 LTS

Airflow version : 2.5.0

 

1. 설정하기

Airflow How-to Guides 에보면 /usr/lib/systemd/system 에있는 파일 복사해다 쓰고,

AIRFLOW_HOME과 AIRFLOW_CONFIG 를 수정하면 된다고 나와있다. 근데 Redhat 기반 시스템 기준이고 그렇지 않은 경우에는 적절한 변경이 필요하다고한다. 

 

1) 서비스 생성

아래처럼 /etc/sysconfig/system에 .service 파일을 만든다.

(/lib/systemd/system 에 있는 파일 복사해서 수정해도된다.)

 

# airflow-scheduler 서비스 생성
sudo touch /etc/systemd/system/airflow-scheduler.service

# airflow-webserver 서비스 생성
sudo touch /etc/systemd/system/airflow-webserver.service

 

 

2) 서비스 설정 수정

Ubuntu에는 /etc/sysconfig 가 없다. 대신 /etc/environment 에 AIRFLOW_HOME과 AIRFLOW_CONFIG 를 등록해줘야한다.

(안하면 오류남) 

그리고 ExecStart는 각자 설치한 환경에 맞는 Airflow를 실행 명령어/경로를 넣어주면 된다.

 

airflow-scheduler.service 설정

vi /etc/systemd/system/airflow-scheduler.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/environment
User=airflow
Group=airflow
Type=simple
ExecStart=/usr/local/bin/airflow scheduler
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.targe

 

airflow-webserver.service 설정

vi /etc/systemd/system/airflow-webserver.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/environment
User=airflow
Group=airflow
Type=simple
ExecStart=/usr/local/bin/airflow webserver --pid /opt/airflow/airflow-webserver.pid
Restart=on-failure
RestartSec=5s
PrivateTmp=true

[Install]
WantedBy=multi-user.target

설정 값 설명

Description : 설명
After: 서비스 종속성 있는 경우, 여기 설정한 서비스들 실행 후 실행됨
EnvironmentFile : 서비스가 환경 변수를 찾을 파일
User: 여기 지정된 사용자 ID가 서비스를 호출
ExecStart : 실행할 명령이나 스크립트 경로 지정
Restart : 장애 발생 시 재실행 설정
RestartSec : 재시작 대기 시간(Sec) 설정. default 100ms

다른 설정 설명

 

 

3) 환경변수 설정

vi /etc/environment

# 아래 내용 추가 

AIRFLOW_CONFIG=</opt/airflow/airflow.cfg>
AIRFLOW_HOME=</opt/airflow>

 

4) 실행

# 서비스 설정 반영
sudo systemctl daemon-reload

# 서비스 활성화
sudo systemctl enable airflow-scheduler.service
sudo systemctl enable airflow-webserver.service

# 서비스 실행
sudo systemctl start airflow-scheduler.service
sudo systemctl start airflow-webserver.service

기타

# 서비스 상태
sudo systemctl status airflow-scheduler.service
sudo systemctl status airflow-webserver.service

# 서비스 중지
sudo systemctl stop airflow-scheduler.service
sudo systemctl stop airflow-webserver.service

# 서비스 재실행
sudo systemctl restart airflow-scheduler.service
sudo systemctl restart airflow-webserver.service

# 서비스 로그
journalctl -u airflow-scheduler
journalctl -u airflow-webserver

How To Use Systemctl to Manage Systemd Services and Units

 

참고 자료

Airflow How-to Guids : Running Airflow with systemd

Run Apache-Airflow as a Service on Ubuntu 18.04 server

How to Run Apache Airflow as Daemon Using Linux “systemd”

728x90
반응형