유지보수 기간 지정

Cloud Composer 1 | Cloud Composer 2

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

유지보수 기간 정보

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

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

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

  • 환경에 커스텀 유지보수 기간을 정의하지 않으면 Cloud Composer에서 기본 유지보수 기간 동안 유지보수를 수행합니다.

유지보수 기간 중 발생 사항

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

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

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

Cloud Composer 2에서 실행하는 데 55분 미만이 소요되는 태스크는 일반적으로 유지보수 작업의 영향을 받지 않지만, 스케줄러 재시작을 견딜 수 있으려면 재시도를 사용 설정해야 합니다. 스케줄러는 유지보수 기간 외에 표준 Composer 작업 중에 다시 시작될 수 있습니다.

Cloud Composer는 Airflow 작업자에게 유지보수 작업이 곧 진행될 것임을 알립니다. Airflow 작업자가 이미 시작된 태스크를 완료하고 새 태스크를 선택하지 않습니다. 이러한 새 태스크는 유지보수 작업을 수행하지 않는 Airflow 작업자에 의해 실행됩니다.

복원력이 우수한 환경을 사용하면 유지보수 작업 중에 환경의 Airflow 구성요소가 서로 다른 시간에 다시 시작될 가능성이 높습니다(유지보수 작업 유형에 따라 다름). 전반적으로 복원력이 우수한 환경을 사용하면 유지보수 작업 중에 환경의 다운타임이 줄어듭니다.

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

  • 일부 환경 매개변수를 변경하거나 새 버전으로 업그레이드하는 것이 일시적으로 불가능할 수 있습니다.

  • Airflow 데이터베이스에 대한 직접 SQL 쿼리는 평소보다 오래 걸릴 수 있으며 다시 시도해야 할 수도 있습니다.

  • Airflow UI를 일시적으로 사용하지 못할 수 있습니다.

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

기본 유지보수 기간

기본적으로 유지보수 기간은 매주 금요일, 토요일, 일요일 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 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시간을 지정합니다. 2023년 1월 1일 날짜는 무시됩니다.

gcloud composer environments update example-environment \
  --location us-central1 \
  --maintenance-window-start '2023-01-01T01:00:00Z' \
  --maintenance-window-end '2023-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시간을 지정합니다. 2023년 1월 1일 날짜는 무시됩니다.

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

  {
    "config": {
      "maintenanceWindow": {
        "startTime": "2023-01-01T01:00:00Z",
        "endTime": "2023-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시간을 지정합니다. 2023년 1월 1일 날짜는 무시됩니다.

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

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

다음 단계