-
GCP VM으로 Airflow 구축하기데이터엔지니어링/Airflow 2023. 6. 4. 23:27
이전에는 로컬에서의 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
'데이터엔지니어링 > Airflow' 카테고리의 다른 글
Airflow(celeryexecutor - docker-compose) (1) 2023.05.13 Airflow-(celeryexecutor) (0) 2023.05.07 Airflow 간단 개념 (0) 2023.05.03