Cloud Composer 3 (마이그레이션 스크립트)로 환경 마이그레이션

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

이 페이지에서는 이전 스크립트를 사용하여 기존 Cloud Composer 2 환경에서 새 Cloud Composer 3 환경으로 DAG, 데이터, 구성을 이전하는 방법을 설명합니다.

보낸사람 받는사람 메서드 가이드
Cloud Composer 2 Cloud Composer 3 마이그레이션 스크립트를 사용하여 단계별 마이그레이션 이 가이드
Cloud Composer 2 Cloud Composer 3 스냅샷을 사용하여 단계별 마이그레이션 스냅샷 이전 가이드
Cloud Composer 1, Airflow 2 Cloud Composer 3 스냅샷을 사용하여 단계별 마이그레이션 스냅샷 이전 가이드
Cloud Composer 1, Airflow 2 Cloud Composer 2 스냅샷을 사용하여 단계별 마이그레이션 스냅샷 이전 가이드
Cloud Composer 1, Airflow 2 Cloud Composer 2 단계별 수동 전송 수동 마이그레이션 가이드
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 스냅샷을 사용하여 단계별 마이그레이션 스냅샷 이전 가이드
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 단계별 수동 전송 수동 마이그레이션 가이드
Cloud Composer 1, Airflow 1 Cloud Composer 1, Airflow 2 단계별 수동 전송 수동 마이그레이션 가이드

마이그레이션 스크립트 정보

마이그레이션 스크립트는 Cloud Composer 2에서 Cloud Composer 3으로의 마이그레이션 프로세스를 자동화하는 병렬식 마이그레이션을 위한 Python 스크립트입니다. 환경 스냅샷을 사용하여 환경 구성을 새 환경으로 전송합니다.

스크립트는 다음 작업을 실행합니다.

  1. Cloud Composer 2 환경의 구성을 가져옵니다.

  2. 가져온 구성과 일치하는 구성으로 Cloud Composer 3 환경을 만듭니다.

    Cloud Composer 3 환경은 다른 아키텍처를 사용하므로 이러한 차이에 맞게 일부 매개변수가 조정될 수 있습니다. 나중에 대부분의 환경 매개변수를 조정할 수도 있습니다.

  3. Cloud Composer 2 환경의 모든 DAG를 하나씩 일시중지합니다. Cloud Composer 2 환경에서 일시중지를 해제한 DAG만 나중에 일시중지가 해제됩니다.

  4. 소스 Cloud Composer 2 환경의 스냅샷을 저장합니다. 스냅샷은 스냅샷의 기본 위치인 Cloud Composer 2 환경 버킷에 저장됩니다.

  5. Cloud Composer 3 환경에 스냅샷을 로드합니다.

    이 스크립트는 커스텀 PyPI 패키지, 환경 변수, Airflow 구성 옵션 재정의와 Cloud Composer 3 환경의 호환성을 확인하지 않습니다.

    충돌이 발생하면 Cloud Composer 3 환경이 생성된 후 스냅샷을 로드하는 과정에서 이전이 실패합니다. 이 경우 Cloud Composer 2 환경의 구성을 조정하여 충돌을 해결하거나 이전 스크립트 없이 이전하고 스냅샷을 로드할 때 커스텀 PyPI 패키지, 환경 변수 또는 Airflow 구성 재정의 로드를 건너뛸 수 있습니다.

  6. Cloud Composer 3 환경에서 DAG의 일시중지를 해제합니다. 스크립트를 실행하기 전에 일부 DAG가 이미 일시중지된 경우 일시중지된 상태로 유지됩니다.

