Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
本頁面說明如何為環境定義維護期間。
關於維護期間
維護期間是指您允許 Cloud Composer 執行維護作業的一段時間。舉例來說,您可以指定 DAG 排程時間以外的維護時段,確保關鍵工作執行作業不會中斷。
您可以透過維護期間控管環境可進行維護的時間範圍:
如果您為環境定義自訂維護期間,Cloud Composer 會在這些指定期間執行維護作業。
如果您未為環境定義自訂維護期間,或指定空白值,Cloud Composer 會在預設維護期間執行維護作業。
維護期間的運作方式
維護期間的運作方式如下:
維護作業需要在單週內分配至少 12 小時。
您可以使用多個時段,但每個時段的時間長度必須至少 4 小時。
在維護期間,環境會持續運作。在維護作業期間,環境中的部分元件可能會暫時無法使用。
必須預留 12 小時,讓 Cloud Composer 有足夠的時間排定並執行所有維護作業。這並不表示維護作業會花費整整 12 小時,甚至不會每週進行。
只要您可以接受部分工作中斷並重新嘗試,還是可以在維護期間執行 DAG。如果您在維護期間執行 DAG,請務必啟用工作重試功能。您可以在 Airflow 設定、DAG 或工作層級設定重試工作。
執行時間少於 24 小時的工作通常不會受到維護作業的影響,但仍需要啟用重試功能,才能在排程器重新啟動時繼續執行。在標準 Cloud Composer 作業期間,排程器可能會在維護期間以外重新啟動。
Cloud Composer 會通知 Airflow worker 即將執行維護作業。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。
如何使用維護期間
維護作業可能會影響 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
格式會指定在所選星期幾重複發生的事件。
以下範例指定星期三、星期六和星期日的 01:00 至 07:00 (世界標準時間) 之間的 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 支援兩種格式: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
格式會指定在所選星期幾重複發生的事件。
以下範例指定星期三、星期六和星期日的 01:00 至 07:00 (世界標準時間) 之間的 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"
}
}
}