스냅샷을 사용하여 Cloud Composer 2(Airflow 1에서)로 환경 마이그레이션

Cloud Composer 1 | Cloud Composer 2

이 페이지에서는 기존 Cloud Composer 1, Airflow 1 환경에서 Cloud Composer 2, Airflow 2로 DAG, 데이터, 구성을 전송하는 방법을 설명합니다.

이 마이그레이션 가이드에서는 스냅샷 기능이 사용됩니다.

기타 마이그레이션 가이드

시작일 To 메서드 가이드
Cloud Composer 1, Airflow 2 Cloud Composer 2, Airflow 2 스냅샷을 사용하여 단계별 마이그레이션 마이그레이션 가이드(스냅샷)
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 스냅샷을 사용하여 단계별 마이그레이션 이 가이드(스냅샷)
Cloud Composer 1, Airflow 2 Cloud Composer 2, Airflow 2 단계별 수동 전송 수동 마이그레이션 가이드
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 단계별 수동 전송 수동 마이그레이션 가이드
Airflow 1 Airflow 2 단계별 수동 전송 수동 마이그레이션 가이드

시작하기 전에

  • 스냅샷은 Cloud Composer 2 버전 2.0.9 이상에서 지원됩니다. Cloud Composer 1은 1.18.5에서 환경 스냅샷 저장을 지원합니다.

  • Cloud Composer는 Cloud Composer 1에서 Cloud Composer 2로의 단계별 마이그레이션을 지원합니다. Cloud Composer 1에서 Cloud Composer 2로의 인플레이스 업그레이드는 가능하지 않습니다.

  • Cloud Composer 1 및 Cloud Composer 2 차이점 목록을 참조하세요.

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

  • Cloud Composer 2에 Airflow 2가 사용되기 때문에 마이그레이션에는 DAG 및 환경 구성을 Airflow 2로 전환하는 과정이 포함됩니다. Cloud Composer에서 Airflow 1과 Airflow 2 사이의 중요 차이점은 Airflow 1에서 Airflow 2로 마이그레이션 가이드를 참조하세요.

  • 이 가이드에서는 Airflow 2로의 마이그레이션 및 Cloud Composer 2로의 마이그레이션을 한 번의 마이그레이션 절차로 묶어서 보여줍니다. 이 방식에서는 Cloud Composer 2로 마이그레이션하기 전 Airflow 2가 포함된 Cloud Composer 1 환경으로 마이그레이션할 필요가 없습니다.

1단계: Airflow 1.10.15로 업그레이드

환경에 1.10.15 이전 Airflow 버전이 사용되는 경우 Airflow 1.10.15가 사용되고 스냅샷이 지원되는 Cloud Composer 버전으로 환경을 업그레이드합니다.

2단계: Airflow 2 호환성 확인

Airflow 2와의 잠재적 충돌을 확인하려면 기존 Airflow 1.10.15 환경에서 Airflow가 제공하는 업그레이드 확인 스크립트를 사용합니다.

gcloud

  1. gcloud composer environments run 명령어로 업그레이드 확인을 실행합니다. 독립형 Airflow 1.10.15와 관련된 일부 업그레이드 확인은 Cloud Composer와 관련이 없습니다. 다음 명령어는 이러한 확인 작업을 제외합니다.

    gcloud composer environments run \
        COMPOSER_1_ENV  \
        --location=COMPOSER_1_LOCATION \
        upgrade_check \
        -- --ignore VersionCheckRule --ignore LoggingConfigurationRule \
        --ignore PodTemplateFileRule --ignore SendGridEmailerMovedRule
    

    다음과 같이 바꿉니다.

    • COMPOSER_1_ENV를 Airflow 1.10.15 환경의 이름으로 바꿉니다.
    • COMPOSER_1_LOCATION을 환경이 위치한 리전으로 바꿉니다.
  2. 명령어 결과를 확인합니다. 업데이트 확인 스크립트는 기존 환경에서 발생 가능한 호환성 문제를 보고합니다.

  3. Airflow 2.0 이상으로 업그레이드 가이드의 DAG 업그레이드 섹션에 설명된 대로 DAG에 다른 변경사항을 구현합니다.

