Airflow 릴리즈 정보 확인 : https://airflow.apache.org/announcements/
Running Airflow in Docker : https://airflow.apache.org/docs/apache-airflow/2.9.0/howto/docker-compose/index.html#
1. Fetching docker-compose.yaml
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.9.0/docker-compose.yaml'
airflow-scheduler - 스케줄러는 모든 작업(task)과 DAG를 모니터링하고, 각 작업의 종속성이 완료되면 해당 작업 인스턴스를 실행
airflow-webserver - 웹서버는 http://localhost:8080에서 사용, port 변경 가능
airflow-worker - 스케줄러가 제공하는 작업을 실행하는 워커
airflow-triggerer - Triggerer는 deferrable task(대기 가능한 작업)를 위한 이벤트 루프를 실행
airflow-init - 초기화 서비스
postgres - 메인 DB → MySQL로 바꾸는 방법 존재
redis - 스케줄러에서 워커로 메시지를 전달하는 브로커 역할
* Optionally, you can enable flower by adding --profile flower option, e.g. docker compose --profile flower up, or by explicitly specifying it on the command line e.g. docker compose up flower.
flower - The flower app for monitoring the environment. It is available at http://localhost:5555.
docker-compose.yaml 파일에서 airflow-webserver ports 부분을 변경할 수 있다.
2. Initializing Environment
컨테이너에 있는 일부 디렉터리는 마운트 되어있기 때문에 미리 폴더를 만들어줘야한다.
./dags - DAG 파일 추가
./logs - 작업 실행 및 스케줄러의 로그 저장 폴더
./config - 커스텀 로그 파서를 추가하거나 airflow_local_settings.py 파일을 추가해 클러스터 정책을 구성 가능
./plugins - 커스텀 플러그인 추가
mkdir -p ./dags ./logs ./plugins ./config
echo -e "AIRFLOW_UID=$(id -u)" > .env
cat .env
AIRFLOW_UID=1004
3. Initialize the database
docker compose up airflow-init
4-1. Running Airflow
docker compose up
ID : airflow
PWD : airflow
4-2 Running flower
Airflow 클러스터에서 작업 상태 및 진행 상황을 모니터링하기 위한 웹 기반 모니터링 툴
Flower는 주로 Airflow에서 사용되는 Celery Executor와 함께 사용되며, Celery의 작업 및 워커 상태를 실시간으로 모니터링할 수 있는 기능을 제공
<주요 기능>
작업(task) 상태 모니터링: 현재 실행 중인 작업, 성공 또는 실패한 작업을 실시간으로 확인
워커(worker) 상태 확인: 워커의 상태, 사용 중인 메모리, CPU 자원 등을 모니터링
작업 리트라이 및 강제 실행: 실패한 작업을 Flower UI에서 직접 재시도하거나 다시 실행
실시간 로그: 각 작업의 로그를 실시간으로 확인
Celery 큐 모니터링: 각 큐의 작업 대기 상태를 볼 수 있어 작업이 병목을 일으키고 있는지 쉽게 파악
docker compose up flower
5. Stop and Delete Container
docker compose down
'DevOps' 카테고리의 다른 글
[Airflow] SlackAPIPostOperator 설정 (0) | 2024.10.24 |
---|---|
[Airflow] Connection 연결 시 [TEST] 버튼 비활성화 해결방법 (0) | 2024.10.22 |
Dockerfile을 이용한 코드에 의한 서버 구축 (0) | 2024.10.21 |
[Vector] Logstash 대체안 Vector (0) | 2024.04.19 |
[Grafana] Customizing Grafana Alerting Notification Templates (0) | 2024.03.08 |