如果您使用區域性代管執行個體群組 (MIG),可以將該 MIG 的目標分配型態設為下列其中一個選項:
- EVEN (預設):群組會建立及刪除 VM,以在所選區域中達到並維持相同數量的 VM。在
EVEN分配方式中,任兩個區域之間的 VM 數量差異不會超過 1 個。建議用於高可用性服務工作負載。 - BALANCED:群組會優先在資源可用的可用區中建立 VM,同時盡可能在所選可用區中平均分配 VM,以盡量減少可用區故障的影響。建議用於高可用性服務或批次工作負載。
- ANY:群組會選擇可用區來建立 VM 執行個體,以滿足目前資源限制內的 VM 數量要求,並盡量使用未使用的區域預留項目。建議用於不需要高可用性的批次工作負載。
- 任何單一可用區:群組會在單一可用區中建立所有 VM 執行個體。系統會根據硬體支援、目前的資源和配額可用性,以及相符的預留項目選擇可用區。建議搭配 密集執行個體配置政策使用,適用於需要 VM 之間大量通訊的工作負載。
如要在地區代管執行個體群組中使用預留 VM,請在各個適用區域中建立具有相同名稱的相同預留項目。接著,在群組的執行個體範本中指定保留項目名稱。
建立區域 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 時選取可用區。
如果您在 MIG 的執行個體範本或具狀態設定中指定資源,但這些資源並非在所有選取的可用區中都適用,則適用下列限制:
如要將目標分配型態設為
BALANCED或ANY_SINGLE_ZONE,請停用主動式執行個體重新分配功能。如果將目標分配型態設為
BALANCED、ANY或ANY_SINGLE_ZONE,則適用下列限制:- 不支援更新至兩個版本的 Canary。
- 如果整個地區的資源供應量有限,群組可能會在資源已無法使用的可用區中,排定 VM 執行個體建立作業。您可以嘗試縮減和擴大群組大小,在其他可用區取得要求的資源。
- 使用
SUBSTITUTE替換方法的滾動更新作業,會嘗試在與過時機器相同的區域中建立新的更新執行個體,即使該區域沒有資源可滿足新版本的需求也一樣。如要解決這個問題,您可以從受限區域刪除過時的 VM,然後將群組大小增加刪除的 VM 數量。群組會在有可用容量的區域,使用最新範本建立執行個體。 - 如要將群組的執行個體範本更新為指定資源的範本,但這些資源並非在所有選取的區域中都適用,您必須先從不支援的區域移除代管執行個體,再設定新範本。
如果將目標分配型態設為
ANY_SINGLE_ZONE,且群組在單一區域中已有 VM,則只能在該區域中建立額外 VM。如要使用其他可用區,請先將群組水平縮減為零部 VM。如要佈建一組單一租戶 VM,請將代管執行個體群組:MIG 的目標分配型態設為
EVEN。在與 MIG 相同的區域中建立節點群組,並在 MIG 的執行個體範本中設定 MIG 的節點親和性。
建立具有目標分配形狀的群組
如要建立群組、選取群組的可用區,並設定目標分配形狀,請使用 Google Cloud console、gcloud CLI、Terraform 或 REST。
控制台
- 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
- 按一下 [Create Instance Group] (建立執行個體群組) 以建立新的執行個體群組。
- 選取「New managed instance group」(新增代管執行個體群組選項):無狀態 (預設) 或有狀態。
- 指定執行個體群組的名稱,並自行選擇是否提供相關說明。
- 為執行個體群組選擇執行個體範本,或建立新的範本。
- 指定這個群組中的 VM 數量。對於高可用性工作負載,請記得佈建足夠的 VM,以在發生區域失敗時支援您的應用程式。
- 在「Location」(位置) 下,選取 [Multiple zones] (多區域)。
選擇區域,並選取您要使用的可用區。
- 如要讓 MIG 使用區域中的所有可用區,請選取所有可用區。
- 請注意,建立區域 MIG 後,就無法更新 MIG 來使用其他可用區。
選擇目標分配型態。
如果選取「任何單一可用區」或「平衡」,請勿在「Instance redistribution」(執行個體重新分配) 專區中選取「Allow instance redistribution」(允許重新分配執行個體)。
繼續進行其餘的 MIG 建立程序。
gcloud
使用 gcloud compute instance-groups managed create 指令並加入 --target-distribution-shape 旗標。
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
--template TEMPLATE \
--size SIZE \
--region REGION \
--zones ZONES \
--target-distribution-shape SHAPE
更改下列內容:
INSTANCE_GROUP_NAME:執行個體群組的名稱。TEMPLATE:要用於群組的執行個體範本名稱。SIZE:執行個體群組的目標大小。REGION:您要將群組設在的區域。ZONES(選用):要在其中部署 VM 執行個體的區域清單。根據預設,Compute Engine 會為您選取三個區域。如要讓 MIG 使用區域中的所有可用區,請指定所有可用區。您可以使用下列指令,取得區域中的可用區清單:
gcloud compute zones list --filter=region:
REGION--format='list(NAME)'請注意,建立區域 MIG 後,就無法更新為使用不同可用區。
SHAPE:目標分配型態。可為下列其中一個值:even(預設):群組會建立及刪除 VM,以確保所選區域的 VM 數量相同。在EVEN分配方式中,任兩個區域之間的 VM 數量差異不會超過 1 個。建議用於高可用性服務工作負載。balanced:群組會優先在資源可用的可用區建立 VM,同時盡可能在所選可用區間平均分配 VM,以盡量減少可用區故障的影響。建議用於高可用性服務或批次工作負載。any:群組會選擇可用區來建立 VM 執行個體,以滿足目前資源限制內的 VM 數量要求,並盡量使用未使用的可用區預留項目。建議用於不需要高可用性的批次工作負載。any-single-zone:群組會在單一可用區內建立所有 VM 執行個體。系統會根據硬體支援、目前的資源和配額可用性,以及相符的預留項目選擇可用區。建議搭配 密集執行個體配置政策使用,適用於需要 VM 之間大量通訊的工作負載。
舉例來說,如要建立目標分配型態為「平衡」的區域性代管執行個體群組:MIG,請將 --target-distribution-shape 旗標設為 balanced。
gcloud compute instance-groups managed create example-rmig \
--template example-template \
--size 30 \
--zones us-east1-b,us-east1-c \
--target-distribution-shape balanced \
--instance-redistribution-type none
Terraform
如果您尚未建立執行個體範本,指定 MIG 中每個 VM 的機型、開機磁碟映像檔、網路和其他 VM 屬性,請建立執行個體範本。
如要建立區域性 MIG,請使用 google_compute_region_instance_group_manager 資源。
以下範例會建立具有 BALANCED 目標分配型態的區域 MIG。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
REST
呼叫 regionInstanceGroupManagers.insert 方法。在要求主體中加入 distributionPolicy 屬性,並設定其 targetShape 欄位。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
{
"name": INSTANCE_GROUP_NAME,
"instanceTemplate": "global/instanceTemplates/TEMPLATE",
"targetSize": SIZE,
"distributionPolicy": {
"zones": [
{"zone": "zones/ZONE1"},
{"zone": "zones/ZONE2"},
{"zone": "zones/ZONE3"},
],
"targetShape": "SHAPE"
}
}
更改下列內容:
PROJECT_ID:這項要求的專案 ID。REGION:執行個體群組的所在區域。INSTANCE_GROUP_NAME:執行個體群組的名稱。TEMPLATE:用於執行個體群組的執行個體範本名稱。SIZE:執行個體群組的目標大小。ZONE:要部署 VM 執行個體的區域名稱。- 如要讓 MIG 使用區域中的所有可用區,請指定所有可用區。您可以呼叫
regions.get方法,取得區域中的可用區清單。 - 請注意,建立區域 MIG 後,就無法更新為使用不同可用區。
- 如要讓 MIG 使用區域中的所有可用區,請指定所有可用區。您可以呼叫
SHAPE:目標分配型態。可以是下列其中一個值:EVEN(預設):群組會建立及刪除 VM,以確保所選區域的 VM 數量相同。在EVEN分配方式中,任兩個區域之間的 VM 數量差異不會超過 1 個。建議用於高可用性服務工作負載。BALANCED:群組會優先在資源可用的可用區建立 VM,同時盡可能在所選可用區間平均分配 VM,以盡量減少可用區故障的影響。建議用於高可用性服務或批次工作負載。ANY:群組會選擇可用區來建立 VM 執行個體,以滿足目前資源限制內的 VM 數量要求,並盡量使用未使用的可用區預留項目。建議用於不需要高可用性的批次工作負載。ANY_SINGLE_ZONE:群組會在單一可用區內建立所有 VM 執行個體。系統會根據硬體支援、目前的資源和配額可用性,以及相符的預留項目選擇可用區。建議搭配 密集執行個體配置政策使用,適用於需要 VM 之間大量通訊的工作負載。
變更現有群組的目標分配型態
您可以變更現有區域性 MIG 的目標分配型態,但有下列限制:
- 如要將目標分配型態變更為
BALANCED或ANY_SINGLE_ZONE,請先停用主動式重新分配功能。 - 如要將目標分配型態變更為
EVEN,且目前執行個體的分配不平均,請先停用主動式重新分配功能。 - 如果將形狀變更為
EVEN,且想重新啟用主動式重新分配功能,您必須先手動重新平衡群組。 - 如要將目標分配型態變更為
EVEN,但執行個體範本指定的資源並非所有選取的可用區都支援,您必須先將群組的執行個體範本更新為所有選取的可用區都支援的範本。
控制台
- 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
- 在清單的「Name」(名稱) 欄底下,找到要變更目標分配形狀的執行個體群組並按一下其名稱。
- 按一下「編輯」,修改這個代管執行個體群組。
- 按一下「地區」展開該部分。
- 在「Target distribution shape」(目標分配型態) 清單中,選取所需型態。
- 點選「儲存」來套用變更。
gcloud
使用 gcloud compute instance-groups managed update 指令並加入 --target-distribution-shape 旗標。
gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
--target-distribution-shape SHAPE
更改下列內容:
INSTANCE_GROUP_NAME:執行個體群組的名稱。SHAPE:目標分配型態。可以是下列其中一個值:even(預設):群組會建立及刪除 VM,以確保所選區域的 VM 數量相同。在EVEN分配方式中,任兩個區域之間的 VM 數量差異不會超過 1 個。建議用於高可用性服務工作負載。balanced:群組會優先在資源可用的可用區建立 VM,同時盡可能在所選可用區間平均分配 VM,以盡量減少可用區故障的影響。建議用於高可用性服務或批次工作負載。any:群組會選擇可用區來建立 VM 執行個體,以滿足目前資源限制內的 VM 數量要求,並盡量使用未使用的可用區預留項目。建議用於不需要高可用性的批次工作負載。any-single-zone:群組會在單一可用區內建立所有 VM 執行個體。系統會根據硬體支援、目前的資源和配額可用性,以及相符的預留項目選擇可用區。建議搭配 密集執行個體配置政策使用,適用於需要 VM 之間大量通訊的工作負載。
REST
呼叫 regionInstanceGroupManagers.patch 方法。
在要求主體中加入 distributionPolicy 屬性,並設定其 targetShape 欄位。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME
{
"distributionPolicy": {
"targetShape": "SHAPE"
}
}
更改下列內容:
PROJECT_ID:這項要求的專案 ID。REGION:執行個體群組的所在區域。INSTANCE_GROUP_NAME:執行個體群組的名稱。SHAPE:目標分配型態。可以是下列其中一個值:EVEN(預設):群組會建立及刪除 VM,以確保所選區域的 VM 數量相同。在EVEN分配方式中,任兩個區域之間的 VM 數量差異不會超過 1 個。建議用於高可用性服務工作負載。BALANCED:群組會優先在資源可用的可用區建立 VM,同時盡可能在所選可用區間平均分配 VM,以盡量減少可用區故障的影響。建議用於高可用性服務或批次工作負載。ANY:群組會選擇可用區來建立 VM 執行個體,以滿足目前資源限制內的 VM 數量要求,並盡量使用未使用的可用區預留項目。建議用於不需要高可用性的批次工作負載。ANY_SINGLE_ZONE:群組會在單一可用區內建立所有 VM 執行個體。系統會根據硬體支援、目前的資源和配額可用性,以及相符的預留項目選擇可用區。建議搭配 密集執行個體配置政策使用,適用於需要 VM 之間大量通訊的工作負載。
查看已設定的執行個體分配政策
控制台
- 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。 如果您已擁有執行個體群組,頁面會列出這些群組。
- 按一下要檢查的執行個體群組名稱。系統隨即開啟一個頁面,頁面中包含執行個體群組的屬性及群組包含之執行個體的清單。
- 按一下「詳細資料」。
- 在「位置」部分中,找出「目標分配型態」。
gcloud
執行 gcloud compute instance-groups managed describe 指令。
gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME \
--region REGION
這個指令會傳回群組的詳細資料,包括 distributionPolicy.targetShape 欄位:
... distributionPolicy: targetShape: BALANCED zones: - zone: https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f ... name: my-group region: https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1 ...
REST
建構對 regionInstanceGroupManagers.get 方法的 GET 要求。
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME
更改下列內容:
PROJECT_ID:這項要求的專案 IDREGION:執行個體群組的所在區域INSTANCE_GROUP_NAME:執行個體群組的名稱
目標分配型態會傳回至 distributionPolicy.targetShape 欄位。例如:
{
"name": "my-instance-group",
"distributionPolicy": {
"targetShape": "BALANCED",
},
"targetSize": 50,
...
}
後續步驟
- 進一步瞭解如何查看 MIG 和 VM 的相關資訊。
- 瞭解如何使用 MIG 中的 VM,包括新增、重建及移除 VM,以及更新 VM 設定。