根據預設,區域性代管執行個體群組 (MIG) 會將代管虛擬機器 (VM) 執行個體平均分配到所選可用區。但如果您需要並非所有可用區都提供的硬體,或選定可用區可能暫時無法使用的硬體,或是需要優先使用可用區預留資源,則可能偏好其他分配方式。
如要設定區域性 MIG 如何在區域內的所選可用區中分配受管理執行個體,請設定 MIG 的目標分配型態。可用的選項如下:
- EVEN (預設):群組會建立及刪除 VM,以確保所選可用區的 VM 數量相同。在
EVEN分配中,任兩個可用區之間的 VM 數量差異不會超過 1。建議用於高可用性服務工作負載。 - BALANCED:群組會優先在資源可用的可用區建立 VM,同時盡可能在所選可用區平均分配 VM,以盡量減少可用區故障的影響。建議用於高可用性服務或批次工作負載。
- ANY:群組會選擇可用區來建立 VM 執行個體,以滿足目前資源限制內的 VM 要求數量,並盡可能使用未使用的可用區預留項目。建議用於不需要高可用性的批次工作負載。
- 任何單一可用區:群組會在單一可用區內建立所有 VM 執行個體。系統會根據硬體支援、目前的資源和配額可用性,以及相符的預訂項目,選擇可用區。建議搭配 密集執行個體配置政策使用,適用於需要 VM 之間大量通訊的工作負載。
請根據工作負載需求和所需的 MIG 功能選擇。請參閱比較表、用途和分配形狀的運作方式。
形狀比較
下表針對每種可能的目標形狀,說明其預期工作負載、用途、受管理執行個體的分配情形、功能支援,以及遇到無法使用的資源時,MIG 的簡要行為說明。
EVEN (預設) |
BALANCED |
ANY |
ANY_SINGLE_ZONE |
|
|---|---|---|---|---|
| 適用工作負載 | 高可用性服務工作負載 (無狀態或有狀態) | 高可用性服務工作負載 (無狀態或有狀態) 高可用性批次工作負載 |
批次工作負載 | 需要 VM 之間大量通訊的批次工作負載 |
| 目的 | 假設每個可用區都有足夠的資源可用性,盡量減少可用區故障的影響。 | 考量各可用區的資源可用性,盡可能減少可用區故障的影響。 | 優先取得資源,並使用未使用的預留項目。 | 將所有 VM 放在一個可用區中,盡量減少 VM 之間的網路延遲時間和 成本 成本。 |
| 各可用區的代管執行個體目標分配比例 | 甚至 無論資源可用性為何,任何兩個可用區之間的代管執行個體數量差異不得超過 1。* 如果區域容量受限,部分受管理執行個體可能無法啟動及運作。 |
盡量平均。 不保證各可用區的 VM 數量一致,實際數量取決於目前的資源可用性。 資源可用時,分配方式與 EVEN 類似。在資源受限的最糟情況下,分配作業可能採取任何形式。 |
任何。 每個可用區可有不同數量的代管執行個體 (包括全部或零個)。 |
單一可用區。 所有執行個體都會在一個可用區內建立。當 MIG 從零部 VM 擴充時,就會選擇可用區。 |
| 功能支援 | EVEN (預設) |
BALANCED |
ANY |
ANY_SINGLE_ZONE |
| 自動調度資源 | ||||
| Canary 更新 | ||||
| 執行個體彈性 | ||||
| 主動式執行個體重新分配 | 不適用 | |||
| 預訂 | 各個區域的資源都會獨立充分運用。 預留項目不會影響執行個體的分配方式。 |
各個區域的資源都會獨立充分運用。 如有預留項目,或許有助於達到均衡分配。 |
在區域內充分運用。 群組會優先使用區域中的預留項目。 |
在所選區域內充分運用。 每當群組沒有 VM,且需要建立一或多個 VM 時,如果該可用區有足夠的資源並支援硬體,可滿足要求,群組就會優先選擇預留項目最多的可用區。 |
| 執行個體範本和具狀態設定的硬體需求 (機型、CPU、GPU、現有磁碟) | 所選硬體必須在所有選取的可用區提供。 | 所選硬體必須在至少一個所選可用區提供。 | 所選硬體必須在至少一個所選可用區提供。 | 所選硬體必須在至少一個所選可用區提供。 |
| 單一租戶節點 | ||||
| 處理失敗狀況 | EVEN (預設) |
BALANCED |
ANY |
ANY_SINGLE_ZONE |
| 可用區中的資源暫時無法使用 | 公開 在代管執行個體較少的可用區中,建立新的代管執行個體。持續嘗試在資源無法使用的可用區中建立 VM 執行個體,直到成功為止。 風險:無法在資源受限的可用區中建立 VM。 |
彈性 在有資源可用的可用區中建立新的代管執行個體,同時盡可能平均分配所有可用區的執行個體。 風險:VM 可能無法平均分配到各個可用區。 |
彈性 在資源可用的可用區中建立新的代管執行個體,並盡量使用未使用的預留項目。 風險:VM 可能無法平均分配到各個可用區。 |
在群組建立和從零開始調整大小時具有彈性 在資源可用的單一可用區內建立新的 VM 執行個體。 風險:如果所選可用區的資源不足,就無法保證在水平擴展要求期間成功建立所有額外執行個體。 |
| 可用區層級故障 | 彈性 健康區域中的執行個體會持續提供服務,因此影響會降至最低。 如果您佈建額外執行個體,足以容許一個可用區失效,影響就會進一步縮小。 |
具備復原能力 健康區域中的執行個體會持續提供服務,因此影響會降至最低。 如果您佈建額外執行個體,足以容許一個可用區失效,影響就會進一步縮小。 |
公開 如果大多數或所有執行個體都集中在失敗的可用區,可能會發生中斷情形。 |
公開 如果所選可用區發生故障,服務中斷是不可避免的。 |
*如果停用主動式執行個體重新分配功能,並新增或移除執行個體,可能會導致執行個體分配不均。如果可用區發生故障或容量不足,自動調度資源的 MIG 也可能出現分配不均的情況。
用途
查看功能支援,然後根據用途選擇發布形狀。
平均分配工作負載,優先確保復原能力
如果您執行高可用性服務應用程式,且應用程式必須在區域層級故障時維持運作,不得降低效能,請使用 EVEN 目標分配形狀,並超量佈建群組大小。在群組中過度佈建執行個體數量,可保護工作負載免於受到可用區層級故障的影響。
視工作負載而定,建議建立自動配置器,在負載增加或減少時,自動在群組中新增或移除執行個體。
如要進一步瞭解EVEN目標分配型態,請參閱目標型態比較,並閱讀「EVEN目標型態的運作方式」。
如要進一步瞭解如何在區域 MIG 上部署高可用性工作負載,請參閱下列章節:
- 如需僅適用於特定可用區的特殊硬體,請為 VM 選取可用區。
- 佈建適當大小的代管執行個體群組。
- 如要防止在手動刪除或捨棄區域群組中的執行個體時,發生非預期的執行個體刪除作業,請關閉跨可用區執行個體重新分配功能。
- 為區域性 MIG 設定自動調度資源功能,在群組調整大小時,系統會盡量維持各可用區的平衡,並在可用區層級發生故障時,水平擴展至可用的可用區。
- 設定負載平衡,在區域層級發生故障時將負載轉移至正常區域,並在設定自動調度資源功能後,增加負載成長區域的 VM 數量。
- 設定有狀態的區域性 MIG,在機器重新啟動、重新建立、自動修復或更新事件發生時,保留 MIG 中每個執行個體的專屬狀態,包括 VM 執行個體名稱、永久磁碟和中繼資料。
平均分配資源,取得平衡
如果您執行高可用性服務或批次工作負載,且需要在資源取得與 VM 執行個體在區域中選定可用區的平均分配之間取得平衡,請使用 BALANCED 目標分配型態。
BALANCED 型態會優先取得資源,也就是在資源可用的可用區中建立執行個體,同時盡可能將執行個體平均分配至各個可用區,以盡量減少可用區層級故障的影響。
如果您執行的批次工作負載不需要防範區域層級故障,請改用 ANY 目標形狀。ANY 形狀會優先取得資源,並使用可用區預留項目。
如果將形狀設為 BALANCED 或 ANY,就不必手動驗證特定可用區是否提供特定硬體。您可以選取區域中的所有可用區,群組會自動在有您所需硬體的可用區中部署執行個體。
如要進一步瞭解 BALANCED 目標分配型態,請參閱目標型態比較,並閱讀「BALANCED 目標分配型態的運作方式」。
優先取得資源
如果您執行批次工作負載,且相較於工作負載對區域層級故障的復原能力,您更重視取得執行處理作業所需數量的執行個體,請使用 ANY 目標分配形狀。
如有相符的預訂,請將目標形狀設為 ANY,優先使用包含相符預訂的區域。如要瞭解如何在執行個體範本中設定預留項目,請參閱「從特定預留項目取用執行個體」一文。
與 BALANCED 目標形狀類似,當批次工作負載需要下列任一功能時,ANY 形狀就非常實用:
- 搭載特殊硬體的 VM,例如特定 CPU 平台或 GPU 型號。 群組會根據資源可用性,將執行個體部署至支援所要求硬體的可用區,並優先選擇有相符預留項目的可用區。
- 先占 VM。您不必再費心尋找有先占容量的可用區。群組會自動部署至具有可搶占容量的可用區。
- 具有大量核心的 VM。群組會取得可用的較大機器,並優先選擇有相符預留項目的可用區。
您不需要手動驗證特定可用區是否提供特定硬體。您可以選取區域中的所有可用區,群組會自動在有您所需硬體的可用區中部署執行個體。
您可以選擇性刪除已完成計算的批次工作 worker 執行個體,不會影響其他 worker。與目標形狀為 EVEN 且主動重新分配的群組不同,目標形狀為 ANY 的群組不必達到平均平衡,也不會觸發重新分配。
如要進一步瞭解ANY目標分配型態,請參閱目標型態比較,並閱讀ANY目標分配型態的運作方式。
盡量減少 VM 之間的網路連線
如果您執行批次工作負載,並想將所有 VM 放在單一可用區,以減少 VM 對 VM 的網路延遲和費用,且沒有特定可用區需求,請將群組的目標形狀設為 ANY_SINGLE_ZONE。您也可以建立密集配置政策,並套用至 MIG,讓 MIG 中的 VM 彼此靠近,並位於同一網路基礎架構。
建立 MIG 時,只要 MIG 包含至少一個 VM,且 MIG 沒有 VM 時需要再次水平擴展,ANY_SINGLE_ZONE 形狀就會根據預留項目、配額和硬體需求,選取最佳可用區。
與 BALANCED 和 ANY 目標形狀類似,當批次工作負載需要下列任一功能時,ANY_SINGLE_ZONE 形狀就很有用:
- 搭載特殊硬體的 VM,例如特定 CPU 平台或 GPU 型號。 群組會根據資源可用性,將執行個體部署至支援所要求硬體的可用區,並優先選擇有相符預留項目的可用區。
- 先占 VM。您不必再費心尋找有先占容量的可用區。群組會自動部署至具有可搶占容量的可用區。
- 核心數量較多的 VM。如果可用區有相符的預留項目,群組會優先取得該可用區的大型機器。
您不需要手動驗證特定可用區是否提供特定硬體。建立 MIG 時,請選取區域中的所有可用區,群組就會自動在有必要硬體的可用區中部署執行個體。
如要進一步瞭解 ANY_SINGLE_ZONE 目標分配情形,請參閱目標形狀比較,並閱讀ANY_SINGLE_ZONE 目標分配形狀的運作方式。
如果您有特定的可用區需求,且不希望 MIG 在任何情況下切換可用區,請改用區域 MIG。
運作方式
本節將說明下列情況中,各目標分配形狀的運作方式:
- 調整 MIG 大小時
- 如果可用區的資源暫時無法使用
- 可用區故障時
EVEN分配形狀
如果將目標分配型態設為 EVEN 並啟用主動式重新分配功能,無論資源可用性為何,區域性 MIG 中任意兩個可用區的代管執行個體數量差異都不會超過 1。但如果可用區缺乏資源來佈建實際的 VM,受管理執行個體可能無法運作。如果執行個體初始建立失敗,MIG 會持續嘗試在同一可用區中建立執行個體。
調整具有EVEN分配型態的 MIG 大小
目標型態為 EVEN 的群組會選取可用區,以新增或刪除執行個體,確保各可用區的代管執行個體數量維持或趨於平衡。
舉例來說,下圖顯示群組如何新增及移除受管理執行個體。
EVEN 分配方式的 MIG 大小暫時無法使用資源的影響
建立群組或增加執行個體數量時,可用區中的資源可能會暫時無法使用。舉例來說,如果您要求使用可搶占執行個體或供應量有限的專用硬體,這些資源可能在您提出要求時無法使用。
為維持各可用區的執行個體平均分配,群組會持續嘗試在資源暫時無法使用的可用區中建立 VM 執行個體。資源可用後,群組最終會取得完整數量的執行中 VM 執行個體。
舉例來說,下圖顯示如果其中一個區域因資源暫時無法使用而無法滿足您的要求,MIG 會發生什麼情況。
EVEN 分散式分配方式的 MIG 造成的影響不過,如果您已在 MIG 中設定自動調度資源功能,MIG 就會在有容量的可用區中建立執行個體。這可能會導致執行個體在各可用區的分配不均。這項行為與具有 BALANCED 分配形狀的 MIG 類似。
可用區故障的影響
如果您使用 EVEN (或 BALANCED) 目標分配型態,可以佈建額外執行個體,盡量減少可用區層級故障的影響。
如果發生可用區層級的故障,部署至 3 個可用區且具有 EVEN (或 BALANCED) 目標分配型態的區域性 MIG,可能會失去 1/3 的執行個體。您可以佈建更多 VM,確保有足夠的容量來處理負載,其中 2/3 的 VM 必須由負載使用,以防可用區層級發生故障。
舉例來說,如果您需要 8 個執行個體來處理 3 個可用區的要求,且想保護工作負載,避免受到可用區層級故障的影響,就應建立含有 12 個執行個體的區域群組。下圖顯示某個區域發生故障時的情況。
EVEN 分配方式的 MIG 造成的影響在這種情況下,EVEN 目標分配型態很適合搭配自動調度資源和負載平衡功能使用。如果發生可用區層級的故障,負載平衡器會開始將流量傳送至其餘兩個可用區中的執行個體,以因應故障可用區的流量。透過自動調度資源,MIG 會嘗試在有容量的可用區中建立執行個體,藉此保護工作負載。這可能會導致執行個體在各個區域的分配不均。
如要進一步瞭解區域 MIG 如何與自動調度器搭配運作,請參閱「自動調度區域 MIG」。
BALANCED分配形狀
如果可用區沒有要求的資源,具有 BALANCED 目標型態的區域性 MIG 可能無法在各可用區平均分配資源。
MIG 會優先在資源可用的可用區建立 VM,以佈建所要求的 VM 數量。如果 VM 初始建立作業失敗,MIG 會自動嘗試在其他選取的可用區建立 VM,前提是這些可用區有足夠的容量。如果資源充足,分配情形會類似 EVEN。在資源受限的最糟情況下,分配作業可能採取任何形式。
調整具有 BALANCED 分配型態的 MIG 大小
增加群組大小
如果目標型態為 BALANCED,群組會根據您在代管執行個體群組執行個體範本中指定的資源目前可用性,選擇可用區來建立新的執行個體。
- 當所有選定可用區的資源都充足時,群組會在大小增加時維持可用區之間的平均分配,與
EVEN目標形狀相同。 - 如果可用區容量限制導致無法平均分配,群組會在有資源的可用區中建立執行個體,同時盡量達到平衡。
舉例來說,如果您要求的專用 CPU 平台、GPU 模型或先占 VM 並非在所有可用區都均勻提供,您可能會發現容量限制和分配不均的情況。
BALANCED 分配方式的 MIG 大小減少群組大小
縮減大小時,目標型態為 BALANCED 的區域性 MIG 會依下列順序移除執行個體,以盡量減少對工作負載的干擾:
- 未執行的執行個體,也就是因任何原因無法建立、正在建立或自動修復的執行個體。
- 群組中 VM 較多的可用區,以趨近平均分配的狀態。
暫時無法使用的資源或可用區故障造成的影響
如果使用BALANCED目標分配型態,群組會將執行個體部署至有可用容量的可用區。如果可用區的容量暫時受限,可能會導致執行個體在各可用區的分布不均。
如果 VM 執行個體數量最多的可用區發生故障,工作負載可能會失去相當大的服務容量。如果運作正常的可用區暫時有容量限制,群組會嘗試在原始位置 (故障的可用區) 重新建立失敗的執行個體,但這項嘗試可能會失敗。
為保護工作負載免於受到這類極端情況影響,請採取下列措施:
- 超量佈建區域 MIG 的大小,確保工作負載在可用區發生故障時,仍有足夠的服務容量。
- 在每個可用區預留足夠的資源量,以因應尖峰負載、過度佈建,並維持各可用區的平均分配。這項策略可確保您在各個可用區平均分配執行個體,萬一可用區發生故障,也能將容量損失降到最低。
下圖顯示在暫時性的區域容量限制後,區域發生故障時可能出現的情況。
BALANCED 分配的 MIG 造成影響如果區域中任何可用區都無法滿足要求,群組會在資源暫時無法使用的可用區中,排定 VM 建立作業。群組會繼續嘗試在原先排定建立的區域中建立排定執行個體。如果其他可用區的資源比 VM 排程所在的原始可用區更早可用,群組不會嘗試在這些其他可用區中建立資源。您可以手動刪除無法建立的代管執行個體,並將群組大小調整為目標大小,在有可用容量的區域中排定新執行個體。
如果 VM 建立失敗,您可以列出代管執行個體,查看對應代管 VM 執行個體中的錯誤訊息,或列出最近的錯誤。
如果發生可用區故障,BALANCED 目標分配型態可與自動調度資源和負載平衡功能搭配使用。為因應來自故障可用區的流量,負載平衡器會將流量傳送至其餘可用區的執行個體。自動配置器會回應可用區使用率的增加,並在運作正常的可用區中自動建立容量。詳情請參閱「自動調度區域 MIG」。
ANY分配形狀
如果目標分配型態設為 ANY,區域性 MIG 會優先在有資源可用的可用區中建立代管執行個體,以取得資源。也就是說,所有執行個體可能會在一個可用區中建立,或平均分配到所有可用區,也可能介於這兩種情況之間。如果執行個體初始建立作業失敗,代管執行個體群組會自動嘗試在有容量的其他選定可用區中建立執行個體。
調整具有ANY分配型態的 MIG 大小
增加群組大小
增加群組大小時,群組會選擇容量足夠的任何可用區。
如果一或多個區域有相符的預訂項目,群組會優先使用這些預訂項目。不過,如果減少群組大小,任何已使用的預訂可能需要幾分鐘才會再次可供使用。在這段期間,先前使用的預留項目尚未恢復可用狀態。如果增加群組大小,但沒有相符的預留項目,群組就會在資源可用的區域建立 VM 執行個體。
減少群組大小
縮減群組大小時,群組會依下列順序刪除 VM 執行個體:
- 因任何原因而未執行的 VM
- 尚未更新至預期版本的 VM
- 以非決定性方式選擇 VM
如果需要縮減特定可用區的群組大小,或移除特定 VM 執行個體 (例如已完成工作的執行個體),可以從群組中刪除特定執行個體。
暫時無法使用資源的影響
如果目標分配型態設為 ANY,群組會在有可用資源的可用區中排定 VM 執行個體建立作業,並避開資源暫時無法使用的可用區。
如果區域中任何可用區都無法滿足要求,群組會在資源暫時無法使用的可用區中,排定 VM 建立作業。群組會繼續嘗試在原先排定建立預定執行個體的可用區中建立執行個體。如果其他可用區的資源比 VM 原本排定的可用區更早可用,群組不會嘗試在這些其他可用區建立 VM。您可以刪除未執行的代管執行個體,並將群組大小調整至目標大小,手動在有可用容量的區域中排定新執行個體。
如果 VM 建立失敗,您可以列出代管執行個體,查看對應 VM 執行個體中的錯誤訊息,或列出最近的錯誤。
舉例來說,下圖顯示區域群組如何在某個可用區無法滿足要求時,排定執行個體。
ANY 分散式分配方式的 MIG 造成的影響可用區故障的影響
如果群組的目標分配型態設為 ANY,群組可能會在單一可用區中部署大部分或所有執行個體。如果該可用區發生故障,群組的大部分或所有執行個體可能會在故障期間無法使用。
如果發生區域層級故障、資源暫時無法使用,或 VM 執行個體因任何原因停止運作,您可以刪除個別停止運作的執行個體,然後將群組大小調整回必要大小,嘗試在有可用容量的區域取得替代執行個體。
ANY 分配方式的 MIG 中刪除並重新建立執行個體ANY_SINGLE_ZONE分配形狀
如果區域性 MIG 採用 ANY_SINGLE_ZONE 目標分配型態,系統會在建立群組中的第一個 VM 時,自動選取最佳可用區。建立第一個 VM 後,所有其他 VM 都會在同一個可用區中建立。如果 VM 初始建立作業失敗,MIG 會持續嘗試在同一可用區中建立 VM。
只有在 MIG 縮減至零部 VM,並重新開始建立第一部 VM 時,才能選取其他可用區。
選擇最佳可用區
如果只有一個所選可用區支援群組的硬體需求,Compute Engine 就會選擇這個可用區。
如果多個所選可用區都支援群組的硬體需求,Compute Engine 會選擇有足夠可用資源的可用區,以容納區域性 MIG 的所有 VM,並優先選擇有最多相符預留資源的可用區。
如果所選可用區都沒有足夠的可用資源或相符的預留項目,無法容納所有 VM,Compute Engine 會選擇可用資源和相符預留項目最多的可用區,並優先選擇相符預留項目最多的可用區,盡可能建立 VM。即使其他可用區的資源較快恢復可用,群組仍會繼續嘗試在同一可用區中建立其餘 VM。
調整具有ANY_SINGLE_ZONE分配型態的 MIG 大小
增加群組大小
如果 MIG 已經有 VM,且目標分配型態設為 ANY_SINGLE_ZONE,則在所有擴充作業中,MIG 會將新 VM 放置在與現有 VM 相同的可用區。如果可用資源或預留項目不足以容納所有額外 VM,MIG 會盡可能建立 VM。
如果 MIG 沒有 VM,水平擴展時會選擇支援群組硬體需求,且使用相符預留項目資源的最佳可用區。
減少群組大小
縮減規模時,分配型態為 ANY_SINGLE_ZONE 的區域性 MIG 會依下列順序移除 VM:
- 系統會先移除不在
RUNNING狀態的 VM,以盡量減少工作負載中斷。如果 VM 無法建立、正在建立或維修,或因任何原因無法運作,即為未執行的 VM。 - 未採用群組最新設定的 VM。
- 以非決定性方式選擇 VM
暫時無法使用資源的影響
如果區域性 MIG 的目標分配型態設為 ANY_SINGLE_ZONE,所選可用區就可能發生資源短缺問題。
如果 MIG 所選可用區的資源暫時無法使用,MIG 不會自動切換可用區。也就是說,在資源充足之前,水平擴展和更新程序可能會中斷。
可用區故障的影響
如果區域性 MIG 的目標分配型態設為 ANY_SINGLE_ZONE,就容易受到可用區故障影響。
如果區域性 MIG 的 VM 所在可用區發生故障,MIG 的所有 VM 可能都無法處理工作負載。
監控目標分配型態和區域平衡
如要觀察目標分配形狀 (EVEN、BALANCED、ANY 或 ANY_SINGLE_ZONE) 如何影響執行個體在各區域的即時分配情形,可以使用 Cloud Monitoring 中的 GCE MIG 執行個體分配監控資訊主頁。
這個預先設定的資訊主頁可協助您確認執行個體分配作業是否正常運作。您可以運用這些洞察資料,在容量變更或中斷期間監控及調查問題,並找出潛在的調整項目,藉此最佳化基礎架構或排解問題。
如要瞭解如何存取監控資訊主頁,請參閱「監控 MIG 中的執行個體分配情形」。
後續步驟
- 如要瞭解如何在 MIG 中設定目標型態,請參閱「設定將 VM 分散至各可用區的政策」。
- 監控 MIG 中的執行個體分配情形。
- 進一步瞭解區域 MIG。
- 瞭解 Compute Engine 資源的可用區預留項目。