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 或工作層級設定工作重試。
執行時間少於 24 小時的工作通常不會受到維護作業影響,但仍須啟用重試功能,才能承受排程器重新啟動。在標準 Cloud Composer 作業期間,排程器可能會在維護期外重新啟動。
Cloud Composer 會通知 Airflow 工作人員即將進行維護作業。Airflow 工作站會完成已啟動的工作,但不會挑選新工作。這些新工作會由未進行維護作業的 Airflow 工作站執行。
如果您使用具備高度彈性的環境,維護作業期間環境的 Airflow 元件可能會在不同時間重新啟動 (視維護作業類型而定)。總而言之,使用高韌性環境可減少維護作業期間的環境停機時間。
維護作業對環境的影響如下:
Airflow UI 可能暫時無法使用。
如有可用的升級,Cloud Composer 可能會執行自動基礎架構升級作業。
您可能無法變更環境的部分參數,或暫時無法變更。
如果部分 Airflow 工作執行時間超過 24 小時,可能會遭到中斷。維護作業完成後,Airflow 排程會重試這些工作 (如果未另行設定)。
預設維護期間
Cloud Composer 3 的預設維護時段定義如下:
- 所有時間均以環境所在區域的當地時區為準,但會忽略日光節約時間。
- 週二、週三、週四和週五的維護時間為 00:00:00 至 02:00:00。
- 週六、週日和週一的維護時間為 00:00:00 到 04:00:00。
維護期間外的維護作業
在下列情況下,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"
}
}
}