이 스크립트에는 다음과 같은 제한사항이 있습니다.

  • 이 스크립트는 항상 새 Cloud Composer 3 환경을 만듭니다. 기존 Cloud Composer 3 환경에 스냅샷을 로드할 수는 없습니다. 이렇게 하려면 마이그레이션 스크립트를 사용하지 않고 스냅샷을 사용하여 마이그레이션하면 됩니다.

  • 이 스크립트는 Cloud Composer 2 환경과 동일한 리전 및 프로젝트에만 Cloud Composer 3 환경을 만듭니다.

  • 동일한 버전 또는 이후 버전의 Airflow에만 스냅샷을 로드할 수 있습니다. 예를 들어 Airflow 2.10.2의 스냅샷을 Airflow 2.9.3에 로드할 수 없습니다.

  • 이전 스크립트로 이전할 수 있는 환경은 Cloud Composer 2 환경뿐입니다.

시작하기 전에

  • 이전 스크립트는 환경을 만든 후 스냅샷을 저장하고 로드하므로 이전 프로세스에 1시간 넘게 걸릴 수 있습니다.

  • 이 스크립트는 스냅샷을 사용합니다. 스냅샷이 지원됨

  • Cloud Composer 2 버전 2.0.9 이상

  • 계정에 환경을 만들고, 스냅샷을 저장하고, 스냅샷을 로드할 수 있는 IAM 역할이 필요합니다.

  • 스냅샷을 지원하는 Airflow 데이터베이스의 최대 크기는 20GB입니다. 환경 데이터베이스에 20GB를 초과하는 데이터가 사용될 경우에는 Airflow 데이터베이스 크기를 줄입니다.

  • 스냅샷을 만들려면 환경 버킷의 /dags, /plugins, /data 폴더에 있는 총 객체 수가 100,000개 미만이어야 합니다.

  • XCom 메커니즘을 사용하여 파일을 전송하는 경우 Airflow 가이드라인에 따라 사용해야 합니다. XCom을 사용하여 큰 파일이나 다수의 파일을 전송하면 Airflow 데이터베이스 성능이 영향을 받고 스냅샷을 로드하거나 환경을 업그레이드할 때 오류가 발생할 수 있습니다. 대용량 데이터를 전송하려면 Cloud Storage와 같은 대안을 사용하는 것이 좋습니다.

Cloud Composer 3로 마이그레이션

이 섹션에서는 마이그레이션 스크립트를 사용하는 마이그레이션 프로세스를 설명합니다.

Cloud Composer 2와 Cloud Composer 3의 차이점 확인

Cloud Composer 2와 Cloud Composer 3의 차이점 목록을 참고하세요.

환경에서 Cloud Composer 3에서 아직 사용할 수 없는 기능을 사용하지 않고 Cloud Composer 3 관련 기능을 사용하고 구성하는 방법을 숙지해야 합니다.

DAG가 Cloud Composer 3과 호환되는지 확인

다음 제안에 따라 DAG가 Cloud Composer 3과 호환되는지 확인합니다.

  • Cloud Composer 3 환경의 패키지 목록은 Cloud Composer 2 환경과 다를 수 있습니다. 이로 인해 DAG와 Cloud Composer 3의 호환성에 영향을 줄 수 있습니다.

  • Cloud Composer 3에서 환경의 클러스터는 테넌트 프로젝트에 있습니다. DAG가 이 변경사항과 호환되는지 확인하세요. 특히 이제 KubernetesPodOperator 워크로드는 환경과 별개로 확장되며 포드 어피니티 구성을 사용할 수 없습니다.

스크립트의 종속 항목 설치

  • 이 스크립트에는 Python 버전 3.8 이상이 필요합니다.

  • 이전 스크립트는 gcloud CLI 및 curl 유틸리티를 사용합니다. 두 유틸리티가 모두 컴퓨터에 설치되어 있는지 확인합니다.

스크립트 다운로드

GitHub의 저장소에서 이전 스크립트 (composer_migrate.py)를 다운로드합니다.

gcloud CLI에서 승인

gcloud CLI에서 승인:

gcloud auth login

새 환경의 매개변수 미리보기

