Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
本頁面說明如何設定高度彈性的 Cloud Composer 環境。
關於 Cloud Composer 中區域故障的復原能力
具備高度彈性的 Cloud Composer 環境會使用內建的備援和容錯機制,降低環境發生區域故障和單點故障停機的可能性。
舉例來說,區域停機會中斷在特定區域執行的 Airflow 工作。之後,高復原力環境會復原,重新啟動不同區域中受影響的元件,並將資料庫切換至次要區域。因此,Airflow 可以重新排程並重新啟動失敗的 Airflow 工作,同時保留 DAG 執行記錄和其他設定。
高復原力環境會跨越所選區域的至少兩個區域運作。Cloud Composer 會自動將環境元件分散到各個可用區。
您可以使用具備高度彈性的 Cloud Composer 環境,處理重要的業務程序。
關於環境的高可用性資料庫
在高可用性的 Cloud Composer 環境中,儲存環境資料庫的 Cloud SQL 執行個體會以高可用性模式執行。已設定高可用性的 Cloud SQL 執行個體也稱為區域執行個體,位於已設定區域內的主要和次要可用區。在區域執行個體中,設定是由主要執行個體和待命執行個體組成。
發生中斷服務時,環境的 Cloud SQL 執行個體會自動將資料庫容錯移轉至待命的 Cloud SQL 執行個體。您不需要在 Cloud Composer 環境中執行任何其他動作。主區域重新運作後,環境就會切換回兩個區域 (主區域和次要區域)。在某些情況下,主要和次要可用區可以互換。處於高可用性模式的 Cloud SQL 執行個體會在容錯移轉後使用相同的 IP 位址。
關於高可用性的 Airflow 元件
高可用性的 Cloud Composer 環境會執行在區域間分散的 Airflow 元件。
您的環境一律會執行兩個 Airflow 排程器、兩個網路伺服器,以及至少兩個 (但最多十個) 觸發條件 (如果觸發條件已啟用)。這兩組元件會在不同的區域中執行。工作站數量下限設為兩個,而環境叢集會在區域之間分配工作站執行個體。如果發生區域服務中斷,受影響的工作站執行個體會在其他區域重新排程。
如要進一步瞭解高復原力環境的架構,請參閱「高復原力環境架構」。
事前準備
高復原力環境僅適用於私人 IP 環境。
相較於一般環境,高彈性環境會收取額外費用。
高復原力環境適用於 Cloud Composer 2.2.0 以上版本。
如果您想將標準環境更新為高復原力環境,請確認環境符合下列設定要求。如果環境不符合這些要求,您可以更新其規模和效能參數。
- Airflow 工作站數量下限為 2 個以上。
- Airflow 排程器的數量為 2。
- 如果您在 DAG 中使用可延遲運算子,則至少需要 2 個觸發器。
建立高度彈性的環境
如要建立高度彈性的環境,請在建立環境時啟用高彈性模式。
將標準環境更新為高度彈性模式
主控台
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。
選取「環境設定」分頁。
在「復原模式」部分中,按一下「編輯」。
選取「高復原能力」,然後按一下「儲存」。
gcloud
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--enable-high-resilience
更改下列內容:
ENVIRONMENT_NAME
:環境名稱。LOCATION
:環境所在的地區。
API
建構
environments.patch
API 要求。在這個要求中:
在
updateMask
參數中指定config.resilienceMode
遮罩。在要求主體中,指定
HIGH_RESILIENCE
以切換至高復原性模式。
範例:
// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.resilienceMode
{
"config": {
"resilience_mode": { "HIGH_RESILIENCE" }
}
}
Terraform
config
區塊中的 resilience_mode
欄位會指定復原模式。如要使用高復原力模式,請將此值設為 HIGH_RESILIENCE
。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
resilience_mode = "HIGH_RESILIENCE"
}
}
更改下列內容:
ENVIRONMENT_NAME
:環境名稱。LOCATION
:環境所在的地區。
範例:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
resilience_mode = "HIGH_RESILIENCE"
}
將高韌性環境變更為標準彈性模式
您隨時可以將環境變更為標準復原模式。此作業:
- 將環境中的網頁伺服器數量減少為 1。
- 關閉環境 Airflow 資料庫的高可用性模式。
請勿變更 Airflow 工作站、排程器或觸發器的最低數量設定。
主控台
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。
選取「環境設定」分頁。
在「復原模式」部分中,按一下「編輯」。
選取「標準復原能力 (預設)」,然後按一下「儲存」。
gcloud
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--disable-high-resilience
更改下列內容:
ENVIRONMENT_NAME
:Cloud Composer 環境名稱LOCATION
:環境所在的地區。
API
建構
environments.patch
API 要求。在這個要求中:
在
updateMask
參數中指定config.resilienceMode
遮罩。在要求主體中,指定
RESILIENCE_MODE_UNSPECIFIED
以切換至標準復原模式。
範例:
// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.resilienceMode
{
"config": {
"resilience_mode": { "RESILIENCE_MODE_UNSPECIFIED" }
}
}
Terraform
config
區塊中的 resilience_mode
欄位會指定復原模式。如要使用標準復原模式,請將此值設為 STANDARD_RESILIENCE
。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
resilience_mode = "STANDARD_RESILIENCE"
}
}
更改下列內容:
ENVIRONMENT_NAME
:環境名稱。LOCATION
:環境所在的地區。
範例:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
resilience_mode = "STANDARD_RESILIENCE"
}
檢查環境是否以高復原力模式運作
主控台
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。
選取「環境設定」分頁。
在「韌性模式」部分中,查看環境的韌性模式。
gcloud
如要檢查環境是否已啟用高復原性模式,請執行下列 Google Cloud CLI 指令。值為 True
表示環境已啟用高復原性模式。
gcloud composer environments describe ENVIRONMENT_NAME \
--location LOCATION \
--format="value(config.resilienceMode)"
更改下列內容:
ENVIRONMENT_NAME
:Cloud Composer 環境名稱LOCATION
:環境所在的地區。
後續步驟
- 為高度彈性的環境執行容錯測試。
- 使用環境快照進行災難復原