Cloud Composer 3 | Cloud Composer 2 | Cloud Composer�
本頁說明如何為環境定義維護期間。
關於維護期間
維護期間是指您允許 Cloud Composer 執行維護作業的時間範圍。舉例來說,您可以指定 DAG 排程時間以外的維護時間,確保重要工作執行作業不會中斷。
您可以透過維護期間,控管環境的維護時間:
如果您為環境定義自訂維護期間,Cloud Composer 會在這些期間執行維護作業。
如果未定義環境的維護期間,Cloud Composer 會隨時執行維護作業。
維護期間的運作方式
維護期間的運作方式如下:
維護作業每週至少需要 12 小時。
你可以使用多個時段,但每個時段的長度至少須為 4 小時。
在維護期間,環境會持續運作。維護作業進行期間,環境中的部分元件可能會暫時無法使用。
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)。
維護期間外的維護作業
在下列情況下,Cloud Composer 可能會在設定的維護期間外執行維護作業:
在緊急情況下 (例如修正重大安全漏洞時),部分維護作業可能會在一般維護期間外執行。
如果 Cloud Composer 無法在維護期間執行例行維護作業達 30 天,就會在指定維護期間外執行重大維護作業。如果維護期間設定錯誤,導致 Cloud Composer 無法對環境執行維護作業,這項機制就會派上用場。
如何使用維護期間
維護作業可能會影響 DAG 和 Airflow 工作的執行,因此建議您採取下列行動:
為 Cloud Composer 環境定義維護期間。
在 DAG 中使用
start_date
和schedule_interval
參數,在指定維護期間以外的時間排定 DAG 執行作業。
為新環境指定維護期間
建立環境時,您可以指定維護期間。詳情請參閱「建立環境」。
為現有環境指定維護期間
主控台
如要為現有環境定義或變更維護期間,請更新環境:
前往 Google Cloud 控制台的「Environments」頁面。
選取環境。
前往「環境設定」分頁。
按一下「維護時段」項目旁邊的「編輯」。
在「維護期間」對話方塊中,勾選「自訂維護期間的時間」核取方塊。
設定「開始時間」、「時區」、「天數」和「長度」,確保指定時間表的總時數在 7 天的滾動窗口中至少為 12 小時。舉例來說,每週一、三、五各 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 支援兩種格式:FREQ=DAILY
格式指定每日週期。FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA
格式會指定在所選星期幾重複執行。
以下範例指定維護期間為 6 小時,時間為週三、週六和週日的世界標準時間 01:00 至 07:00。系統會忽略 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 支援兩種格式:FREQ=DAILY
格式指定每日週期。FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA
格式會指定在所選星期幾重複執行。
以下範例指定星期三、星期六和星期日,在 01:00 到 07:00 (世界標準時間) 之間進行 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
格式會指定在所選星期幾重複執行。
以下範例指定維護期間為 6 小時,時間為週三、週六和週日的世界標準時間 01:00 至 07:00。系統會忽略 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"
}
}
}