이전하기 전에 Cloud Composer 3 환경의 매개변수를 미리 볼 수 있습니다. 이를 통해 Cloud Composer 2 환경의 구성이 Cloud Composer 3에 어떻게 대응하는지 확인할 수 있습니다.

Airflow 구성 옵션 재정의, 커스텀 PyPI 패키지, 환경 변수는 환경의 스냅샷에서 로드되며 미리보기에는 표시되지 않습니다.

펼치기

다음 명령어를 실행합니다.

python3 composer_migrate.py \
    --project PROJECT_ID \
    --location LOCATION \
    --source_environment COMPOSER_2_ENV \
    --target_environment COMPOSER_3_ENV \
    --target_airflow_version COMPOSER_3_AIRFLOW_VERSION \
    --dry_run

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • COMPOSER_2_ENV: Cloud Composer 2 환경의 이름입니다.
  • LOCATION: Cloud Composer 2 환경이 있는 리전입니다. Cloud Composer 3 환경이 동일한 리전에 생성됩니다.
  • COMPOSER_3_AIRFLOW_VERSION: Cloud Composer 3 환경의 Airflow 버전입니다. 이 버전은 Cloud Composer 2 환경과 동일하거나 이후 버전이어야 하며 Cloud Composer 3에서 사용할 수 있는 버전 중 하나여야 합니다.

예:

python3 composer_migrate.py \
    --project example-project \
    --location us-central1 \
    --source_environment example-composer-2-environment \
    --target_environment example-composer-3-environment \
    --target_airflow_version 2.10.2

환경 상태 확인

이전하려는 Cloud Composer 2 환경이 정상적인지 확인합니다.

환경이 정상적이지 않으면 스냅샷을 만들 수 없으므로 새 Cloud Composer 3 환경을 만든 후 이전 프로세스가 실패합니다.

환경 상태 및 데이터베이스 상태를 확인하는 방법에 관한 자세한 내용은 모니터링 대시보드 사용을 참고하세요.

이전 스크립트 실행

다음 명령어를 실행합니다.

python3 composer_migrate.py \
    --project PROJECT_ID \
    --location LOCATION \
    --source_environment COMPOSER_2_ENV \
    --target_environment COMPOSER_3_ENV \
    --target_airflow_version COMPOSER_3_AIRFLOW_VERSION

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • COMPOSER_2_ENV: Cloud Composer 2 환경의 이름입니다.
  • LOCATION: Cloud Composer 2 환경이 있는 리전입니다. Cloud Composer 3 환경이 동일한 리전에 생성됩니다.
  • COMPOSER_3_AIRFLOW_VERSION: Cloud Composer 3 환경의 Airflow 버전입니다. 이 버전은 Cloud Composer 2 환경과 동일하거나 이후 버전이어야 하며 Cloud Composer 3에서 사용할 수 있는 버전 중 하나여야 합니다.

DAG 오류 확인

  1. Airflow 웹 인터페이스에서 DAG로 이동하여 보고된 DAG 구문 오류를 확인합니다.

  2. DAG 실행이 올바른 시간에 예약되었는지 확인합니다.

  3. Cloud Composer 3 환경에서 DAG가 실행되도록 기다린 후 실행이 성공했는지 확인합니다. DAG 실행이 성공하면 Cloud Composer 2 환경에서 일시중지를 취소합니다. 이렇게 하면 Cloud Composer 2 환경에서 동일한 시간 및 날짜에 DAG가 실행됩니다.

  4. 특정 DAG 실행이 실패하면 Cloud Composer 3에서 성공적으로 실행될 때까지 DAG 문제 해결을 시도합니다.

Cloud Composer 3 환경 모니터링

Cloud Composer 3 환경에서 잠재적인 문제, 실패한 DAG 실행, 전반적인 환경 상태를 모니터링합니다.

Cloud Composer 3 환경이 충분한 시간 동안 문제없이 실행되면 Cloud Composer 2 환경을 삭제해도 됩니다.

다음 단계