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、タスクレベルで構成できます。
実行時間が 55 分未満のタスクは、通常、メンテナンス オペレーションの影響を受けませんが、スケジューラの再起動に耐えるように再試行を有効にする必要があります。スケジューラは、メンテナンスの時間枠外で、標準の Cloud Composer オペレーション中に再起動されることがあります。
Cloud Composer は、メンテナンス オペレーションがまもなく行われることを Airflow ワーカーに通知します。Airflow ワーカーはすでに開始されたタスクを終了し、新しいタスクは選択しません。これらの新しいタスクは、メンテナンス オペレーションの対象外となる Airflow ワーカーによって実行されます。
復元性の高い環境を使用する場合、環境の Airflow コンポーネントはメンテナンス オペレーション中にさまざまなタイミングで再起動する可能性があります(メンテナンス オペレーションの種類によって異なります)。全体的に、復元性の高い環境を使用すると、メンテナンス オペレーション中の環境のダウンタイムが短縮されます。
メンテナンス オペレーションは、環境に次のような影響を及ぼします。
Airflow UI が一時的に利用できなくなる場合があります。
環境のパラメータの一部の変更や後続のバージョンへのアップグレードは、一時的にできなくなる場合があります。
Airflow データベースへの直接 SQL クエリは、通常よりも時間がかかり、再試行が必要になる場合があります。
実行するのに 55 分以上かかる一部の Airflow タスクが中断されることがあります。メンテナンス オペレーションが完了すると、Airflow はこれらのタスクの再試行をスケジュールします(別途構成していない場合)。
デフォルトのメンテナンスの時間枠
Cloud Composer 2 のデフォルトのメンテナンスの時間枠は、毎週金曜日、土曜日、日曜日の 00:00:00~04:00:00(GMT)です。
メンテナンスの時間枠の使用方法
メンテナンス オペレーションは DAG と Airflow タスクの実行に影響する可能性があるため、次の手順を行うことをおすすめします。
Cloud Composer 環境のメンテナンス時間枠を定義する。
DAG の
start_date
とschedule_interval
パラメータを使用して、指定したメンテナンスの時間枠外で DAG の実行をスケジュールする。
新しい環境のメンテナンス時間枠の指定
環境を作成するときに、メンテナンスの時間枠を指定できます。詳細については、環境の作成をご覧ください。
既存の環境のメンテナンス時間枠の指定
コンソール
既存の環境のメンテナンス時間枠を定義または変更するには、環境を更新します。
Google Cloud Console で [環境] ページに移動します。
環境を選択します。
[環境の設定] タブに移動します。
[メンテナンスの時間枠] エントリの横にある [編集] をクリックします。
[メンテナンスの時間枠] ダイアログで、[メンテナンスの時間枠にカスタム時間を設定する] チェックボックスをオンにします。
[開始時刻]、[タイムゾーン]、[日数]、[長さ] を設定し、指定したスケジュールを組み合わせた時間が、少なくとも 12 時間を 7 日間で繰り返す時間枠になるようにします。たとえば、毎週月曜日、水曜日、金曜日の 4 時間に、必要な時間を指定します。
[保存] をクリックして、環境が更新されるまで待ちます。
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
environments.patch
API リクエストを作成します。このリクエストで次のように操作します。
updateMask
パラメータで、config.maintenanceWindow
マスクを指定します。リクエスト本文で、メンテナンスの時間枠のパラメータを指定します。
{
"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"
}
}
}