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

Cloud Composer 1 | Cloud Composer 2

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

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

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

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

  • ご使用の環境でカスタム メンテナンスの時間枠を定義すると、Cloud Composer は定義された期間にメンテナンスを実行します。

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

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

メンテナンスの時間枠を指定する場合は、1 週間のうち少なくとも 12 時間はメンテナンス オペレーションに使用します。

  • メンテナンスの時間枠の間は環境が利用可能な状態で保持されます。メンテナンス オペレーション中は、環境の一部のコンポーネントが一時的に使用できなくなる場合があります。
  • この 12 時間は、Cloud Composer がすべてのメンテナンス操作のスケジュールを設定して実行するのに十分な時間を確保するために必要です。これは、メンテナンスのオペレーションに 12 時間を要する、またはメンテナンスが毎週実施されるということではありません。

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

メンテナンス オペレーションは、環境に次のような影響を与える可能性があります。

  • 環境の一部のパラメータは一時的に変更できない可能性があります。
  • Airflow データベースへの接続が一時的に中断される場合があります。

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

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

デフォルトでは、Cloud Composer 1 環境をCloud Console、API、または Terraform から作成した場合、メンテナンスの時間枠は定義されていません。新しい環境と既存の環境にメンテナンスの時間枠を指定することをおすすめします。

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

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

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

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

次のステップ