本文說明如何允許區域性代管執行個體群組 (MIG),在無法於原始可用區修復虛擬機器 (VM) 執行個體時,改在替代可用區修復。如要進一步瞭解 MIG 中的修復作業,請參閱「關於修復 VM 以確保高可用性」。
建立區域性 MIG 時,您必須選取一或多個可用區,讓 MIG 分配 VM。根據預設,如果 MIG 中的 VM 故障,MIG 會嘗試在原始可用區修復該 VM。您也可以選擇允許 MIG 在其他所選可用區中修復該 VM,這在 MIG 無法在原始可用區中修復 VM 時非常有用。MIG 會根據可用容量和配額選擇替代可用區。
限制
設定區域性 MIG 在替代可用區修復 VM 時,須遵守下列限制:
您必須啟用修復時更新。
不支援採用下列設定的區域性 MIG:
目標分配型態為
EVEN或ANY_SINGLE_ZONE的 MIG。具有有狀態設定的 MIG。
事前準備
-
如果尚未設定驗證,請先完成設定。驗證程序會確認您的身分,以便授予 Google Cloud 服務和 API 的存取權。如要從本機開發環境執行程式碼或範例,您可以選取下列其中一個選項,向 Compute Engine 進行驗證:
請根據您打算如何使用本頁範例,選取對應的分頁標籤:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證機制。
gcloud
-
安裝 Google Cloud CLI。 安裝完成後,請執行下列指令,初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
- 設定預設區域和可用區。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如果您使用的是本機殼層,請為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
如果您使用的是 Cloud Shell,則不必執行這項操作。
如果系統傳回驗證錯誤,且您使用的是外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI。
Terraform
如要在本機開發環境中使用本頁的 Terraform 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
詳情請參閱「 為本機開發環境設定驗證機制」。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」一節。
允許在替代可用區修復
如要允許 MIG 在替代可用區修復 VM,請選取下列其中一個選項:
控制台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
如果您已有 MIG,請按照下列步驟操作:
- 按一下 MIG 名稱。
- 按一下 [編輯]。
如果尚未建立 MIG,請按照下列步驟操作:
- 點選「建立執行個體群組」。
- 輸入名稱。
- 選取「執行個體範本」。
- 在「Location」(位置) 區段中,選取「Multiple zones」(多可用區),然後選取區域和可用區。
在「Target distribution shape」(目標分配型態) 下拉式選單中,選取「Balanced」(平衡) 或「Any」(不限)。
如果選取「Balanced」(平衡),請在顯示的對話方塊中按一下「Disable instance redistribution」(停用執行個體重新分配)。
如要選取「Any」(任何),必須先刪除自動調度資源設定。如要刪除自動調度資源,請在「Autoscaling mode」(自動調度資源模式) 下拉式選單中,按一下「Delete autoscaling configuration」(刪除自動調度資源設定)。
在「VM instance lifecycle」(VM 執行個體生命週期) 區段中,確認下列欄位設定如下:
「Default action on failure」(失敗時的預設動作) 清單設為「Repair instance」(修復執行個體)。
「Updates during VM instance repair」(VM 執行個體修復期間的更新設定) 設為「Update the instance configuration」(更新執行個體設定)。
在「Change zone during VM instance repair」(在 VM 執行個體修復期間變更可用區) 區段中,勾選「Allow repair of VMs in an alternate zone」(允許在替代可用區修復 VM) 核取方塊。
其他設定則可使用預設值或修改欄位。
完成後,按一下「Save」(儲存) (適用於現有 MIG) 或「Create」(建立) (適用於新 MIG)。
gcloud
如要設定現有的 MIG,在替代可用區修復 VM,請使用 update 指令:
gcloud compute instance-groups managed update MIG_NAME \
--on-repair-allow-changing-zone=YES \
--force-update-on-repair \
--region=REGION
如要建立可在替代可用區修復 VM 的 MIG,請使用 create 指令:
gcloud compute instance-groups managed create MIG_NAME \
--template=INSTANCE_TEMPLATE_URL \
--size=SIZE \
--zones=ZONES \
--target-distribution-shape=SHAPE \
--instance-redistribution-type=none \
--on-repair-allow-changing-zone=YES \
--force-update-on-repair
更改下列內容:
MIG_NAME:MIG 的名稱。INSTANCE_TEMPLATE_URL:執行個體範本的網址,用於在 MIG 中建立執行個體。網址可以包含執行個體範本的 ID 或名稱。請指定下列其中一個值:- 區域性執行個體範本:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - 全域執行個體範本:
INSTANCE_TEMPLATE_ID
- 區域性執行個體範本:
SIZE:MIG 的目標大小。ZONES:區域中的可用區清單,您要在這些可用區建立 MIG 中的 VM。SHAPE:目標分配型態。這個值可以是balanced或any。REGION:MIG 所在的區域。
Terraform
如果您尚未建立執行個體範本,請建立執行個體範本,指定 MIG 中每個 VM 的機型、開機磁碟映像檔、網路和其他 VM 屬性。
如要建立可在替代可用區修復 VM 的 MIG,請使用 google_compute_region_instance_group_manager 資源。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
REST
如要設定現有的 MIG,在替代可用區修復 VM,請使用 regionInstanceGroupManagers.patch 方法:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME
{
"instanceLifecyclePolicy": {
"onRepair": {
"allowChangingZone": "YES"
},
"forceUpdateOnRepair": "YES"
}
}
如要建立可在替代可用區修復 VM 的 MIG,請使用 regionInstanceGroupManagers.insert 方法:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
{
"name": "MIG_NAME",
"instanceTemplate": "INSTANCE_TEMPLATE_URL",
"targetSize": SIZE,
"distributionPolicy": {
"targetShape": "SHAPE"
}
"updatePolicy": {
"instanceRedistributionType": none
}
"instanceLifecyclePolicy": {
"forceUpdateOnRepair": "YES",
"onRepair": {
"allowChangingZone": "YES"
}
}
}
更改下列內容:
PROJECT_ID:您的專案 ID。REGION:MIG 所在的區域。MIG_NAME:MIG 的名稱。INSTANCE_TEMPLATE_URL:執行個體範本的網址,用於在 MIG 中建立執行個體。網址可以包含執行個體範本的 ID 或名稱。請指定下列其中一個值:- 區域性執行個體範本:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - 全域執行個體範本:
INSTANCE_TEMPLATE_ID
- 區域性執行個體範本:
SIZE:MIG 的目標大小。SHAPE:目標分配型態。這個值可以是BALANCED或ANY。
禁止在替代可用區修復
如果您將 MIG 設為在替代可用區修復 VM,可以還原預設設定,讓 MIG 在原始可用區修復 VM。
如要禁止在替代可用區修復,請選取下列其中一個選項:
控制台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
按一下 MIG 名稱。
按一下 [編輯]。
前往「VM instance lifecycle」(VM 執行個體生命週期) 區段。
在「Change zone during VM instance repair」(在 VM 執行個體修復期間變更可用區) 區段中,取消勾選「Allow repair of VMs in an alternate zone」(允許在替代可用區修復 VM) 核取方塊。
按一下 [儲存]。
gcloud
如要禁止在替代可用區中進行修復,請使用 update 指令:
gcloud compute instance-groups managed update MIG_NAME \
--on-repair-allow-changing-zone=NO \
--region=REGION
更改下列內容:
MIG_NAME:MIG 的名稱。REGION:MIG 所在的區域。
REST
如要禁止在替代可用區修復,請使用 regionInstanceGroupManagers.patch 方法:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME
{
"instanceLifecyclePolicy": {
"onRepair": {
"allowChangingZone": "NO"
}
}
}
更改下列內容:
PROJECT_ID:您的專案 ID。REGION:MIG 所在的區域。MIG_NAME:MIG 的名稱。
後續步驟
- 查看 MIG 的修復設定。
- 監控 MIG 中的執行個體分布情形,觀察執行個體在各可用區的分布變化。
- 列出代管執行個體,查看 VM 的可用區。