반응형
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
728x90
반응형
'Data > Data Engineering' 카테고리의 다른 글
[Airflow] 1. Apache Airflow란? (0) | 2024.03.05 |
---|---|
[Airflow] 데몬으로 실행 설정 오류 : The unit airflow-webserver.service has entered the 'failed' state with result 'resources' (0) | 2023.04.23 |
[Snowflake] Data Applications 뱃지 획득 (0) | 2023.04.13 |
[Snowflake] Badge 1 획득 (0) | 2023.01.08 |
[Airflow] Airflow 설치하기(pip) (0) | 2023.01.08 |