Search

[Airflow] Metadatabase로 RDS 교체

개요

postgresql을 사용 중이던 와중에
EC2 내부 CPU를 metadb가 추가적으로 소모하는 상황을 발견하였습니다.
이로 인해 postgresql을 RDS 인스턴스로 분리하기로 결정하였습니다.
RDS 스펙은 원하는 스펙으로 설정하면 됩니다.
저희는 EC2 내부에 docker compose 환경을 통해 배포를 진행하고 있습니다.

도커 컴포즈

Airflow의 도커 컴포즈 파일은 아래와 같습니다.
x-airflow-common: &airflow-common image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.6.2} build: context: ./airflow-docker dockerfile: Dockerfile environment: ... AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://[사용자명]:[비밀번호]@[호스트]:5432/airflow # For backward compatibility, with Airflow <2.3 AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://[사용자명]:[비밀번호]@[호스트]:5432/airflow AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://[사용자명]:[비밀번호]@[호스트]:5432/airflow
YAML
복사
environment는 Airflow.cfg를 공유하고 있습니다.
Airflow는 메타데이터베이스 관련해서 3가지 config 변수를 사용하고 있습니다.
위에 생성한 RDS의 사용자 정보를 선정해서 교체해주면 됩니다.
그리고 한가지 중요한 것은
postgresql 내부에 airflow database가 존재해야합니다.
CREATE DATABASE airflow;
YAML
복사
그렇게 되면 이제 airflow init을 하게 될 때, airflow를 정상적으로 부팅하게 됩니다.

참고