베하 ! 😊
문땅훈과 루피입니다 !!
오늘은 '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 아키텍처
- 고객 프로젝트 : 해당 환경의 다른 모든 구성요소 호스팅
- 테넌트 프로젝트 : Cloud SQL 인스턴스 및 Cloud SQL Storage 호스팅
고객 프로젝트의 Airflow schedulers 및 Airflow workes는 ‘Cloud SQL 프록시’ 인스턴스를 통해 Airflow 데이터베이스와 통신
(2) 비공개 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 아키텍처
- 리전 인스턴스 내에서의 구성은 기본 인스턴스와 대기 인스턴스로 구성되어져 고가용성 확보
- 쉽게 말해 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
'Database' 카테고리의 다른 글
Snowflake VS Databricks (0) | 2023.06.21 |
---|---|
[데이터 레이크하우스] Data Lakehouse (0) | 2023.06.19 |
[Airflow] Airflow 설치 및 DAG 생성하기 (0) | 2023.06.07 |
[Airflow] MetaDB와 Executor 변경 실습 (0) | 2023.05.31 |
Windows 환경에서 Mysql8 root 패스워드 찾는법 (0) | 2023.05.31 |
댓글