3단계: DAG가 Airflow 2에 맞게 준비되었는지 확인

DAG를 Cloud Composer 2 환경으로 전송하기 전 다음을 확인합니다.

  1. DAG의 업그레이드 확인 스크립트가 성공적으로 실행되었고 남아 있는 호환성 문제가 없습니다.

  2. DAG에서 올바른 가져오기 문을 사용합니다.

    예를 들어 BigQueryCreateDataTransferOperator의 새 가져오기 문은 다음과 같습니다.

    from airflow.providers.google.cloud.operators.bigquery_dts \
        import BigQueryCreateDataTransferOperator
    
  3. DAG가 Airflow 2에 맞게 업그레이드되었습니다. 이 변경사항은 Airflow 1.10.14 이상 버전과 호환됩니다.

4단계: Cloud Composer 1 환경에서 DAG 일시중지

중복된 DAG 실행을 방지하려면 스냅샷을 저장하기 전에 Cloud Composer 1 환경의 모든 DAG를 일시중지합니다.

다음 옵션 중에서 사용할 수 있습니다.

  • Airflow 웹 인터페이스에서 DAG로 이동하고 모든 DAG를 수동으로 일시중지합니다.

  • composer_dags 스크립트를 사용하여 모든 DAG를 일시중지합니다.

    python3 composer_dags.py --environment COMPOSER_1_ENV \
      --project PROJECT_ID \
      --location COMPOSER_1_LOCATION \
      --operation pause
    

    다음과 같이 바꿉니다.

    • COMPOSER_1_ENV를 Cloud Composer 1 환경 이름으로 바꿉니다.
    • PROJECT_ID프로젝트 ID로 바꿉니다.
    • COMPOSER_1_LOCATION을 환경이 위치한 리전으로 바꿉니다.

5단계: Cloud Composer 1 환경의 스냅샷 저장

Console

환경의 스냅샷을 만듭니다.

  1. Google Cloud Console에서 환경 페이지로 이동합니다.

    환경으로 이동

  2. 환경 목록에서 Cloud Composer 1 환경의 이름을 클릭합니다. 환경 세부정보 페이지가 열립니다.

  3. 스냅샷 만들기를 클릭합니다.

  4. 스냅샷 만들기 대화상자에서 제출을 클릭합니다. 이 가이드에서는 Cloud Composer 1 환경 버킷에 스냅샷을 저장하지만 필요에 따라 다른 위치를 선택할 수 있습니다.

  5. Cloud Composer가 스냅샷을 생성할 때까지 기다립니다.

gcloud

  1. Cloud Composer 1 환경의 버킷 URI를 가져옵니다.

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

      gcloud composer environments describe COMPOSER_1_ENV \
          --location COMPOSER_1_LOCATION \
           --format="value(config.dagGcsPrefix)"
      

      다음과 같이 바꿉니다.

      • COMPOSER_1_ENV를 Cloud Composer 1 환경 이름으로 바꿉니다.
      • COMPOSER_1_LOCATION을 환경이 위치한 리전으로 바꿉니다.
    2. 출력에서 /dags 폴더를 삭제합니다. 결과는 Cloud Composer 1 환경의 버킷의 URI입니다.

      예를 들어 gs://us-central1-example-916807e1-bucket/dagsgs://us-central1-example-916807e1-bucket으로 변경합니다.

  2. Cloud Composer 1 환경의 스냅샷을 만듭니다.

    gcloud beta composer environments snapshots save \
      COMPOSER_1_ENV \
      --location COMPOSER_1_LOCATION \
      --snapshot-location "COMPOSER_1_SNAPSHOTS_FOLDER"
    

    다음과 같이 바꿉니다.

    • COMPOSER_1_ENV를 Cloud Composer 1 환경 이름으로 바꿉니다.
    • COMPOSER_1_LOCATION을 Cloud Composer 1 환경이 있는 리전으로 바꿉니다.
    • COMPOSER_1_SNAPSHOTS_FOLDER를 Cloud Composer 1 환경 버킷의 URI로 바꿉니다. 이 가이드에서는 Cloud Composer 1 환경 버킷에 스냅샷을 저장하지만 필요에 따라 다른 위치를 선택할 수 있습니다. 커스텀 위치를 지정할 경우 두 환경 모두 서비스 계정에 지정된 위치에 대한 읽기 및 쓰기 권한이 있어야 합니다.

