본문 바로가기
Database

Composer란

by BTC_문땅훈 2023. 6. 8.

 
베하 ! 😊
문땅훈과 루피입니다 !! 
 

 
오늘은 'Cloud Composer'에 대해 알아보도록 하겠습니다.
 
 

 

Cloud Composer란?

Cloud Composer

  • Apache Airflow 오픈소스 프로젝트를 기반으로 구축되어 워크플로를 만들고 배포하기 위한 완전 관리형 서비스
  • Airflow 버전 1,2 모두 지원 (환경 세팅할 때 특정 Airflow 버전 선택 가능, 환경 업그레이드 가능)
  • Apache Airflow의 로컬 인스턴스 대신 Cloud Composer를 사용하여 사용자가 설치 또는 관리 오버헤드 없이 운영 가능
  • GKE에 기반을 둔 독립 실행형 Airflow 배포
  • Airflow에 기본 제공되는 커넥터를 사용하여 다른 Google Cloud 서비스와 함께 작동

 

Cloud Composer 환경

  • Composer의 구성은 크게 4가지로 구성되어 있습니다. 기본적으로 Composer는 GKE에 기반을 둔 독립 실행형 Airflow 배포입니다. 단일 프로젝트에서 하나 이상의 환경을 생성할 수 있습니다.

(1) GKE 클러스터 : Airflow 스케줄러, 작업자, Redis 큐는 단일 클러스터에서 GKE 워크로드로 실행되며 DAG 처리 및 실행을 담당
(2) 웹 서버 : 웹 서버는 Apache Airflow 웹 인터페이스를 실행
(3) 데이터베이스 : 해당 환경의 테넌트 프로젝트에서 실행되는 Cloud SQL 인스턴스, 데이터베이스에는 Apache Airflow 메타데이터가 저장됨
(4) Cloud Storage : Cloud Composer는 Cloud Storage 버킷과 환경을 연결합니다. 연결된 버킷은 환경의 DAG, 로그, 커스텀 플로그러인, 데이터를 저장
 

Airflow 환경 액세스

  • Airflow에 접근하려면 2가지 방법이 있습니다.

(1) 웹 인터페이스 : 적절한 권한이 있다면 콘솔이나 해당 접속 URL을 통해 직접 액세스
(2) CLI : Google Cloud CLI를 설치한 후 gloud composer environments 명령어를 실행하여 Cloud Composer 환경에 Airflow 명령줄 명령어 실행
 

Composer 버전 차이점

  • Cloud Composer을 세팅할 때 버전이 지정된 Cloud Composer 이미지를 기반으로 합니다. 이때, 버전은 1,2가 있습니다.
  • 두 가지 버전의 차이점에 대해서 정리하자면 ‘자동확장이 가능한가?’ 입니다. 즉, 환경 클러스터에서 차이가 있습니다. +) 추가적인 차이점에 대해서는 하기의 공식 링크를 통해서도 확인 가능합니다.
  Cloud Compsoer1 Cloud Composer2
환경 클러스터  표준 모드 VPC 기반 또는 경로 기반 GKE Cluster Autopilot 모드 VPC 기반 GKE Cluster
수평 확장 즉, 환경 클러스터의 노드 수를 조정 가능 (유지보수 모드) 자동 확장
Airflow 버전 Airflow 1.10.*, Airflow 2 (Airflow2.4.3 이후 지원 X) Airflow2
비공개 IP 네트워킹 VPC 피어링 VCP 피어링, Private Service Connect

참고 : https://cloud.google.com/composer/docs/composer-2/composer-versioning-overview?hl
 

Cloud Composer2 환경 아키텍처

  • 환경을 만들 때 Cloud Composer는 크게 테넌트와 고객 프로젝트 사이에서 환경 리소스를 배포합니다.
    • 고객 프로젝트 : 환경을 만드는 Google Cloud 프로젝트
    • 테넌트 프로젝트 : Google에서 관리되는 프로젝트
  • Composer2 환경을 기준으로 아키텍처는 크게 3가지로 구성됩니다.

 

(1) 공개 IP 아키텍처

공개 IP 환경 아키텍처

  • 고객 프로젝트 : 해당 환경의 다른 모든 구성요소 호스팅
  • 테넌트 프로젝트 : Cloud SQL 인스턴스 및 Cloud SQL Storage 호스팅

고객 프로젝트의 Airflow schedulers 및 Airflow workes는 ‘Cloud SQL 프록시’ 인스턴스를 통해 Airflow 데이터베이스와 통신
 
 

(2) 비공개 IP 아키텍처

비공개 IP 환경 아키텍처

  • Composer2는 Private Service Connect를 사용하므로 비공개 IP 환경에서는 VPC 피어링을 사용하지 않고 내부적으로 통신 (VPC 피어링도 사용 가능)
  • 고객 프로젝트 : 해당 환경의 구성요소 호스팅
  • 테넌트 프로젝트 : Cloud SQL 인스턴스 및 Cloud SQL Storage 호스팅

공개 IP 아키텍처와 비슷한거 같지만 비공개 IP 아키텍처에서는 Airflow Scheduler와 Airflow workers가 ‘PSC(Private Service Connect) endpoint’를 통해 Airflow 데이터베이스에 연결합니다.
 

+) Private Service Connect Endpoint란?

