환경 스냅샷 저장 및 로드

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

이 페이지에서는 환경 스냅샷을 사용하여 환경 상태를 저장 및 로드하는 방법을 설명합니다.

스냅샷을 자동으로 저장하도록 환경을 구성할 수 있습니다. 자세한 내용은 예약된 스냅샷 구성을 참조하세요.

환경 스냅샷 정보

환경 스냅샷에는 해당 환경의 상태가 저장됩니다. 필요에 따라 환경 스냅샷을 저장 및 로드할 수 있습니다.

스냅샷을 사용하면 다음을 수행할 수 있습니다.

스냅샷 저장 방법

환경 스냅샷은 환경 상태를 설명하고 환경 데이터 백업이 저장된 파일 집합입니다.

환경 스냅샷은 여러 개를 만들 수 있습니다. 환경 스냅샷은 증분식이 아닙니다. 스냅샷은 다른 스냅샷과 독립적으로 사용할 수 있습니다.

Cloud Composer에서는 사용자가 환경을 삭제할 때 스냅샷이 삭제되지 않습니다.

기본적으로 Cloud Composer에서는 환경 버킷의 snapshots/ 폴더에 스냅샷이 저장됩니다. 스냅샷을 만들 때는 커스텀 위치도 지정할 수 있습니다.

편의를 위해 Cloud Storage UI에서 데이터가 폴더로 표시되지만 버킷은 플랫 파일 구조로 작동합니다. 그래도 Google Cloud 콘솔에서는 스냅샷을 저장 및 로드할 때 방식이 달라지지 않지만 버킷의 파일에서 직접 작업을 수행할 때는 이 점에 유의해야 합니다. 자세한 내용은 객체 네임스페이스를 참고하세요.

스냅샷에 대한 보안 고려사항

이러한 보안 위험을 해결하기 위해서는 키 또는 비밀번호와 같은 Airflow DAG에 사용되는 민감한 정보를 Secret Manager에서 저장할 수 있습니다. 자세한 내용은 환경의 Secret Manager 구성을 참조하세요.

환경 버킷의 보안 권한을 확인합니다. 커스텀 버킷에 환경 스냅샷을 저장할 때는 액세스 권한이 프로젝트에 올바르게 구성되었는지 확인합니다. 권한을 할당할 때는 환경의 서비스 계정에 스냅샷을 저장하고 버킷에서 로드하는 데 필요한 권한이 충분한지 확인합니다.

스냅샷에 저장되는 데이터

Cloud Composer에서 스냅샷에 저장되는 데이터는 다음과 같습니다.

  • Airflow 구성 재정의
  • 환경 변수
  • 커스텀 PyPI 패키지 목록(요구사항)
  • 수행된 태스크 상태, DAG 실행 기록을 포함한 Airflow 데이터베이스 백업
  • 환경 버킷의 /dags, /data, /plugins 폴더 백업
  • 환경의 퍼넷 키
  • 환경 규모, 성능 매개변수와 같은 환경 구성과 관련된 기타 정보 Cloud Composer에서 스냅샷을 로드할 때는 이 정보가 사용되지 않습니다.

스냅샷에서 로드되는 데이터

Cloud Composer에서 스냅샷에서 로드되는 데이터는 다음과 같습니다.

  • Airflow 구성 재정의
  • 환경 변수
  • 커스텀 PyPI 패키지(설치 건너뛰기를 선택한 경우 제외)

  • 수행된 태스크 및 DAG 실행 기록을 포함한 Airflow 데이터베이스의 콘텐츠

  • 스냅샷에서 /dags, /data, /plugins 폴더 콘텐츠가 환경 버킷에 로드됩니다.

  • 스냅샷의 퍼넷 키는 환경 자체 퍼넷 키를 사용하여 스냅샷의 데이터를 다시 암호화하기 위해 사용됩니다. 환경의 퍼넷 키는 변경되지 않은 상태로 유지됩니다.

Cloud Composer에서 환경 구성에 대한 일부 정보가 스냅샷에 저장되지만 스냅샷을 로드할 때 사용되지 않습니다. 환경의 다음 매개변수는 스냅샷을 로드할 때 변경되지 않습니다.

  • 환경 규모 및 성능 매개변수와 같은 환경 구성
  • 환경의 네트워킹 구성
  • /dags, /data, /plugins 폴더 외부에 있는 환경 버킷의 콘텐츠
  • 환경 라벨

Cloud Composer API를 사용하지 않고 Cloud Composer 인프라에 적용한 모든 설정은 스냅샷을 로드할 때 손실됩니다.

부분적으로 완료된 작업 정보

스냅샷을 로드할 때는 작업이 성공하거나, 실패하거나, 부분적으로 완료될 수도 있습니다.

  • 작업이 성공하면 스냅샷의 모든 데이터가 로드됩니다.
  • 작업이 실패하면 항목이 변경되지 않습니다.
  • 작업이 부분적으로 완료될 경우에는 스냅샷의 데이터가 일부만 로드됩니다. 이러한 작업은 실패로 보고되지만 오류 메시지에 성공적으로 로드된 데이터가 표시됩니다. 예를 들어 PyPI 패키지가 설치되었지만 Airflow 구성 옵션 재정의가 성공하지 못했으면 이를 나타내는 오류 메시지가 표시됩니다.

부분적으로 완료된 작업의 경우 동일한 스냅샷을 다시 로드하도록 시도할 수 있습니다. Cloud Composer에서 이전 시도로 성공한 단계는 건너뜁니다. 예를 들어 제한 시간으로 인해 작업이 실패했지만 데이터베이스가 성공적으로 로드되었으면 다음에 시도할 때 데이터베이스를 다시 로드하지 않습니다.

