メンテナンスの時間枠を指定する

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

このページでは、環境のメンテナンスの時間枠を定義する方法について説明します。

メンテナンスの時間枠について

メンテナンスの時間枠とは、Cloud Composer でメンテナンス オペレーションを行えるようにする期間です。たとえば、DAG のスケジュール時間外にメンテナンスの時間枠を指定することで、重要なタスクの実行が中断されないようにすることができます。

メンテナンスの時間枠を使用すると、環境でメンテナンスが実施される期間を制御できます。

  • 環境にカスタム メンテナンスの時間枠を定義すると、Cloud Composer はこれらの定義された期間内にメンテナンスを実施します。

  • 環境にメンテナンスの時間枠を定義しない場合、Cloud Composer は任意の時間にメンテナンスを行います。

メンテナンスの時間枠で発生した内容

メンテナンスの時間枠を指定する場合は、メンテナンス オペレーションに対して 1 週間に 12 時間以上かけるようにします。

  • メンテナンスの時間枠の間、環境は使用可能な状態が保たれます。環境の一部のコンポーネントが、メンテナンス オペレーション中に一時的に使用できなくなる場合があります。

  • Cloud Composer がすべてのメンテナンス オペレーションのスケジュールを設定して実行するのに十分な時間を確保するためには 12 時間が必要です。これは、メンテナンス オペレーションが毎週 12 時間かかる、または毎週発生するという意味ではありません。

一部のタスクの中断と再試行が許可されていれば、メンテナンスの時間枠で DAG を引き続き実行できます。メンテナンスの時間枠内に DAG を実行する場合は、必ずタスクの再試行を有効にしてください。タスクの再試行は、Airflow 構成、DAG、タスクレベルで構成できます。

メンテナンス オペレーションは、環境に次のような影響を及ぼします。

  • Airflow UI が一時的に利用できなくなる場合があります。

  • 環境のパラメータの一部の変更や後続のバージョンへのアップグレードは、一時的にできなくなる場合があります。

  • Airflow データベースへの直接 SQL クエリは、通常よりも時間がかかり、再試行が必要になる場合があります。

  • 一部の Airflow タスクが中断される場合があります。メンテナンス オペレーションが完了すると、Airflow はこれらのタスクの再試行をスケジュールします(別途構成していない場合)。

デフォルトのメンテナンスの時間枠

デフォルトでは、Google Cloud コンソール、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 の実行をスケジュールする。

新しい環境のメンテナンス時間枠の指定

環境を作成するときに、メンテナンスの時間枠を指定できます。詳細については、環境の作成をご覧ください。

既存の環境のメンテナンス時間枠の指定

コンソール

既存の環境のメンテナンス時間枠を定義または変更するには、環境を更新します。

  1. Google Cloud Console で [環境] ページに移動します。

    [環境] に移動

  2. 環境を選択します。

  3. [環境の設定] タブに移動します。

  4. [メンテナンスの時間枠] エントリの横にある [編集] をクリックします。

  5. [メンテナンスの時間枠] ダイアログで、[メンテナンスの時間枠にカスタム時間を設定する] チェックボックスをオンにします。

  6. [開始時刻]、[タイムゾーン]、[日数]、[長さ] を設定し、指定したスケジュールを組み合わせた時間が、少なくとも 12 時間を 7 日間で繰り返す時間枠になるようにします。たとえば、毎週月曜日、水曜日、金曜日の 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 では、次の 2 つの形式がサポートされています。

  • 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 では、次の 2 つの形式がサポートされています。

    • 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 では、次の 2 つの形式がサポートされています。

    • 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"
    }
  }
}

次のステップ