일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 개발자
- 파이썬
- Django
- 에어플로우 기초강의
- Python
- c++
- 장고
- 개발자취업
- 장고 튜토리얼
- docker
- 웹개발
- ADP
- 도커
- mlops
- 쇼핑몰예제
- 파이썬 장고
- 프로그래밍
- 개발언어
- 인공지능
- c
- 파이썬강의
- flask
- cpp
- 장고 기초 강의
- 기초강의
- 예제프로젝트
- airflow
- 도커 컴포즈
- C언어
- 플라스크
- Today
- Total
TITEDIOS 편한 코딩
[MLOps] 11강 - 멀티노드(Multi-node)에서 Airflow 구축 (2) [Airflow Multi-Node System 구축 가이드 및 사례] 본문
[MLOps] 11강 - 멀티노드(Multi-node)에서 Airflow 구축 (2) [Airflow Multi-Node System 구축 가이드 및 사례]
TitediosKW 2025. 1. 24. 19:00목차
- virtualbox 가상머신에서 shared folder 설정
- Airflow container 실행
- Airflow 실행 확인
- 결론
이번 포스팅에서는 VirtualBox 가상머신에서 Shared Folder를 설정하고, Airflow 컨테이너를 실행한 뒤 Tutorial DAG를 복사 및 실행하는 과정을 다룹니다. 이 가이드는 VirtualBox에서 데이터 워크플로우 자동화를 테스트 해보기 위한 실용적인 가이드입니다.
1. VirtualBox 가상머신에서 Shared Folder 설정
1.1 Shared Folder 설정
VirtualBox를 열고 가상머신을 선택한 후, Settings(설정)으로 이동합니다(가상 머신이 종료된 상태에서 진행해야 합니다). Shared Folders 탭을 클릭하고, Add Folder 아이콘을 선택합니다
공유하려는 폴더를 선택한 후, 다음 옵션을 설정합니다:
- Folder Path: 호스트 머신에서 공유할 경로 선택
- Mount point: 가상 머신 내 shared folder의 위치. (저의 경우 '/home/user/shared/'로 하였습니다.)
- Auto-mount: 옵션 체크
1.2 가상머신 내 마운트 확인
가상머신이 부팅된 후, 터미널에서 공유 폴더가 마운트되었는지 확인합니다. Mount point로 지정한 위치에 폴더가 확인되면 됩니다.
2. Airflow 컨테이너 실행
Airflow는 컨테이너 환경에서 쉽게 실행할 수 있습니다. Docker를 사용해 Airflow를 실행하는 방법은 다음과 같습니다.
2.1 Docker Compose 파일 준비
호스트 머신(여러분이 작업하는 PC)에서 shared folder 로 지정한 폴더가 있습니다. 그 폴더 아래에 이전에 만들었던 docker-compose.yaml파일을 복사할 것 입니다. docker-compose.yaml 파일은 이전 글에서 확인하실 수 있습니다.
https://cozy-dev-area.tistory.com/104
이렇게 호스트 머신에 파일을 복사하면 가상머신에서도 확인할 수 있습니다.
2.2 .env 파일 만들기
docker-compose.yaml 에서 사용할 .env 파일을 만들 것 입니다. 이 파일도 공통으로 사용하기 때문에 호스트 머신의 폴더에 만들어주시면 편하게 사용하실 수 있습니다.
하나 말씀 드리자면 Rocky9에서 .env 의 HOSTNAME 환경변수가 docker-compose.yaml 에 적용되지 않는 현상을 발견했습니다. 저는 HOST로 변경하여 적용했습니다. 또한 worker 노드에서는 HOST를 WORKER001, WORKER002 로 명명하여 적용하시면 되겠습니다.
AIRFLOW_PROJ_DIR='./'
#HOSTNAME=MASTERNODE
HOST=MASTERNODE
MASTER_NODE_IP=10.0.2.100
WORKER_01_IP=10.0.2.101
WORKER_02_IP=10.0.2.102
FERNET_KEY=
SECRET_KEY=
중간에 FERNET_KEY와 SECRET_KEY가 비어있습니다. 이 비어있는 키는 보안과 관련된 키로 직접 생성하여 채워넣으시면 됩니다. 아래의 코드를 실행시켜서 FERNET_KEY(첫번째 결과)와 SECRET_KEY(두번째 결과)를 각각 .env 파일에 입력합니다.
# This for AIRFLOW__CORE__FERNET_KEY
from cryptography.fernet import Fernet
fernet_key = Fernet.generate_key()
print(fernet_key.decode())
# This for AIRFLOW__WEBSERVER__SECRET_KEY
import os
print(os.urandom(16))
2.3 컨테이너 실행
docker-compose.yaml 및 .env 복사
이전에 작업을 해 두었던 docker-copmose.yaml 파일과 .env 파일을 복사하겠습니다. 가상머신에 접속해서 airflow 를 실행할 곳에 두 파일을 복사합니다.
sudo cp shared/docker-compose.yaml /home/user/works/ && sudo cp shared/.env /home/user/works/
Master Node 에서 Airflow 컨테이너 실행
가장 먼저 Master 노드에서 Airflow 컨테이너를 실행하겠습니다. 가장 먼저 해야할 일은 .env 파일에 AIRFLOW_UID
환경 변수를 지정하는 것입니다. AIRFLOW_UID를 지정하지 않으면 기본값이 입력되지만 Airflow를 실행하는 UID를 입력해 주는 것이 좋으므로 아래 명령은 실행하는 것이 좋습니다.
echo "" >> .env && echo -e "AIRFLOW_UID=$(id -u)" >> .env
Docker Compose를 이용하여 Airflow 컨테이너를 실행합니다:
docker compose up airflow-init
docker compose up -d airflow-webserver airflow-scheduler airflow-triggerer flower
실행 결과 입니다 docker ps
명령을 실행하면 확인이 가능합니다. 모든 컨테이너가 정상적으로 동작하는 것을 확인할 수 있습니다.
Worker Node에서 Airflow-worker 컨테이너 실행
이제 Worker Node에서 Airflow-worker 컨테이너를 실행할 것입니다. Worker 노드는 2개를 만들었기 때문에 2개의 노드에서 모두 같은 작업을 수행해야 합니다.
먼저 docker-compose.yaml파일과 .env 파일을 복사해야 합니다. 저는 Worker 노드를 처음 실행하는 것 같습니다. 작업 공간이 만들어져 있지 않았습니다. 만약, 여러분도 저와 같으시다면 작업공간을 만들어 준 다음 shared folder에서 작업공간으로 파일을 복사하시기 바랍니다.
cd ~ && mkdir works
sudo cp shared/docker-compose.yaml works/
sudo cp shared/.env works/
# 권한 문제가 발생 시
sudo chown user:user .env
sudo chown user:user docker-compose.yaml
.env 파일에 AIRFLOW_UID
환경 변수를 지정하고 HOSTNAME 을 변경합니다:
echo "" >> .env && echo -e "AIRFLOW_UID=$(id -u)" >> .env
vi .env
# ...
# HOSTNAME=WORKER001 # worker 노드 1
# HOSTNAME=WORKER002 # worker 노드 2
# ...
이제 Docker Compose를 이용하여 Airflow-worker 컨테이너를 실행합니다:
docker compose up -d airflow-worker
3. Airflow 실행 확인
Airflow 컨테이너가 멀티 노드 환경에서 적절히 동작하는지 확인하기 위해서는 두 가지 웹 페이지를 확인하는 방법이 있습니다(앞서 docker ps
명령을 통해 컨테이너가 동작하는 것을 확인한 다음에 확인하는 작업입니다).
Airflow web 접속
localhost:8080
에 접속하여 정상적으로 웹 페이지가 동작하는지 확인해 보도록 합시다. 접속하고 airflow / airflow 계정으로 로그인을 하시면 아래와 같은 화면을 보실 수 있습니다. 예제를 띄우도록 설정했다면 예제 DAG 들이 보일 것입니다.
Flower 접속
localhost:5555
에 접속하여 정상적으로 웹 페이지가 동작하는지 확인해 보도록 합시다. Airflow는 celery라는 비동기 작업 큐를 사용합니다. 쉽게 말해 작업을 분배하고 수행하는 기능을 celery로 하게 된다는 말입니다. 이 Celery는 flower라는 관리 도구를 이용해 관리하는데 우리는 이 flower를 확인하여 Worker 노드에 Airflow-worker가 정상적으로 동작하는지 확인하는 작업을 수행할 것입니다.
WORKER001, WORKER002 노드가 online으로 정상 동작하는 것을 확인할 수 있습니다.
결론
이번 튜토리얼에서는 VirtualBox 가상머신에서 Shared Folder를 설정하고, Docker를 이용해 Airflow 컨테이너를 실행한 뒤 Tutorial DAG를 성공적으로 실행하는 과정을 살펴보았습니다. 이 과정을 통해 데이터 파이프라인을 간단히 관리하고 실행하는 방법을 이해할 수 있었습니다. 추가적인 DAG 작성과 설정을 통해 여러분의 워크플로우를 확장해보세요!!!
궁금한 점이나 추가로 다루었으면 하는 주제가 있다면 댓글로 남겨 주세요.
도움이 되셨다면 공감 부탁드리겠습니다. 여러분의 공감이 정말 큰 힘이 됩니다.
감사합니다! 🙌