관리형 Airflow (3세대) | 관리형 Airflow (2세대) | 관리형 Airflow (기존 1세대)
이 페이지에서는 마이그레이션 스크립트를 사용하여 기존 관리형 Airflow (2세대) 환경에서 새 관리형 Airflow (3세대) 환경으로 DAG, 데이터, 구성을 이전하는 방법을 설명합니다.
기타 마이그레이션 가이드
| 보낸사람 | 받는사람 | 메서드 | 가이드 |
|---|---|---|---|
| 관리형 Airflow (3세대), Airflow 2 | 관리형 Airflow (3세대), Airflow 3 | 단계별 수동 전송 | 수동 마이그레이션 가이드 |
| Managed Airflow (2세대) | 관리형 Airflow (3세대) | 마이그레이션 스크립트를 사용하여 단계별 마이그레이션 | 이 가이드에서 |
| Managed Airflow (2세대) | 관리형 Airflow (3세대) | 스냅샷을 사용하여 단계별 마이그레이션 | 스냅샷 마이그레이션 가이드 |
| 관리형 Airflow (기존 1세대), Airflow 2 | 관리형 Airflow (3세대) | 스냅샷을 사용하여 단계별 마이그레이션 | 스냅샷 마이그레이션 가이드 |
| 관리형 Airflow (기존 1세대), Airflow 2 | Managed Airflow (2세대) | 스냅샷을 사용하여 단계별 마이그레이션 | 스냅샷 마이그레이션 가이드 |
| 관리형 Airflow (기존 1세대), Airflow 2 | Managed Airflow (2세대) | 단계별 수동 전송 | 수동 마이그레이션 가이드 |
| 관리형 Airflow (기존 1세대), Airflow 1 | 관리형 Airflow (2세대), Airflow 2 | 스냅샷을 사용하여 단계별 마이그레이션 | 스냅샷 마이그레이션 가이드 |
| 관리형 Airflow (기존 1세대), Airflow 1 | 관리형 Airflow (2세대), Airflow 2 | 단계별 수동 전송 | 수동 마이그레이션 가이드 |
| 관리형 Airflow (기존 1세대), Airflow 1 | 관리형 Airflow (기존 1세대), Airflow 2 | 단계별 수동 전송 | 수동 마이그레이션 가이드 |
마이그레이션 스크립트 정보
마이그레이션 스크립트는 관리형 Airflow (2세대)에서 관리형 Airflow (3세대)로의 마이그레이션 프로세스를 자동화하는 동시 마이그레이션을 위한 Python 스크립트입니다. 환경 스냅샷을 사용하여 환경의 구성을 새 환경으로 전송합니다.
스크립트는 다음 작업을 실행합니다.
관리형 Airflow (2세대) 환경의 구성을 가져옵니다.
획득한 구성과 일치하는 구성으로 관리형 Airflow (3세대) 환경을 만듭니다.
관리형 Airflow (3세대) 환경의 아키텍처가 다르기 때문에 차이에 맞게 일부 매개변수가 조정될 수 있습니다. 나중에 환경의 대부분의 매개변수를 조정할 수도 있습니다.
Managed Airflow (2세대) 환경에서 모든 DAG를 하나씩 일시중지합니다. Managed Airflow (2세대) 환경에서 일시중지 해제된 DAG만 나중에 일시중지 해제됩니다.
소스 관리형 Airflow (2세대) 환경의 스냅샷을 저장합니다. 스냅샷은 스냅샷의 기본 위치인 관리형 Airflow (2세대) 환경의 버킷에 저장됩니다.
스냅샷을 관리형 Airflow (3세대) 환경에 로드합니다.
스크립트는 커스텀 PyPI 패키지, 환경 변수, Airflow 구성 옵션 재정의와 관리형 Airflow (3세대) 환경 간의 호환성을 확인하지 않습니다.
충돌이 발생하면 관리형 Airflow (3세대) 환경이 생성된 후 스냅샷을 로드하는 과정에서 마이그레이션이 실패합니다. 이 경우 Managed Airflow (2세대) 환경의 구성을 조정하여 충돌을 해결하거나 마이그레이션 스크립트 없이 마이그레이션하고 스냅샷을 로드할 때 커스텀 PyPI 패키지, 환경 변수 또는 Airflow 구성 재정의 로드를 건너뛸 수 있습니다.
Managed Airflow (3세대) 환경에서 DAG의 일시중지를 해제합니다. 스크립트를 실행하기 전에 일부 DAG가 이미 일시중지된 경우 일시중지된 상태로 유지됩니다.
스크립트에는 다음과 같은 제한사항이 있습니다.
스크립트는 항상 새 관리형 Airflow (3세대) 환경을 만듭니다. 기존 Managed Airflow (3세대) 환경에 스냅샷을 로드할 수 없습니다. 이렇게 하려면 마이그레이션 스크립트를 사용하지 않고 스냅샷을 사용하여 마이그레이션하면 됩니다.
스크립트는 관리형 Airflow (2세대) 환경과 동일한 리전 및 프로젝트에만 관리형 Airflow (3세대) 환경을 만듭니다.
동일한 버전 또는 이후 버전의 Airflow에만 스냅샷을 로드할 수 있습니다. 예를 들어 Airflow 2.10.2의 스냅샷을 Airflow 2.9.3에 로드할 수 없습니다.
마이그레이션 스크립트를 사용해 마이그레이션할 수 있는 환경은 Managed Airflow (2세대) 환경뿐입니다.
시작하기 전에
이전 스크립트가 환경을 만든 다음 스냅샷을 저장하고 로드하므로 이전 프로세스에 1시간 이상 걸릴 수 있습니다.
스크립트에서 스냅샷을 사용합니다. 스냅샷이 지원됨
관리형 Airflow (2세대) 버전 2.0.9 이상 버전에서
계정에 환경을 만들고, 스냅샷을 저장하고, 스냅샷을 로드할 수 있는 IAM 역할이 필요합니다.
스냅샷을 지원하는 Airflow 데이터베이스의 최대 크기는 20GB입니다. 환경 데이터베이스에 20GB를 초과하는 데이터가 사용될 경우에는 Airflow 데이터베이스 크기를 줄입니다.
스냅샷을 만들려면 환경 버킷의
/dags,/plugins,/data폴더에 있는 총 객체 수가 100,000개 미만이어야 합니다.XCom 메커니즘을 사용하여 파일을 전송하는 경우 Airflow 가이드라인에 따라 사용해야 합니다. XCom을 사용하여 큰 파일이나 다수의 파일을 전송하면 Airflow 데이터베이스 성능이 영향을 받고 스냅샷을 로드하거나 환경을 업그레이드할 때 오류가 발생할 수 있습니다. 대용량 데이터를 전송하려면 Cloud Storage와 같은 대안을 사용하는 것이 좋습니다.
관리형 Airflow (3세대)로 마이그레이션
이 섹션에서는 마이그레이션 스크립트를 사용한 마이그레이션 프로세스를 설명합니다.
관리형 Airflow (2세대)와 관리형 Airflow (3세대)의 차이점 확인
관리형 Airflow (2세대)와 관리형 Airflow (3세대)의 차이점 목록을 확인하세요.
환경에서 관리형 Airflow (3세대)에서 아직 사용할 수 없는 기능을 사용하지 않는지 확인하고 관리형 Airflow (3세대) 전용 기능을 사용하고 구성하는 방법을 숙지합니다.
DAG가 관리형 Airflow (3세대)와 호환되는지 확인
다음 제안에 따라 DAG가 관리형 Airflow (3세대)와 호환되는지 확인합니다.
관리형 Airflow (3세대) 환경의 패키지 목록은 관리형 Airflow (2세대) 환경의 목록과 다를 수 있습니다. 이로 인해 DAG와 관리형 Airflow (3세대)의 호환성이 영향을 받을 수 있습니다.
관리형 Airflow (3세대)에서 환경의 클러스터는 테넌트 프로젝트에 있습니다. DAG가 이 변경사항과 호환되는지 확인하세요. 특히
KubernetesPodOperator워크로드는 이제 환경과 독립적으로 확장되며 포드 어피니티 구성을 사용할 수 없습니다.
구성 호환성 확인
업그레이드 확인을 실행하여 관리형 Airflow (2세대) 환경의 구성이 관리형 Airflow (3세대)와 호환되는지 확인할 수 있습니다. 마이그레이션을 시작하기 전에 이 검사에서 보고된 차단 충돌을 모두 해결하는 것이 좋습니다.
스크립트의 종속 항목 설치
스크립트에는 Python 버전 3.8 이상이 필요합니다.
마이그레이션 스크립트는 gcloud CLI 및
curl유틸리티를 사용합니다. 두 유틸리티가 컴퓨터에 설치되어 있는지 확인합니다.
스크립트 다운로드
GitHub의 저장소에서 이전 스크립트 (composer_migrate.py)를 다운로드합니다.
gcloud CLI에서 승인
gcloud CLI에서 승인:
gcloud auth login
새 환경의 매개변수 미리보기
이전하기 전에 관리형 Airflow (3세대) 환경의 매개변수를 미리 볼 수 있습니다. 이를 사용하여 관리형 Airflow (2세대) 환경의 구성이 관리형 Airflow (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: 프로젝트 IDCOMPOSER_2_ENV: 관리형 Airflow (2세대) 환경의 이름입니다.LOCATION: 관리형 Airflow (2세대) 환경이 있는 리전입니다. 관리형 Airflow (3세대) 환경이 동일한 리전에 생성됩니다.COMPOSER_3_AIRFLOW_VERSION: 관리형 Airflow (3세대) 환경의 Airflow 버전입니다. 이 버전은 관리형 Airflow (2세대) 환경의 버전과 동일하거나 이후 버전이어야 하며 관리형 Airflow (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
환경 상태 확인
마이그레이션하려는 관리형 Airflow (2세대) 환경이 정상인지 확인합니다.
환경이 정상 상태가 아니면 스냅샷을 만들 수 없으므로 새 관리형 Airflow (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: 프로젝트 IDCOMPOSER_2_ENV: 관리형 Airflow (2세대) 환경의 이름입니다.LOCATION: 관리형 Airflow (2세대) 환경이 있는 리전입니다. 관리형 Airflow (3세대) 환경이 동일한 리전에 생성됩니다.COMPOSER_3_AIRFLOW_VERSION: 관리형 Airflow (3세대) 환경의 Airflow 버전입니다. 이 버전은 관리형 Airflow (2세대) 환경의 버전과 동일하거나 이후 버전이어야 하며 관리형 Airflow (3세대)에서 사용할 수 있는 버전 중 하나여야 합니다.
DAG 오류 확인
Airflow 웹 인터페이스에서 DAG로 이동하여 보고된 DAG 구문 오류를 확인합니다.
DAG 실행이 올바른 시간에 예약되었는지 확인합니다.
관리형 Airflow (3세대) 환경에서 DAG가 실행되도록 기다린 후 실행이 성공했는지 확인합니다. DAG 실행이 성공하면 관리형 Airflow (2세대) 환경에서 일시중지를 취소하지 마세요. 이렇게 하면 관리형 Airflow (2세대) 환경에서 동일한 시간 및 날짜에 DAG가 실행됩니다.
특정 DAG 실행이 실패하면 Managed Airflow (3세대)에서 성공적으로 실행될 때까지 DAG 문제 해결을 시도합니다.
관리형 Airflow (3세대) 환경 모니터링
Managed Airflow (3세대) 환경에서 잠재적인 문제, 실패한 DAG 실행, 전반적인 환경 상태를 모니터링합니다.
관리형 Airflow (3세대) 환경이 충분한 시간 동안 문제없이 실행되면 관리형 Airflow (2세대) 환경을 삭제해도 됩니다.