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

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

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

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

기타 마이그레이션 가이드

보낸사람 받는사람 메서드 가이드
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 데이터베이스 크기를 줄입니다.

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

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

  • 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 2.0 이상으로 업그레이드 가이드의 DAG 업그레이드 섹션을 참조하세요.

발생할 수 있는 일반적인 문제 중에 호환되지 않는 가져오기 경로와 관련된 문제가 있습니다. 이 호환성 문제를 해결하는 방법에 대한 자세한 내용은 Airflow 2.0 이상으로 업그레이드 가이드의 백포트 제공업체 섹션을 참조하세요.

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 환경의 스냅샷 저장

콘솔

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

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

    환경으로 이동

  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 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 콘솔에서 환경 페이지로 이동합니다.

    환경으로 이동

  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 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 환경을 삭제해도 됩니다.

다음 단계