Managed Airflow (3세대) | Managed Airflow (2세대) | Managed Airflow (기존 1세대)
이 페이지에서는 기존 Managed Airflow (2세대) 환경에서 Managed Airflow (3세대)로 DAG, 데이터, 구성을 전송하는 방법을 설명합니다.
기타 마이그레이션 가이드
| 보낸사람 | 받는사람 | 메서드 | 가이드 |
|---|---|---|---|
| 관리형 Airflow (3세대), Airflow 2 | Managed Airflow (3세대), Airflow 3 | 단계별 수동 전송 | 수동 마이그레이션 가이드 |
| Managed Airflow (2세대) | Managed Airflow (3세대) | 마이그레이션 스크립트를 사용하여 단계별 마이그레이션 | 스크립트 마이그레이션 가이드 |
| Managed Airflow (2세대) | Managed Airflow (3세대) | 스냅샷을 사용하여 단계별 마이그레이션 | 이 가이드에서 |
| Managed Airflow (기존 1세대), Airflow 2 | Managed Airflow (3세대) | 스냅샷을 사용하여 단계별 마이그레이션 | 스냅샷 마이그레이션 가이드 |
| Managed Airflow (기존 1세대), Airflow 2 | Managed Airflow (2세대) | 스냅샷을 사용하여 단계별 마이그레이션 | 스냅샷 마이그레이션 가이드 |
| Managed Airflow (기존 1세대), Airflow 2 | Managed Airflow (2세대) | 단계별 수동 전송 | 수동 마이그레이션 가이드 |
| Managed Airflow (기존 1세대), Airflow 1 | Managed Airflow (2세대), Airflow 2 | 스냅샷을 사용하여 단계별 마이그레이션 | 스냅샷 마이그레이션 가이드 |
| Managed Airflow (기존 1세대), Airflow 1 | Managed Airflow (2세대), Airflow 2 | 단계별 수동 전송 | 수동 마이그레이션 가이드 |
| Managed Airflow (기존 1세대), Airflow 1 | Managed Airflow (기존 1세대), Airflow 2 | 단계별 수동 전송 | 수동 마이그레이션 가이드 |
시작하기 전에
이 마이그레이션 가이드에서는 스냅샷을 사용합니다. 스냅샷은 Managed Airflow (2세대) 버전 2.0.9 이상에서 지원됩니다.
Managed Airflow는 Managed Airflow (2세대)에서 Managed Airflow (3세대)로의 단계별 마이그레이션을 지원합니다. 관리형 Airflow(2세대)에서 관리형 Airflow(3세대)로 인플레이스(In-Place) 업그레이드하는 것은 불가능합니다.
관리형 Airflow (2세대)와 관리형 Airflow (3세대) 간의 차이점 목록을 확인합니다. 환경에서 Managed Airflow (3세대)에서 아직 사용할 수 없는 기능을 사용하지 않는지 확인합니다.
스냅샷을 지원하는 Airflow 데이터베이스의 최대 크기는 20GB입니다. 환경 데이터베이스에 20GB를 초과하는 데이터가 사용될 경우에는 Airflow 데이터베이스 크기를 줄입니다.
스냅샷을 만들려면 환경 버킷의
/dags,/plugins,/data폴더에 있는 총 객체 수가 100,000개 미만이어야 합니다.XCom 메커니즘을 사용하여 파일을 전송하는 경우 Airflow 가이드라인에 따라 사용해야 합니다. XCom을 사용하여 큰 파일이나 다수의 파일을 전송하면 Airflow 데이터베이스 성능이 영향을 받고 스냅샷을 로드하거나 환경을 업그레이드할 때 오류가 발생할 수 있습니다. 대용량 데이터를 전송하려면 Cloud Storage와 같은 대안을 사용하는 것이 좋습니다.
DAG가 Managed Airflow (3세대)와 호환되는지 확인
다음 제안에 따라 DAG가 Managed Airflow (3세대)와 호환되는지 확인합니다.
관리형 Airflow (3세대) 환경의 패키지 목록은 관리형 Airflow (2세대) 환경의 패키지 목록과 다를 수 있습니다. 이로 인해 DAG가 Managed Airflow (3세대)와 호환되지 않을 수 있습니다.
관리형 Airflow는 호환성을 위해 변경하거나 조정하지 않고 관리형 Airflow(2세대) 환경의 스냅샷에서 관리형 Airflow(3세대)로 구성 재정의, 환경 변수, PyPI 패키지 를 로드합니다. to Managed Airflow (Gen 3) without changing or adjusting them for compatibility. 이러한 구성 매개변수 간의 충돌을 해결하려면 스냅샷을 로드할 때 커스텀 PyPI 패키지, 환경 변수, Airflow 구성 재정의 로드를 건너뛸 수 있습니다.
Managed Airflow (3세대)에서 환경의 클러스터 는 테넌트 프로젝트에 있습니다. DAG가 이 변경사항과 호환되는지 확인합니다. 특히
KubernetesPodOperator워크로드는 이제 환경과 독립적으로 확장되며 포드 선호도 구성을 사용할 수 없습니다.
관리형 Airflow (2세대) 환경에서 DAG 일시중지
중복된 DAG 실행을 방지하려면 Managed Airflow (2세대) 환경의 스냅샷을 저장하기 전에 모든 DAG를 일시중지합니다. 활성 상태 모니터링 DAG(airflow_monitoring)는 건너뜁니다. 이 DAG는 모니터링 목적으로 사용되며 환경 스냅샷에 포함되지 않습니다.
다음 옵션 중 하나를 사용하여 DAG를 일시중지할 수 있습니다.
콘솔에서 DAG를 하나씩 일시중지합니다. Google Cloud
콘솔에서 환경 페이지로 이동합니다. Google Cloud
환경을 선택해 세부정보를 표시합니다.
환경 세부정보 페이지에서 DAG 탭으로 이동합니다.
DAG 이름을 클릭합니다.
DAG 세부정보 페이지에서 DAG 일시중지를 클릭합니다.
Airflow 웹 인터페이스에서 DAG로 이동하고 모든 DAG를 수동으로 일시중지합니다.
composer_dags 스크립트를 사용하여 모든 DAG를 일시중지합니다.
python3 composer_dags.py --environment COMPOSER_2_ENV \ --project PROJECT_ID \ --location COMPOSER_2_LOCATION \ --operation pause다음을 바꿉니다.
COMPOSER_2_ENV: Managed Airflow (2세대) 환경의 이름입니다.PROJECT_ID와 함께 프로젝트 ID입니다.COMPOSER_2_LOCATION: 환경이 위치한 리전입니다.
Managed Airflow (2세대) 환경의 스냅샷 저장
콘솔
환경의 스냅샷을 만듭니다.
콘솔에서 환경 페이지로 이동합니다. Google Cloud
환경 목록에서 Managed Airflow (2세대) 환경의 이름을 클릭합니다. 환경 세부정보 페이지가 열립니다.
스냅샷 만들기를 클릭합니다.
스냅샷 만들기 대화상자에서 제출 을 클릭합니다. 이 가이드에서는 Managed Airflow (2세대) 환경 버킷에 스냅샷을 저장하지만 필요에 따라 다른 위치를 선택할 수 있습니다. 커스텀 위치를 지정할 경우 두 환경의 서비스 계정에는 지정된 위치에 대한 읽기 및 쓰기 권한이 있어야 합니다.
관리형 Airflow가 스냅샷을 생성할 때까지 기다립니다.
스냅샷이 생성되면 표시된 메시지에 스냅샷의 위치가 출력됩니다. 이 스냅샷을 Managed Airflow (3세대) 환경에 로드할 때 나중에 사용할 수 있도록 이 정보를 저장합니다.
예를 들어 스냅샷 위치는
gs://us-central1-example-916807e1-bucket/snapshots/snapshots_example-project_us-central1_example-environment/2024-05-15T15-23-12와 같습니다.
gcloud
Managed Airflow (2세대) 환경의 스냅샷을 만듭니다.
gcloud composer environments snapshots save \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION다음을 바꿉니다.
COMPOSER_2_ENV: Managed Airflow (2세대) 환경의 이름입니다.COMPOSER_2_LOCATION: 관리형 Airflow (2세대) 환경이 위치한 리전입니다.(선택사항)
--snapshot-location인수를 사용하여 환경의 스냅샷을 저장해야 하는 커스텀 위치를 지정할 수 있습니다.이 가이드에서는 Managed Airflow (2세대) 환경 버킷에 스냅샷을 저장하지만 필요에 따라 다른 위치를 선택할 수 있습니다. 커스텀 위치를 지정할 경우, 두 환경의 서비스 계정에는 지정된 위치에 대한 읽기 및 쓰기 권한이 있어야 합니다.
스냅샷이 생성되면 표시된 메시지에 스냅샷의 위치가 출력됩니다. 이 스냅샷을 Managed Airflow (3세대) 환경에 로드할 때 나중에 사용할 수 있도록 이 정보를 저장합니다.
예를 들어 스냅샷 위치는
gs://us-central1-example-916807e1-bucket/snapshots/snapshots_example-project_us-central1_example-environment/2024-05-15T15-23-12와 같습니다.
Managed Airflow (3세대) 환경 만들기
다음 가이드라인에 따라 Managed Airflow (3세대) 환경을 만듭니다.
관리형 Airflow (2세대) 환경과 동일한 리소스 한도 구성으로 시작하고 나중에 구성을 더 확장하고 최적화할 수 있습니다.
Managed Airflow (3세대) 환경에서 Airflow DAG 프로세서는 별도의 환경 구성요소로 실행됩니다. DAG 프로세서가 스케줄러에서 DAG 파싱을 오프로드하므로 이전에 Airflow 스케줄러에 할당된 리소스를 재분배하는 것이 좋습니다. Managed Airflow (3세대)로 마이그레이션하고 스케줄러 및 DAG 프로세서 성능을 모니터링한 후 나중에 이 작업을 실행할 수 있습니다.
관리형 Airflow (3세대)는 관리형 Airflow (2세대)에 비해 더 간소화되고 단순화된 네트워킹 설정을 제공합니다. 공용 IP와 비공개 IP 네트워킹 구성 간에 전환하고 VPC 네트워크를 연결 및 분리할 수 있습니다. IP 범위를 지정할 필요가 없습니다 . 관리형 Airflow (3세대) 환경의 네트워킹 구성이 상응하는 관리형 Airflow (2세대) 구성과 일치하는지 확인합니다.
나중에 관리형 Airflow (2세대) 환경의 스냅샷을 로드할 때 대체하므로 구성 재정의와 환경 변수를 지정할 필요가 없습니다.
Managed Airflow (3세대) 환경에 스냅샷 로드
콘솔
관리형 Airflow (3세대) 환경에 스냅샷을 로드하려면 다음 안내를 따르세요.
콘솔에서 환경 페이지로 이동합니다. Google Cloud
환경 목록에서 Managed Airflow (3세대) 환경의 이름을 클릭합니다. 환경 세부정보 페이지가 열립니다.
스냅샷 로드를 클릭합니다.
스냅샷 로드 대화상자에서 찾아보기를 클릭합니다.
스냅샷이 있는 폴더를 선택합니다.
이 가이드에 기본 위치를 사용하는 경우 이 폴더는
/snapshots폴더에서 Managed Airflow (2세대) 환경 버킷에 있으며 이름은 스냅샷 저장 작업의 타임스탬프입니다. 스냅샷 생성 성공에 대한 메시지에 동일한 위치가 표시되었습니다.예를 들면
us-central1-example-916807e1-bucket/snapshots_example-project_us-central1_example-environment/2024-05-15T15-23-12입니다.로드 를 클릭하고 Managed Airflow가 스냅샷을 로드할 때까지 기다립니다.
gcloud
관리형 Airflow (2세대) 환경의 스냅샷을 관리형 Airflow (3세대) 환경에 로드합니다.
gcloud composer environments snapshots load \
COMPOSER_3_ENV \
--location COMPOSER_3_LOCATION \
--snapshot-path "SNAPSHOT_PATH"
다음을 바꿉니다.
COMPOSER_3_ENV: 관리형 Airflow (3세대) 환경의 이름입니다.COMPOSER_3_LOCATION: Managed Airflow (3세대) 환경이 위치한 리전입니다.SNAPSHOT_PATH: Managed Airflow (2세대) 환경 버킷의 URI와 스냅샷 경로입니다. 스냅샷 생성 성공에 대한 메시지에 동일한 위치가 표시되었습니다. 예를 들면gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2024-05-15T15-23-12입니다.
관리형 Airflow (3세대) 환경에서 DAG 일시중지 해제
다음 옵션 중에서 사용할 수 있습니다.
콘솔에서 DAG를 하나씩 일시중지 해제합니다. Google Cloud
콘솔에서 환경 페이지로 이동합니다. Google Cloud
환경을 선택해 세부정보를 표시합니다.
환경 세부정보 페이지에서 DAG 탭으로 이동합니다.
DAG 이름을 클릭합니다.
DAG 세부정보 페이지에서 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: 관리형 Airflow (3세대) 환경의 이름입니다.PROJECT_ID와 함께 프로젝트 ID입니다.COMPOSER_3_LOCATION을 환경이 위치한 리전으로 바꿉니다.
DAG 오류 확인
Airflow 웹 인터페이스에서 DAG로 이동하여 보고된 DAG 구문 오류를 확인합니다.
DAG 실행이 올바른 시간에 예약되었는지 확인합니다.
관리형 Airflow (3세대) 환경에서 DAG가 실행되도록 기다린 후 실행이 성공했는지 확인합니다. DAG 실행이 성공하면 관리형 Airflow (2세대) 환경에서 일시중지를 취소하지 마세요. 이렇게 하면 관리형 Airflow (2세대) 환경에서 동일한 시간 및 날짜에 DAG가 실행됩니다.
특정 DAG 실행이 실패하면 관리형 Airflow (3세대)에서 성공적으로 실행될 때까지 DAG 문제 해결을 시도합니다.
Managed Airflow (3세대) 환경 모니터링
모든 DAG 및 구성을 관리형 Airflow (3세대) 환경으로 전송한 후 잠재적 문제, 실패한 DAG 실행, 전반적인 환경 상태를 모니터링합니다.
관리형 Airflow (3세대) 환경이 충분한 시간 동안 문제없이 실행되면 관리형 Airflow (2세대) 환경을 삭제해도 됩니다.