如果您使用區域性代管執行個體群組 (MIG),可以將該 MIG 的目標分配型態設為下列任一選項:
- 均衡 (預設):群組會建立及刪除 VM,以便在所選區域中達到並維持相同的 VM 數量。在
EVEN
分布中,任兩個區域的 VM 數量相差不超過 1。建議用於高可用性服務工作負載。 - BALANCED:群組會優先在資源可用的區域中建立 VM,同時盡可能在所選區域中均勻分配 VM,以盡量減少區域故障的影響。建議用於高可用性服務或批次工作負載。
- 任一區域:群組會挑選可用區域來建立 VM 執行個體,以便在現有資源限制內滿足所要求的 VM 數量,並盡可能充分利用未使用的區域預留項目。建議用於不需要高可用性保證的批次工作負載。
- 任一單一可用區:群組會在單一可用區中建立所有 VM 執行個體。系統會根據硬體支援、目前資源和配額可用性,以及相符的預留空間,選擇區域。建議搭配 密集執行個體配置政策使用,適用於需要 VM 之間大量通訊的工作負載。
如要在地區代管執行個體群組中使用已保留的 VM,請在各個適用區域中建立具有相同名稱的相同保留項目。接著,在群組的執行個體範本中指定保留項目名稱。
如要瞭解如何選擇形狀,請參閱比較表、用途和發布形狀的運作方式。
建立區域性 MIG 時,請設定目標分配型態,或更新現有區域性 MIG 的目標型態。
事前準備
-
如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 Google Cloud 服務和 API 的程序。如要在本機開發環境中執行程式碼或範例,您可以選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
Terraform
To use the Terraform samples on this page in a local development environment, install and initialize the gcloud CLI, and then set up Application Default Credentials with your user credentials.
- Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
For more information, see Set up authentication for a local development environment.
REST
To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
For more information, see Authenticate for using REST in the Google Cloud authentication documentation.
-
限制
- 您只能在建立 MIG 時選取可用區。
如果您在 MIG 的執行個體範本或有狀態設定中指定的資源,無法在所有所選區域中使用,則適用下列限制:
- 您必須將目標分配型態設為
BALANCED
、ANY
或ANY_SINGLE_ZONE
。 - 您必須確保 MIG 所需的所有資源 (例如現有磁碟、機器類型或 GPU) 至少在所選可用區中提供。
- 如果您想將 MIG 的設定 (例如執行個體範本) 更新為無法在所有所選區域中例項化的設定,則必須先從所有不支援的區域移除受管理的執行個體,再設定新設定。
- 您必須將目標分配型態設為
如要將目標分配型態設為
BALANCED
或ANY_SINGLE_ZONE
,您必須停用主動式執行個體重新分配功能。- 如要自動調整區域性 MIG,您必須將群組的
目標分配型態設為
BALANCED
或EVEN
。 如果您將目標分配型態設為
BALANCED
、ANY
或ANY_SINGLE_ZONE
,則適用下列限制:- Canary 不支援含有兩個版本的更新。
- 如果整個地區的所需資源供應有限,群組可能會在資源已無法使用的區域中,排定 VM 執行個體建立作業。您可以嘗試減少和增加群組大小,以便在其他區域取得所要求的資源。
- 使用
SUBSTITUTE
取代方法的滾動更新會嘗試在舊機器所在的區域中建立新的更新執行個體,即使該區域沒有足夠的資源來滿足新版本的需求也一樣。如要調節這種行為,您可以從受限制區域中刪除過時的 VM,然後依據刪除的 VM 數量增加群組大小。群組會在有運算容量的區域中,根據最新範本建立執行個體。 - 如果您想將群組的執行個體範本更新為指定在所有所選區域中皆不可用的資源的範本,請務必先移除從不支援的區域中移除代管執行個體,再設定新範本。
如果您將目標分配型態設為
ANY_SINGLE_ZONE
,且群組在單一區域中已有 VM,則只能在該區域中建立其他 VM。如果您想使用其他區域,則必須先將群組內的 VM 縮減至零。如果您需要佈建一組專屬 VM,必須將 MIG 的目標分配型態設為
EVEN
。請在 MIG 所在區域中建立節點群組,並在 MIG 的執行個體範本中設定 MIG 的節點相依性。
建立具有目標發布區塊形狀的群組
如要建立群組、選取其區域,以及設定目標發布形狀,請使用 Google Cloud 控制台、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 後,您無法更新 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 以使用不同的區域。
- 如果您希望 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」(目標分配型態) 下方,指定所需形狀。
- 按一下 [Save] (儲存),套用新範本。
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 設定。