추가적으로 Private Service Connet란, VPC 내부에서 비공개로 관리형 서비스에 액세스할 수 있도록 허용하는 Google Cloud Networking 기능입니다.
PSC를 사용하면 Google 서비스(여기서는 Cloud Composer), 다른팀에서 소유한 관리형 서비스에 액세스할 수 있습니다.
PSC(Private Service Connect) 유형에는 크게 2가지로 ‘Private Service Connect 엔드포인트’, ‘ Private Service Connect 백엔드’가 있습니다. 여기서는 Private Service Connect 엔드포인트를 사용합니다.
 
 

(3) 복원력이 우수한 비공개 IP 아키텍처

복원력이 우수한 비공개 IP 아키텍처

  • 리전 인스턴스 내에서의 구성은 기본 인스턴스와 대기 인스턴스로 구성되어져 고가용성 확보
  • 쉽게 말해 Airflow Scheduler 2개, 웹 서버 2개, 트리거 2개로 최소 작업자 수가 2로 설정되고 영영간에 작업자 인스턴스를 분산하는 아키텍처입니다. 만약 한쪽에 장애가 발생하면 다른 영역에서 다시 예약됩니다.

 


Composer 생성 gcloud 명령어

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-1.20.12-airflow-1.10.15
    --service-account "example-account@example-project.iam.gserviceaccount.com"
    --zone us-central1-a \
    --node-count 6 \
    --scheduler-count 1 \
    --disk-size 50 \
    --machine-type n1-standard-2 \
    --cloud-sql-machine-type db-n1-standard-2 \
    --web-server-machine-type composer-n1-webserver-2
  • example-environment : 생성하려는 composer 이름으로 변경합니다.
  • us-central1 : 환경의 리전으로 변경합니다.
  • composer-1.20.12-airflow-1.10.15 : Cloud Composer 이미지 이름으로 변경합니다.
  • Service Account
    • 환경의 서비스 계정으로 설정합니다.
    • 이때, Service Account에 composer.environmentAndStorageObjectAdmin 및 iam.serviceAccountUser,composer.admin, storage.objectAdmin 의 역할이 있어야 합니다.
    • 또한, Composer 환경에서 gcloud를 사용하려면 composer.environments.get , container.clusters.get , container.clusters.list , container.clusters.getCredentials 의 권한이 있어야 합니다.
  • node-count : 노드 수를 변경합니다.
  • zone : 환경 VM의 Compote Engine 영역으로 설정합니다.
  • scheduler-count : 스케줄러의 수를 설정합니다.
  • disk-size : 환경 VM의 디스크 크기(GB)로 바꿉니다.
  • machine-type : 노드 VM의 머신 유형으로 변경합니다.
  • cloud-sql-machine-type : Cloud SQL의 인스턴스 머신 유형을 변경합니다.
  • web-server-machine-type : Airflow 웹 서버의 인스턴스의 머신 유형을 변경합니다.

 

Networking 구성

gcloud composer environments create ENVIRONMENT_NAME \
  --location LOCATION \
  --image-version composer-1.20.12-airflow-1.10.15 \
  --enable-ip-alias \
  --enable-private-environment \
  --network NETWORK_ID \
  --subnetwork SUBNETWORK_ID \
  --cluster-ipv4-cidr PODS_RANGE \
  --services-ipv4-cidr SERVICES_RANGE \
  --master-ipv4-cidr CONTROL_PLANE_RANGE \
  --web-server-ipv4-cidr WEB_SERVER_RANGE \
  --cloud-sql-ipv4-cidr SQL_RANGE
  • -enable-ip-alias: 별칭 IP 주소를 사용하는 VPC 기반을 사용 설정합니다. -enable-private-environment를 사용할 때나 포드 및 서비스의 보조 범위를 구성할 때 이 매개변수가 필요합니다.
  • -enable-private-environment: 비공개 IP 환경을 사용 설정합니다.
  • -network: VPC 네트워크 ID를 지정합니다.
  • -subnetwork: VPC 서브네트워크 ID를 지정합니다.
  • -cluster-secondary-range-name 또는 -cluster-ipv4-cidr : 포드의 보조 범위를 구성합니다.
  • -services-secondary-range-name 또는 -services-ipv4-cidr : 서비스의 보조 범위를 구성합니다.
  • -master-ipv4-cidr : GKE 제어 영역의 범위를 지정합니다.
  • -web-server-ipv4-cidr : Airflow 웹 서버 인스턴스의 범위를 지정합니다.
  • -cloud-sql-ipv4-cidr : Cloud SQL 인스턴스의 범위를 지정합니다.
  • -enable-private-endpoint : GKE 제어 영역의 수준 액세스를 제어합니다. 제어 영역에는 엔드포인트가 2개 있습니다. 하나의 엔드포인트는 클러스터 노드 및 VM에서 사용할 용도로 비공개입니다. 다른 엔드포인트는 공개입니다. 공개 엔드포인트에 대한 액세스 수준을 지정할 수 있습니다.

 


 

Cloud Composer 개념부터 생성 gcloud 명령어까지 배워봤습니다 ~!
 
다음 시간에는 GCP의 강점인 Bigquery에 대해 알아보도록 하겠습니다 !
 
 
 

그럼 베빠 ~! 😊
 

 
[참고 링크]
https://cloud.google.com/composer/docs/composer-2/environment-architecture?hl=ko

댓글