Cloud VM에 Apache Airflow 설치하기

NewNewDaddy·2026년 3월 22일

AIRFLOW

목록 보기
7/7
post-thumbnail

✅ 1) Airflow VM 최소/권장 사양

👉 공식 문서

Airflow는 여러 컨테이너(Webserver, Scheduler, DB, Redis 등)가 함께 동작하기 때문에, VM 리소스가 너무 작으면 설치는 되더라도 실행이 불안정할 수 있습니다.

구분CPURAM디스크
최소2 vCPU4GB-
권장2 vCPU8~16GB20GB 이상

✅ 2) Docker 설치

VM에 Docker 및 Docker Compose 플러그인을 설치합니다.
아래 스크립트를 파일로 저장 후 실행하면 한 번에 설치할 수 있습니다.

docker_install.sh

파일 생성 후 실행 → bash docker_install.sh

#!/bin/bash

set -e

echo "=== Docker 및 Docker Compose 설치 스크립트 ==="

# 1. 기존 Docker 제거
echo "[1/6] 기존 Docker 제거..."
sudo apt-get remove -y docker docker-engine docker.io containerd runc || true

# 2. 패키지 업데이트 및 의존성 설치
echo "[2/6] 패키지 업데이트 및 의존성 설치..."
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release

# 3. Docker 공식 GPG 키 추가
echo "[3/6] Docker GPG 키 추가..."
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 4. Docker 리포지토리 등록
echo "[4/6] Docker 리포지토리 추가..."
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 5. Docker Engine 설치
echo "[5/6] Docker 설치..."
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 6. 설치 확인
echo "[6/6] 설치 확인..."
docker --version
docker compose version

echo "✅ Docker 및 Docker Compose 설치 완료!"

✅ 3) VM 방화벽 설정

Airflow Web UI는 기본적으로 8080 포트에서 실행됩니다.
따라서 VM 외부에서 웹 UI에 접속하려면 클라우드의 방화벽 설정 에서 8080 포트를 허용해야 합니다.

  • AWS → VPC 보안그룹(Security Group) 설정
  • GCP → VPC 방화벽 규칙 설정 (참고 영상)

✅ 4) Airflow 설치 (Docker Compose 기반)

Airflow는 공식 문서에서 제공하는 docker-compose.yaml 파일로 빠르게 설치할 수 있습니다.

👉 공식 문서


1) 작업 디렉토리 생성 및 이동

Airflow 관련 파일을 관리할 디렉토리를 만들고 이동합니다.

mkdir Apache_Airflow
cd Apache_Airflow
2) docker-compose.yaml 다운로드

아래 명령어로 Airflow 공식 docker-compose.yaml 파일을 다운로드합니다.

curl -LfO 'https://airflow.apache.org/docs/apache-airflow/3.1.5/docker-compose.yaml'
3) 예제 DAG 로딩 비활성화

docker-compose.yaml 파일에서 아래 설정을 찾아 값을 변경합니다.

  • AIRFLOW__CORE__LOAD_EXAMPLES: 'true''false'
4) 필요한 폴더 및 .env 파일 생성

Airflow가 기본적으로 사용하는 디렉토리 및 파일들을 만들어줍니다. (디렉토리 4개 + 파일 1개)

mkdir -p ./dags ./logs ./plugins ./config
echo -e "AIRFLOW_UID=50000" > .env
5) Airflow 초기화 수행

초기 DB 셋업 등을 진행합니다.
명령 실행 후 터미널로 돌아올 때까지 기다립니다.

sudo docker compose up airflow-init
6) Airflow 실행

전체 컨테이너를 실행합니다.

sudo docker compose up -d
7) 모든 컨테이너가 정상 상태(healthy) 될 때까지 대기

Airflow는 여러 컨테이너가 동시에 떠야 정상적으로 동작합니다.
아래 명령어로 컨테이너 상태를 모니터링합니다.

sudo watch -n 1 docker ps

총 7개 컨테이너가 모두 healthy 상태가 될 때까지 기다립니다.

8) Airflow UI 접속

'healthy' 확인 후 VM의 공인 IP를 확인한 후 아래 URL로 접속합니다.

http://[Compute Engine 공인 IP]:8080

ID : airflow
PW : airflow

✅ 5) Airflow 작업 디렉토리 권한 변경

Docker Compose로 Airflow를 설치하면 dags/, logs/, plugins/, config/ 등의 폴더를 컨테이너와 volume(bind mount) 으로 연결하게 됩니다.
이 과정에서 컨테이너가 파일을 생성하거나 수정하면, 파일 소유자가 내 계정이 아닌 다른 사용자(root/airflow) 로 잡히는 경우가 있어 VM에서 직접 편집할 때 권한 오류(Permission denied)가 발생할 수 있습니다.

이를 해결하려면, 아래 명령어를 통해 Airflow 작업 디렉토리의 소유권을 현재 로그인한 사용자 계정으로 변경해주면 됩니다.

sudo chown -R "${USER:-$(id -un)}" .
profile
데이터 엔지니어의 작업공간 / #PYTHON #CLOUD #SPARK #AWS #GCP #NCLOUD

0개의 댓글