유지보수 기간 지정

Cloud Composer 1 | Cloud Composer 2

이 페이지에서는 환경 유지보수 기간을 정의하는 방법을 설명합니다.

유지보수 기간 정보

유지보수 기간은 Cloud Composer가 유지보수 작업을 수행하도록 허용하는 기간입니다. 예를 들어 DAG 일정 시간 이외의 유지보수 기간을 지정하여 중요한 태스크 실행이 중단되지 않게 할 수 있습니다.

유지보수 기간을 사용하면 사용자 환경에 유지보수가 수행되는 기간을 제어할 수 있습니다.

  • 환경의 커스텀 유지보수 기간을 정의하면 Cloud Composer가 정의된 기간 동안 유지보수를 수행합니다.

  • 환경의 유지보수 기간을 정의하지 않으면 Cloud Composer에서 언제든지 유지보수를 수행할 수 있습니다.

유지보수 기간 중 발생 사항

유지보수 기간을 지정할 때는 일주일 동안 최소 12시간의 유지보수 작업 시간을 제공합니다.

  • 유지보수 기간 중에도 환경을 계속 사용할 수 있습니다. 유지보수 작업이 진행되면 환경의 일부 구성요소를 일시적으로 사용하지 못할 수 있습니다.
  • Cloud Composer가 모든 유지보수 작업을 예약하고 수행하는 데 필요한 시간을 충분히 확보하려면 12시간이 필요합니다. 그렇다고 해서 유지보수 작업이 12시간 내내 이루어지거나 매주 진행된다는 의미는 아닙니다.

일부 태스크가 중단되고 재시도될 수 있는 한 유지보수 기간 동안 DAG를 계속 실행할 수 있습니다. 유지보수 기간 중에 DAG를 실행하는 경우 태스크 재시도를 사용 설정해야 합니다. Airflow 구성, DAG 또는 태스크 수준에서 태스크 재시도를 구성할 수 있습니다.

유지보수 작업은 환경에 다음과 같은 영향을 미칠 수 있습니다.

  • 일부 환경 매개변수를 일시적으로 변경하지 못할 수 있습니다.
  • Airflow 데이터베이스에 대한 연결이 일시적으로 중단될 수 있습니다.

  • 일부 Airflow 태스크가 중단될 수 있습니다. 유지보수 작업이 완료되면 Airflow가 이러한 태스크에 대한 재시도를 예약합니다(별도로 구성되지 않은 경우).

기본 유지보수 기간

기본적으로 Cloud Console, API 또는 Terraform에서 유지보수 기간을 만드는 경우 Cloud Composer 1 환경에는 정의된 유지보수 기간이 없습니다. 새 환경과 기존 환경의 유지보수 기간을 지정하는 것이 좋습니다.

gcloud CLI를 사용하여 환경을 만드는 경우 환경의 기본 유지보수 기간은 매주 일요일, 금요일, 토요일 00:00:00~04:00:00(GMT)입니다.

유지보수 기간 사용 방법

유지보수 작업이 DAG 및 Airflow 태스크 실행에 영향을 미칠 수 있으므로 다음을 수행하는 것이 좋습니다.

  1. Cloud Composer 환경의 유지보수 기간을 정의하세요.

  2. DAG에서 start_dateschedule_interval 매개변수를 사용하여 지정된 유지보수 기간 외에 DAG가 실행되도록 예약하세요.

새 환경 유지보수 기간 지정

환경을 만들 때 유지보수 기간을 지정할 수 있습니다. 자세한 내용은 환경 만들기를 참조하세요.

기존 환경 유지보수 기간 지정

Console

기존 환경의 유지보수 기간을 정의하거나 변경하려면 환경을 업데이트하세요.

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

    환경으로 이동

  2. 환경을 선택합니다.

  3. 환경 구성 탭으로 이동합니다.

  4. 유지보수 기간 항목 옆에 있는 수정을 클릭합니다.

  5. 유지보수 기간 대화상자에서 유지보수 기간에 커스텀 시간 설정 체크박스를 선택합니다.

  6. 시작 시간, 시간대, , 길이를 설정하여 지정한 일정의 총 기간이 7일 순환 기간 동안 최소 12시간이 되도록 합니다. 예를 들어 매주 월요일, 수요일, 금요일마다 4시간이면 필요한 시간을 제공합니다.

  7. 저장을 클릭하고 환경이 업데이트될 때까지 기다립니다.

gcloud

환경을 업데이트할 때 다음 인수들이 유지보수 기간 매개변수를 정의합니다.

  • --maintenance-window-start는 유지보수 기간의 시작 시간을 설정합니다.
  • --maintenance-window-end는 유지보수 기간의 종료 시간을 설정합니다.
  • --maintenance-window-recurrence유지보수 기간 반복을 설정합니다.
gcloud beta composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --maintenance-window-start 'DATETIME_START' \
    --maintenance-window-end 'DATETIME_END' \
    --maintenance-window-recurrence 'MAINTENANCE_RECURRENCE'

