Cloud Composer 1 (Airflow 2)에서 Cloud Composer 3으로 마이그레이션

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

이 페이지에서는 스냅샷을 사용하여 기존 Cloud Composer 1, Airflow 2 환경에서 Cloud Composer 3, Airflow 2로 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는 Cloud Composer 1에서 Cloud Composer 3으로의 병렬식 마이그레이션을 지원합니다. Cloud Composer 1에서 Cloud Composer 3으로의 인플레이스 업그레이드는 가능하지 않습니다.

  • Cloud Composer 1, Cloud Composer 2, Cloud Composer 3 간의 차이점 목록을 확인하세요.

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

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

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

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

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

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

  • Cloud Composer는 호환성을 위해 변경하거나 조정하지 않고 Cloud Composer 1 환경의 스냅샷에서 Cloud Composer 3로 구성 재정의, 환경 변수, PyPI 패키지를 로드합니다. 커스텀 PyPI 패키지로 인해 종속 항목 충돌이 발생하면 스냅샷을 로드할 때 설치를 건너뛸 수 있습니다.

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

  • Cloud Composer 3에서는 Airflow 데이터베이스에 직접 액세스할 수 없습니다. DAG가 이 변경사항과 호환되는지 확인합니다.

Cloud Composer 1 환경에서 DAG 일시중지

중복된 DAG 실행을 방지하려면 스냅샷을 저장하기 전에 Cloud Composer 1 환경의 모든 DAG를 일시중지합니다. 활성 모니터링 DAG(airflow_monitoring)는 모니터링 목적으로 사용되며 환경 스냅샷에 포함되지 않으므로 건너뜁니다.

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

  • 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을 환경이 위치한 리전으로 바꿉니다.
  • (Airflow 버전 2.9.1 이상) 다수의 DAG를 일시중지하는 동안 할당량 오류가 발생하면 다음 Airflow CLI 명령어를 사용하여 모든 DAG를 한 번에 일시중지할 수 있습니다.

    gcloud composer environments run COMPOSER_1_ENV dags pause \
      --project PROJECT_ID \
      --location COMPOSER_1_LOCATION \
      -- -y --treat-dag-id-as-regex ".*"
    
  • (Airflow 버전 2.9.1 미만) 다수의 DAG를 일시중지하는 동안 할당량 오류가 발생하면 Airflow REST API를 사용하여 DAG를 일시중지할 수 있습니다. Airflow 문서의 API 사용해 보기도 참고하세요.

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 환경 버킷에 스냅샷을 저장하지만 필요에 따라 다른 위치를 선택할 수 있습니다. 커스텀 위치를 지정할 경우 두 환경 모두 서비스 계정에 두 환경의 서비스 계정에서 사용할 수 있는 모든 위치에 대한 읽기 및 쓰기 권한이 있어야 합니다.

Cloud Composer 3 환경 만들기

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

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

Cloud Composer 3 환경에 스냅샷 로드

콘솔

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

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

    환경으로 이동

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

  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 3 환경에 로드합니다.

gcloud composer environments snapshots load \
  COMPOSER_3_ENV \
  --location COMPOSER_3_LOCATION \
  --snapshot-path "SNAPSHOT_PATH"

다음과 같이 바꿉니다.

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

Cloud Composer 3 환경에서 DAG 일시중지 해제

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

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

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

    python3 composer_dags.py --environment COMPOSER_3_ENV \
      --project PROJECT_ID \
      --location COMPOSER_3_LOCATION \
      --operation unpause
    

    다음과 같이 바꿉니다.

    • COMPOSER_3_ENV를 Cloud Composer 3 환경 이름으로 바꿉니다.
    • PROJECT_ID프로젝트 ID로 바꿉니다.
    • COMPOSER_3_LOCATION을 환경이 위치한 리전으로 바꿉니다.
  • (Airflow 버전 2.9.1 이상) 다수의 DAG를 일시중지 해제하는 동안 할당량 오류가 발생하면 다음 Airflow CLI 명령어를 사용하여 모든 DAG를 한 번에 일시중지 해제할 수 있습니다.

    gcloud composer environments run COMPOSER_3_ENV dags unpause \
      --project PROJECT_ID \
      --location COMPOSER_3_LOCATION \
      -- -y --treat-dag-id-as-regex ".*"
    
  • (Airflow 버전 2.9.1 미만) 다수의 DAG 일시중지를 해제하는 동안 할당량 오류가 발생하면 Airflow REST API를 사용하여 DAG 일시중지를 해제할 수 있습니다. Airflow 문서의 API 사용해 보기도 참고하세요.

DAG 오류 확인

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

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

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

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

Cloud Composer 3 환경 모니터링

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

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

다음 단계