6단계: Cloud Composer 2 환경 만들기

Cloud Composer 2 환경을 만듭니다. 선택한 리소스 요구와 일치하는 환경 사전 설정으로 시작하고, 나중에 환경을 더 확장 및 최적화할 수 있습니다.

나중에 Cloud Composer 1 환경의 스냅샷을 로드할 때 대체하므로 구성 재정의와 환경 변수를 지정할 필요가 없습니다.

Airflow 1의 일부 구성 옵션은 Airflow 2에서 다른 이름 및 섹션을 사용합니다. 자세한 내용은 구성 변경사항을 참조하세요.

7단계: Cloud Composer 2 환경에 스냅샷 로드

콘솔

Cloud Composer 2 환경에 스냅샷을 로드하려면 다음 안내를 따르세요.

  1. Google Cloud Console에서 환경 페이지로 이동합니다.

    환경으로 이동

  2. 환경 목록에서 Cloud Composer 2 환경 이름을 클릭합니다. 환경 세부정보 페이지가 열립니다.

  3. 스냅샷 로드를 클릭합니다.

  4. 스냅샷 로드 대화상자에서 찾아보기를 클릭합니다.

  5. 스냅샷이 있는 폴더를 선택합니다. 이 가이드에 기본 위치를 사용하는 경우 폴더가 /snapshots 폴더에서 Cloud Composer 1 환경 버킷에 배치되고 이름은 스냅샷 저장 작업의 타임스탬프입니다. 예를 들면 us-central1-example-916807e1-bucket/snapshots_example-project_us-central1_example-environment/2022-01-05T18-59-00입니다.

  6. 로드를 클릭하고 Cloud Composer가 스냅샷을 로드할 때까지 기다립니다.

gcloud

Cloud Composer 1 환경의 스냅샷을 Cloud Composer 2 환경에 로드합니다.

gcloud beta composer environments snapshots load \
  COMPOSER_2_ENV \
  --location COMPOSER_2_LOCATION \
  --snapshot-path "SNAPSHOT_PATH"

다음과 같이 바꿉니다.

  • COMPOSER_2_ENV를 Cloud Composer 2 환경 이름으로 바꿉니다.
  • COMPOSER_2_LOCATION을 Cloud Composer 2 환경이 있는 리전으로 바꿉니다.
  • SNAPSHOT_PATH를 Cloud Composer 1 환경 버킷의 URI와 스냅샷 경로로 바꿉니다. 예를 들면 gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00입니다.

8단계: Cloud Composer 2 환경에서 DAG 일시중지 해제

다음 옵션 중에서 사용할 수 있습니다.

  • Airflow 웹 인터페이스에서 DAG로 이동하고 모든 DAG를 수동으로 하나씩 일시중지 해제합니다.

  • composer_dags 스크립트를 사용하여 모든 DAG를 일시중지 해제합니다.

      python3 composer_dags.py --environment COMPOSER_2_ENV \
      --project PROJECT_ID \
      --location COMPOSER_2_LOCATION \
      --operation unpause
    

    다음과 같이 바꿉니다.

    • COMPOSER_2_ENV를 Cloud Composer 2 환경 이름으로 바꿉니다.
    • PROJECT_ID프로젝트 ID로 바꿉니다.
    • COMPOSER_2_LOCATION: 환경이 위치한 리전

9단계: DAG 오류 확인

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

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

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

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

10단계: Cloud Composer 2 환경 모니터링

모든 DAG 및 구성을 Cloud Composer 2 환경으로 전송한 후 잠재적인 문제, 실패한 DAG 실행, 전반적인 환경 상태를 모니터링합니다.

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

다음 단계