다음과 같이 바꿉니다.

  • ENVIRONMENT_NAME을 환경 이름으로 바꿉니다.
  • DATETIME_START날짜/시간 입력 형식의 시작 날짜 및 시간으로 바꿉니다. 지정한 시간만 사용되며 날짜는 무시됩니다.
  • DATETIME_END날짜/시간 입력 형식의 종료 날짜 및 시간으로 바꿉니다. 지정한 시간만 사용되며 날짜는 무시됩니다. 지정한 날짜와 시간은 시작일 이후여야 합니다.
  • MAINTENANCE_RECURRENCE를 유지보수 기간 반복을 위한 RFC 5545 RRULE로 바꿉니다. Cloud Composer는 다음 두 가지 형식을 지원합니다.

  • FREQ=DAILY 형식은 일일 반복을 지정합니다.

  • FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA 형식은 선택한 요일의 반복을 지정합니다.

다음 예시는 일요일, 수요일, 토요일 01:00~07:00 (UTC) 사이의 6시간 유지보수 기간을 지정합니다. 2021년 1월 1일이라는 날짜는 무시됩니다.

gcloud beta composer environments update example-environment \
  --location us-central1 \
  --maintenance-window-start '2021-01-01T01:00:00Z' \
  --maintenance-window-end '2021-01-01T07:00:00Z' \
  --maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=SU,WE,SA'

API

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

  2. 이 요청의 작성 방법:

    1. updateMask 매개변수에서 config.maintenanceWindow 마스크를 지정합니다.

    2. 요청 본문에서 유지보수 기간 매개변수를 지정합니다.

{
  "config": {
    "maintenanceWindow": {
      "startTime": "DATETIME_START",
      "endTime": "DATETIME_END",
      "recurrence": "MAINTENANCE_RECURRENCE"
    }
  }
}

다음과 같이 바꿉니다.

  • DATETIME_START날짜/시간 입력 형식의 시작 날짜 및 시간으로 바꿉니다. 지정한 시간만 사용되며 날짜는 무시됩니다.
  • DATETIME_END날짜/시간 입력 형식의 종료 날짜 및 시간으로 바꿉니다. 지정한 시간만 사용되며 날짜는 무시됩니다. 지정한 날짜와 시간은 시작일 이후여야 합니다.
  • MAINTENANCE_RECURRENCE를 유지보수 기간 반복을 위한 RFC 5545 RRULE로 바꿉니다. Cloud Composer는 다음 두 가지 형식을 지원합니다.

    • FREQ=DAILY 형식은 일일 반복을 지정합니다.
    • FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA 형식은 선택한 요일의 반복을 지정합니다.

다음 예시는 일요일, 수요일, 토요일 01:00~07:00 (UTC) 사이의 6시간 유지보수 기간을 지정합니다. 2021년 1월 1일이라는 날짜는 무시됩니다.

  // PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
  // locations/us-central1/environments/example-environment?updateMask=
  // config.maintenanceWindow

  {
    "config": {
      "maintenanceWindow": {
        "startTime": "2021-01-01T01:00:00Z",
        "endTime": "2021-01-01T07:00:00Z",
        "recurrence": "FREQ=WEEKLY;BYDAY=SU,WE,SA"
      }
    }
  }

Terraform

maintenance_window 블록은 환경의 유지보수 기간을 지정합니다.

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    maintenance_window {
      start_time = "DATETIME_START"
      end_time = "DATETIME_END"
      recurrence = "MAINTENANCE_RECURRENCE"
    }
  }
}

다음과 같이 바꿉니다.

  • ENVIRONMENT_NAME을 환경 이름으로 바꿉니다.
  • LOCATION을 환경이 위치한 리전으로 바꿉니다.
  • DATETIME_START날짜/시간 입력 형식의 시작 날짜 및 시간으로 바꿉니다. 지정한 시간만 사용되며 날짜는 무시됩니다.
  • DATETIME_END날짜/시간 입력 형식의 종료 날짜 및 시간으로 바꿉니다. 지정한 시간만 사용되며 날짜는 무시됩니다. 지정한 날짜와 시간은 시작일 이후여야 합니다.
  • MAINTENANCE_RECURRENCE를 유지보수 기간 반복을 위한 RFC 5545 RRULE로 바꿉니다. Cloud Composer는 다음 두 가지 형식을 지원합니다.

    • FREQ=DAILY 형식은 일일 반복을 지정합니다.
    • FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA 형식은 선택한 요일의 반복을 지정합니다.

다음 예시는 일요일, 수요일, 토요일 01:00~07:00 (UTC) 사이의 6시간 유지보수 기간을 지정합니다. 2021년 1월 1일이라는 날짜는 무시됩니다.

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    maintenance_window {
      start_time = "2021-01-01T01:00:00Z"
      end_time = "2021-01-01T07:00:00Z"
      recurrence = "FREQ=WEEKLY;BYDAY=SU,WE,SA"
    }
  }
}

다음 단계