# 배포하기

Airflow를 설치했으니 이제 배포하여 실행해봅시다.

Airflow를 실행하기 위해서는 다음의 작업들을 해야합니다.

  1. 프로젝트 루트 경로 설정
  2. 설정 및 Meta Database 초기화
  3. 관리자 계정 생성
  4. Webserver 실행
  5. Scheduler 실행

# 프로젝트 루트 경로 설정

Airflow 관련 설정 및 파일들을 어디 경로에 담을지 먼저 설정해야 합니다.

AIRFLOW_HOME 이라는 환경변수 값으로 프로젝트 경로를 지정해주면 됩니다. (앞으로 환경 변수에 대한 표시는 $AIRFLOW_HOME 처럼 $ 를 붙이겠습니다.)

직전에 생성한 디렉토리 my-airflow-project에 진입한 상태에서 다음 명령어를 입력합니다.

# 현재 경로를 Airflow 프로젝트의 루트 경로로 설정합니다.
$ export AIRFLOW_HOME=.
1
2

# 설정 및 Meta Database 초기화

다음으로 Airflow에서 사용하는 Meta Database를 초기화 해줍니다. Meta Database는 기본적으로 SQLite를 사용하며, $AIRFLOW_HOME/airflow.db 에 기록됩니다.

다음 명령어를 입력합니다.

$ airflow db init
1

위 명령의 결과로, 설정 파일 및 Airflow와 관련된 파일들은 $AIRFLOW_HOME 경로에 다음처럼 생성됩니다.

$ ls -al
total 1384
drwxr-xr-x  7 heumsi  staff     224  1  9 20:16 .
drwxr-xr-x  5 heumsi  staff     160  1  9 20:11 ..
drwxr-xr-x  6 heumsi  staff     192  1  9 20:00 .venv
-rw-r--r--  1 heumsi  staff   43865  1  9 20:16 airflow.cfg
-rw-r--r--  1 heumsi  staff  638976  1  9 20:16 airflow.db
drwxr-xr-x  3 heumsi  staff      96  1  9 20:16 logs
-rw-r--r--  1 heumsi  staff    4695  1  9 20:16 webserver_config.py
1
2
3
4
5
6
7
8
9

# 관리자 계정 생성

Airflow는 인증/인가 기본 방식으로 RBAC 방식을 사용합니다. 초기에 사용할 관리자 계정을 만들어봅시다.

다음 명령어를 입력합니다. (role 을 제외한 나머지 값들은 다른 값으로 바꾸셔도 됩니다.)

$ airflow users create \
	--username admin \
	--password 1234 \
    --firstname heumsi \
    --lastname jeon \
    --role Admin \
    --email heumsi@naver.com
1
2
3
4
5
6
7

# Webserver 실행

Airflow Webserver는 Web UI를 제공합니다. Webserver를 실행하기 위해서 셸에서 다음 명령어를 입력합니다.

$ airflow webserver --port 8080
1

image-20220109204105305

이제 http://0.0.0.0:8080 에 접속해보면 다음처럼 Airflow Web UI를 볼 수 있습니다.

image-20220109204147240

아까 만들어준 관리자 계정으로 로그인합니다. 이 글을 그대로 따라하셨다면 Admin / 1234 로 로그인 하시면 됩니다.

로그인 이후 다음과 같은 메인 화면을 볼 수 있습니다.

image-20220109204211383

무엇이 있나 찬찬히 살펴보셔도 좋습니다.

일단 페이지 상단 노란색 박스에 다음과 같은 메시지가 보입니다.

The scheduler does not appear to be running.
The DAGs list may not update, and new tasks will not be scheduled.
1
2

Scheduler를 실행시키지 않았기 때문에 나는 에러 메시지입니다. 이제 Scheduler를 실행시켜봅시다.

# Scheduler 실행

Webserver가 사용자에게 UI를 제공한다면, Scheduler는 실행해야할 일들의 스케쥴링 작업을 담당합니다. 즉 실제 대부분의 중요한 일들은 Scheduler가 담당한다고 볼 수 있습니다.

이전에 Webserver를 실행시켰던 셸은 그대로 두고, 새로운 셸을 실행합니다. Airflow 프로젝트 디렉토리에 진입 후 다음 명령어를 입력합니다.

# 가상 환경 진입
$ source .venv/bin/activate

# Airflow 프로젝트 루트 경로 지정
$ export AIRFLOW_HOME=.

# Scheduler 실행
$ airflow scheduler
1
2
3
4
5
6
7
8

image-20220109204654304

Scheduler를 정상적으로 실행시켰습니다. 이제 다시 Web UI로 돌아가서 새로 고침을 해보면 상단에 Scheduler와 관련된 에러 메시지가 없어진 것을 볼 수 있습니다.

image-20220109204736758

이렇게 Airflow 배포를 완료했습니다!

Last Updated: 3/1/2022, 1:26:42 PM