Milky's note

[Airflow] 설치 (by.GCP 환경) 본문

DevOps/Airflow

[Airflow] 설치 (by.GCP 환경)

밀뿌 2024. 8. 22. 19:42

 

GCP에 Airflow를 설치하려면 당연히 인스턴스가 있어야 한다.

혹시나 인스턴스 생성이 안되어 있다면 이전 게시글을 참조하면 된다.

 

https://milkyspace.tistory.com/125

 

[GCP] VM Instance 생성 및 고정 IP 할당

GCP에 VM Instance를 생성하는 법은 간단한 클릭 몇 번만으로 할 수 있다. 먼저 GCP에 로그인 한 후,[Compute Engine] → [VM 인스턴스] → [인스턴스 만들기] 를 클릭한다. 1. 머신 구성그리고 서버 용도에

milkyspace.tistory.com

 

1. 사전 작업

GCP에 Airflow를 설치하기 전에 먼저 해주어야 할 작업이 있다.

계정 생성과 Python을 설치해 주어야 한다.

Service를 사용하지 않으면 계정은 굳이 만들지 않아도 되긴 하지만 나는 Service를 만들어서 띄우기 위해 계정을 생성하려고 한다.

 

  • Airflow 계정 생성

Airflow 계정을 생성하고 비밀번호를 설정해주었다.

sudo groupadd airflow
sudo useradd -m -d /home/airflow -g airflow airflow 
sudo passwd airflow

 

 

  • Python, pip 설치

Python과 이후 라이브러리들을 쉽게 받기 위해 pip도 함께 설치해준다.

그런데 새로 생성한 계정에 sudo 권한이 없어서 먼저 sudo 추가를 해준다.

 

Python, pip 설치 및 버전 확인을 해준다.

위에서 생성한 airflow 계정으로 설치를 하는게 맞는데 계정 로그인을 다시 안해서.. root 권한으로 설치한 스크린샷으로 대체하였다.. ㅎ

 

추가로 이후 airflow dag에서 사용할 라이브러리들도 미리 설치하였다.

pip install google-analytics-data
pip install pandas
pip install Python-dateutil
pip install google-cloud-bigquery
....

 

 

2. Airflow 설치

Airflow에 공식 가이드 문서가 있어서 이 docs를 참조해서 설치하였다.

https://airflow.apache.org/docs/apache-airflow/stable/start.html

 

Quick Start — Airflow Documentation

 

airflow.apache.org

 

airflow@airflow-server:~# echo 'export AIRFLOW_HOME=~/airflow' >> ~/.bash_profile
airflow@airflow-server:~# source ~/.bash_profile

airflow@airflow-server:~# AIRFLOW_VERSION=2.9.1
airflow@airflow-server:~# PYTHON_VERSION="$(PYTHON3 --version | cut -d " " -f 2 | cut -d "." -f 1-2)"
airflow@airflow-server:~# CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"
airflow@airflow-server:~# sudo pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL} "

airflow@airflow-server:~# airflow standalone

 

설치 당시(2024.05) 최신 버전이었던 2.9.1을 설치해주었다.

 

맨 밑에 airflow standalone 명령어를 입력하면,

Airflow는 $AIRFLOW_HOME폴더를 생성하고 기본 값으로 "airflow.cfg" 파일을 생성하여 빠르게 작업할 수 있다.

환경 변수를 사용하여 기본 값을 재정의 할 수 있게 된다. 또한 airflow 서버가 기동된다.

 

성공적으로 설치를 진행했다면, Listening 정보, username, password 를 확인할 수 있다.

 

위에서 기동된 airflow에 접속을 해보려고 하는데 맨 처음 GCP 인스턴스를 생성했으면 아무런 방화벽 정책이 적용되어 있지 않을 것이다. 그래서 방화벽 규칙 추가부터 해주어야 한다.

[VPC 네트워크] → [방화벽]을 클릭해준다.

 

방화벽 규칙 만들기를 클릭해주고 아래처럼 airflow default port인 8080을 허용해준다.

 

허용을 해주고 서버의 IP(혹은 127.0.0.1 혹은 localhost):8080으로 접속하면 아래처럼 airflow 로그인 화면이 보일 것이다. 여기서 위에서 알려준 계정(admin)으로 접속을 하면 성공적으로 설치된 것이다.

 

일단 설치는 완료되었지만 추가로 작업해주어야 할 사항이 있다.

💡 airflow의 default db는 sqlite이다.
sqlite는 task 병렬 처리가 되지 않아서 싱글 작업만 할 경우에는 default db를 사용해도 무관하지만
내가 개발한 파이프라인에는 task들이 병렬로 수행해야 하는 로직이 있다.
이러한 경우에 airflow의 db를 MySQL 이나 PostgreSQL로 변경해주어야 한다.
그래서 airflow가 설치된 서버에 MySQL 을 설치하고 airflow의 config 파일 변경 작업이 필요하다.
MySQL 설치부터 환경 설정은 다음 게시글에서 작성하려고 한다.
Comments