본문 바로가기
Apache/Airflow

GCP VM으로 Airflow 구축하기

by 잼있는잼니 2023. 6. 4.

이전에는 로컬에서의 Airflow를 구축했으니, 이번에는 구글 클라우드 플랫폼의 VM(가상머신)을 이용한 Airflow를 구축(?)하는 시간이다.

 


구글 클라욷 플랫폼에서 새로운 프로젝트를 만들어준다.


Airflow를 작동시킬 메인 VM을 만들어준다.(vCPU : 2개, RAM : 8GB를 main node로)

Compute engine의 VM 인스턴스에서 인스턴스 만들기를 눌러 만들어준다.

(worker node는 vCPU : 2개, RAM : 4GB로 만들어준다)

(리전과 영역은 만약 기존에 쓰는 다른 서비스가 있다면, 맞춰주는게 좋은것 같다)

우분투가 편해서 우분투로 설정하고, 방화벽에서 HTTP/HTTPS의 트래픽 허용을 체크한다.

이렇게 만들어주면 main-node VM 생성..


 

인스턴스 생성이 완료가 되었다면 SSH를 통하여 연결하고, 필수적인 기본 환경을 설치해준다.

(Airflow, Postgresql, Rabbitmq)

airflow 설치해주기
celery도 설치

sudo apt-get update
sudo apt-get install postgresql

# postgresql 설치해주기

sudo apt-get install rabbitmq-server

# rabbitmq 설치해주기

postgresql 설치해주기

 

rabbitmq 설치해주기

# 대쉬보드 활성화
sudo rabbitmq-plugins enable rabbitmq_management

# 시작시 서버 자동 활성화
sudo systemctl enable rabbitmq-server

# 유저 생성, 관리자 부여, 권한 부여
# 유저 생성
sudo rabbitmqctl add_user admin admin

# 관리자 부여
sudo rabbitmqctl set_user_tags admin administrator

# 권한부여
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

rabbitmq 유저 생성~


rabbitmq가 잘 구동되는지 확인

 

(모든 인스턴스의 경우)

GCP의 VCP 네트워크 -> 방화벽 -> 방화벽 규칙 만들기 -> 이름부여, 모든 인스턴스 선택

-> IPv범위 설정(테스트라서 0.0.0.0/0 으로 설정함) -> 포트는 TCP선택후 15672 입력 후 만들기

(메인노드의 외부IP:15672치면 잘 들어가는걸 볼 수 있다.)

 

(태그시 태그 이름 설정의 경우)

GCP의 VCP 네트워크 -> 방화벽 -> 방화벽 규칙 만들기 -> 이름부여, 태그(태그시 태그 이름 설정)

-> IPv범위 설정(테스트라서 0.0.0.0/0 으로 설정함)

-> (태그 설정시) 인스턴스로 돌아가서 main-node 선택 -> 수정 클릭 -> 네트워크 태그에 설정한 태그이름 입력후 저장 -> 끝!(메인노드의 외부IP:15672치면 잘 들어가는걸 볼 수 있다.) 

이런 정보를 볼 수 있다!


airflow db init을 진행한다

이제 airflow.cfg파일을 수정하기

 

executor = CeleryExecutor

load_examples = False

sql_alchemy_conn = postgresql+psycopg2://postgres_id:postgres_pass@localhost/airflow_db

broker_url = amqp://rabbitmq_id:rabbitmq_password@localhost:5672/

result_backend = db+postgresql://postgres_id:postgres_pass@localhost/airflow_db

# 위처럼 airflow.cfg 파일 변경해줃기

airflow user까지 만들기!!(전에 포스팅한것 참조)


rabbitmq와 똑같이 포트별로 방화벽 규칙 만들어주기!

 

airflow webserver : 8080

postgresql : 5432

flower : 5555


위와 같이 했다면, 이제 worker node의 설정을 진행하면 된다.

 

main node에서의 설정중 airflow, postgresql, celery를 설치한다.

그리고 두 VM의 NTP 설정을 통하여 시간대를 맞춰준다.

 

아래는 main node에서 다음과 같이 설정을 변경해준다.

# 방화벽 설정을 바꿔준다

sudo ufw allow from 'public_ip' to any port 8080
sudo ufw allow from 'public_ip' to any port 5672
sudo ufw allow from 'public_ip' to any port 15672
sudo ufw allow from 'public_ip' to any port 5555
sudo ufw allow from 'public_ip' to any port 5432

/etc/postgresql/12/main에서 postgresql.conf에서 

listen_addresses = 'localhost'
#위에서 아래와 같이 바꿔준다
listen_addresses = '*'

pg_hba.conf에서 

# IPv4 local connections:
host    all             all             127.0.0.1/32               md5

# 에서 아래와 같이 바꿔준다!

# IPv4 local connections:
host    all             all             0.0.0.0/0               md5

 

# main node에서

airflow celery worker -D -q queue1


# worker node에서

airflow celery worker -D -q queue2

# 를 쳐서 워커를 활성화 시킨다!

만약에 위 방식으로 성공을 했다면!?!?!

 

 

 

 

다음과 같이 main node와 worker node가 온라인인 것을 볼 수 있다!!!!

 

 


출처

 

Tianlong's Blog - A Guide On How To Build An Airflow Server/Cluster (stlong0521.github.io)

 

Tianlong's Blog - A Guide On How To Build An Airflow Server/Cluster

A Guide On How To Build An Airflow Server/Cluster Sun 23 Oct 2016 by Tianlong Song Tags Big Data Airflow is an open-source platform to author, schedule and monitor workflows and data pipelines. When you have periodical jobs, which most likely involve vario

stlong0521.github.io

[airflow] 4. CeleryExecutor 사용하기 (sanghun.xyz)

 

[airflow] 4. CeleryExecutor 사용하기

Airflow CeleryExecutor 사용하기

sanghun.xyz

[Airflow] Airflow cluster, celery executor + flower + RabbitMQ 환경 구성하기 (tistory.com)

 

[Airflow] Airflow cluster, celery executor + flower + RabbitMQ 환경 구성하기

이번 포스트에는 AWS EC2 3대로 구성된 airflow cluster를 CeleryExecutor로 설치해보겠습니다. 서버 구성 스펙 OS - Amazon linux2 AMI (HVM) - Kernel 5.10, SSD Volume type instance type - t2.Large 2vCPUs, 8GiB Memory storage - 30GB gp2

spidyweb.tistory.com

 

'Apache > Airflow' 카테고리의 다른 글

Airflow(celeryexecutor - docker-compose)  (1) 2023.05.13
Airflow-(celeryexecutor)  (0) 2023.05.07
Airflow 간단 개념  (0) 2023.05.03

댓글