시작하기 전에

  • Cloud Composer 1에서는 스냅샷을 저장만 할 수 있고 로드할 수는 없습니다. Cloud Composer 1 환경의 스냅샷을 Cloud Composer 2 환경에 로드할 수 있습니다.
  • 스냅샷은 Cloud Composer 2 버전 2.0.9 이상에서 지원됩니다. Cloud Composer 1은 1.18.5 이상 버전에서 환경 스냅샷 저장을 지원합니다.

  • 스냅샷으로 환경이 생성되지는 않습니다. 한 환경의 스냅샷을 다른 환경에 로드하려면 먼저 새 환경을 만들고 여기에 스냅샷을 로드해야 합니다.

  • 오류 상태의 환경에는 스냅샷을 로드할 수 없습니다. 이러한 환경 문제는 스냅샷을 로드한다고 해서 해결되지 않습니다. 새 환경에는 기존 스냅샷을 계속 로드할 수 있습니다.

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

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

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

  • 환경 버킷에서 객체 이름의 최대 길이는 기호 1,024개 이하여야 합니다. 그렇지 않으면 스냅샷을 만들 수 없습니다.

  • 환경 버킷 외부에 스냅샷을 저장할 경우 해당 환경의 서비스 계정에 지정된 위치에 대한 읽기 및 쓰기 권한이 있어야 합니다. 예를 들어 스토리지 객체 관리자 역할에 그러한 권한이 포함되어 있습니다. 프로젝트 또는 특정 버킷에 이를 적용할 수 있습니다.

  • 스냅샷을 만들고 저장하면 Cloud Storage와 관련된 추가 비용이 발생합니다. 자세한 내용은 가격 책정을 참조하세요.

환경 스냅샷 저장

Cloud Composer는 지정한 폴더를 기준으로 하는 하위 폴더에 환경 스냅샷을 저장합니다. 폴더 이름에는 프로젝트 ID, 환경 위치, 환경 이름, 스냅샷이 저장되었을 때의 타임스탬프가 포함됩니다. 예를 들면 /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00입니다.

콘솔

환경의 스냅샷을 만들려면 다음 안내를 따르세요.

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

    환경으로 이동

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

  3. 스냅샷 저장을 클릭합니다.

  4. 스냅샷 저장 대화상자에서 스냅샷을 저장할 위치를 선택합니다.

    • 환경 버킷의 /snapshots 폴더에 스냅샷을 저장하려면 환경 버킷에서 스냅샷 폴더 사용(기본값)을 선택합니다.

    • 커스텀 폴더에 스냅샷을 저장하려면 다른 버킷의 커스텀 폴더 사용을 선택한 후 위치를 지정합니다.

  5. 저장을 클릭합니다.

gcloud

gcloud composer environments snapshots save 명령어는 환경의 스냅샷을 저장합니다.

  • snapshot-location 인수는 스냅샷이 저장되는 폴더를 지정합니다. 기본적으로 스냅샷은 환경 버킷의 /snapshots 폴더에 저장됩니다. 예를 들면 gs://us-central1-example-916807e1-bucket/snapshots입니다. 다른 폴더를 지정할 수도 있습니다.

환경의 스냅샷을 저장하려면 다음을 실행합니다.

gcloud composer environments snapshots save \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --snapshot-location "SNAPSHOTS_FOLDER"

다음과 같이 바꿉니다.

  • ENVIRONMENT_NAME: 환경 이름
  • LOCATION을 환경이 위치한 리전으로 바꿉니다.
  • (선택사항) SNAPSHOTS_FOLDER를 스냅샷을 저장할 버킷 폴더의 URI로 바꿉니다. 이 인수를 생략하면 Cloud Composer가 해당 환경 버킷의 /snapshots 폴더에 스냅샷을 저장합니다.

다음 예시에서는 기본 위치가 사용됩니다.

gcloud composer environments snapshots save \
  example-environment \
  --location us-central1

다음 예시에서는 커스텀 폴더에 저장합니다.

gcloud composer environments snapshots save \
  example-environment \
  --location us-central1 \
  --snapshot-location "gs://example-bucket/environment_snapshots"

API

  1. environments.saveSnapshot API 요청을 생성합니다.

  2. 요청 본문의 snapshotLocation 필드에 스냅샷을 저장할 폴더를 지정합니다.

{
  "snapshotLocation": "SNAPSHOTS_FOLDER"
}

다음과 같이 바꿉니다.

  • SNAPSHOTS_FOLDER를 스냅샷을 저장할 버킷 폴더의 URI로 바꿉니다.

예:

// POST https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment:saveSnapshot

{
  "snapshotLocation": "gs://us-central1-example-916807e1-bucket/snapshots"
}

Terraform

Terraform에서는 환경 스냅샷을 저장하고 로드할 수 없습니다.

스냅샷 저장 및 로드는 환경에서 수행되는 작업이고 결과 스냅샷은 환경 정의의 일부가 아닙니다. Terraform은 Cloud Composer 환경 구성만 관리하기 때문에 여기에서 환경 스냅샷을 저장하거나 로드할 수 없습니다.

환경 스냅샷 로드

Cloud Composer 1에서는 스냅샷을 저장만 할 수 있고 로드할 수는 없습니다. Cloud Composer 1 환경의 스냅샷을 Cloud Composer 2 환경에 로드할 수 있습니다. 예를 들어 Cloud Composer 2로 환경을 마이그레이션하는 경우를 들 수 있습니다.

다음 단계