代管執行個體群組 (MIG) 將 VM 分散於地區內的多個可用區,也稱為地區 MIG。限制在單一可用區的 MIG 又稱為「可用區 MIG」。
您可以使用區域性 MIG 提高以 MIG 為基礎的工作負載彈性。將工作負載分散在地區中的多個區域,有助於避免發生極端情況,例如單一區域內的所有執行個體都失敗。
本文件包含區域 MIG 的概念資訊:
如要瞭解如何建立區域性 MIG,請參閱「在多個可用區中建立 MIG」。
為什麼要選擇地區代管執行個體群組?
Google 建議使用區域 MIG 而非區域 MIG,原因如下:
- 您可以使用地區 MIG 管理最多 2,000 個執行個體,是區域 MIG 的兩倍。如果需要更多,您可以進一步將地區 MIG 的大小限制提高至 4,000 個執行個體。
- 您可以使用區域性 MIG,在多個區域中分散應用程式負載,而非將應用程式限制在單一區域內,或管理跨不同區域的多個區域性 MIG。
使用多個區域可以防範區域故障和意外狀況,避免單一區域內的整個執行個體群組無法運作。如果發生這種情況,應用程式可以繼續透過在同一地區其他可用區中運作的執行個體提供流量。
如果區域發生故障狀況,或者區域中的執行個體群組停止回應,地區 MIG 會繼續支援您的執行個體,如下所示:
在其餘區域中,屬於地區 MIG 的執行個體數量將會繼續提供流量。系統不會新增任何執行個體,也不會重新分配任何執行個體 (除非您設定了自動調度資源功能)。
原本無法運作的區域復原後,MIG 就會再次從該區域開始提供流量。
在設計實用且可擴充的應用程式時,請使用地區 MIG。
區域性 MIG 的其他設定選項
建立區域性 MIG 的步驟與建立可用區 MIG 類似,但您可以使用其他選項:
- 您可以選取區域內的哪些可用區來建立 VM。
- 您可以選擇目標分配型態,決定如何在所選可用區中分配執行個體。
- 您可以選擇停用或重新啟用主動式執行個體重新分配功能,該功能會嘗試在所選區域中平均分配群組的 VM。
我們將在以下各節中說明這些選項。
可用區選項
根據預設,地區 MIG 會將代管執行個體平均分配到三個區域。您可能會因各種原因而想要為您的應用程式選擇特定區域。舉例來說,如果您的執行個體需要 GPU,您可能只會選擇支援 GPU 的區域,或是您可能有現有的永久磁碟或預留,但這些項目僅適用於特定區域。
如要選擇區域的數量,或是選擇群組執行的特定區域,那麼在開始建立群組時就必須先行處理。在建立期間選擇特定區域後,日後就無法變更或更新那些區域。
如果您希望 MIG 自動使用支援您在 MIG 設定中指定的硬體的可用區,可以將 MIG 的目標分配型態設為 BALANCED
、ANY
或 ANY_SINGLE_ZONE
,並選取區域中的所有可用區。MIG 會自動檢查資源的可用性,並只在有資源的區域中排定執行個體。詳情請參閱「目標分佈形狀」。
如要在一個地區內選取三個以上的區域,則必須明確指定個別區域。舉例來說,如要選取一個地區內的全部共四個區域,就必須在您的要求中明確提供該四個區域。否則根據預設,Compute Engine 會選取三個區域。
如要在一個地區內選取兩個或更少的區域,則必須明確指定個別區域。即使該地區只包含兩個區域,您仍必須在要求中明確指定區域。
Google 會定期擴充基礎架構,在更多可用區提供專用硬體。地區性 MIG 會定期檢查硬體可用性,並在支援必要機器的區域中自動啟動排程執行個體。如因任何原因不想在某些區域中執行執行個體,請在建立群組時不要選取這些區域。
如要瞭解如何建立區域性 MIG 和選取可用區,請參閱「建立區域性 MIG」。
目標分配型態
根據預設,區域性 MIG 會將代管執行個體平均分配到所選區域。不過,如果您需要的硬體並非所有區域皆可使用,或是您需要優先使用區域預留,建議您採用其他分發方式。
如要設定區域性 MIG 如何在所屬區域內的所選可用區中分配執行個體,請設定 MIG 的目標分配型態。可用的選項如下:
- 均衡 (預設):群組會建立及刪除 VM,以便在所選區域中達到並維持相同的 VM 數量。在
EVEN
分布中,任兩個區域的 VM 數量相差不超過 1。建議用於高可用性服務工作負載。 - BALANCED:群組會優先在資源可用的區域中建立 VM,同時盡可能在所選區域中均勻分配 VM,以盡量減少區域故障的影響。建議用於高可用性服務或批次工作負載。
- 任一區域:群組會挑選可用區域來建立 VM 執行個體,以便在現有資源限制內滿足所要求的 VM 數量,並盡可能充分利用未使用的區域預留項目。建議用於不需要高可用性保證的批次工作負載。
- 任一單一可用區:群組會在單一可用區中建立所有 VM 執行個體。系統會根據硬體支援、目前資源和配額可用性,以及相符的預留空間,選擇區域。建議搭配 密集執行個體配置政策使用,適用於需要 VM 之間大量通訊的工作負載。
建立 MIG 時,如果將形狀設為 BALANCED
、ANY
或 ANY_SINGLE_ZONE
,您就不需要手動驗證哪些區域支援您在 MIG 設定中指定的硬體。您可以選取區域中的所有區域,並將其形狀設為 BALANCED
、ANY
或 ANY_SINGLE_ZONE
,區域性 MIG 就會為您檢查資源可用性,並只在有資源的區域中排定執行個體。
請根據工作負載需求和所需的 MIG 功能選擇選項。詳情請參閱比較表和用途。
如要瞭解如何為新的或現有的 MIG 設定目標型態,請參閱「設定在各區域分配執行個體的政策」。
主動式執行個體重新分配
根據預設,地區 MIG 會嘗試維持該地區中各區域的執行個體均勻分布狀態,以便在發生區域層級的失敗事件時提高應用程式的可用性。
如果您刪除或捨棄群組中的執行個體,導致區域間分布不均,則該群組會主動重新分配執行個體,以重新建立均勻分布的狀態。
為了要在區域間重新建立均勻分布的狀態,群組會刪除執行個體數量較多的區域中的執行個體,然後在執行個體數量較少的區域中新增執行個體。群組會自動挑選要刪除的執行個體。
舉例來說,假設您在 a
、b
和 c
區域中,各有一個地區 MIG,每個群組內有 12 個執行個體。如果您刪除了 c
中的 3 個代管執行個體,該群組便會嘗試重新平衡,好讓這些執行個體再次均勻地分布於各區域。在這種情況下,該群組會刪除 2 個執行個體 (一個來自 a
,另一個來自b
),並在區域 c
中建立 2 個執行個體,如此每個區域都會有 3 個執行個體,達成了均勻分布的目標。您無法挑選要刪除的執行個體。群組在新的執行個體啟動時會暫時失去容量。
如要禁止系統自動重新分配執行個體,您可以停用主動式執行個體重新分配功能。
在下列情況下,停用主動式執行個體重新分配功能會很有幫助:
- 從群組中刪除或捨棄執行個體,但不影響其他正在執行的執行個體。例如,您可以在工作完成後刪除相關批次工作站執行個體,而不影響其他工作站。
- 保護內含有狀態工作負載的執行個體,避免因主動式重新分配功能而遭到自動刪除。
- 將 MIG 的目標分配型態設為
BALANCED
或ANY_SINGLE_ZONE
如果您停用主動式執行個體重新分配功能,MIG 就不會主動新增或移除執行個體來達成平衡,但在調整大小作業期間,該群組仍有機會趨於平衡,這使得每一次的調整大小作業都是平衡群組的機會。舉例來說,在群組縮減時,群組會自動利用調整大小的機會,從較大區域中移除執行個體;而在群組擴充時,群組則會利用這個機會在較小區域中新增執行個體。
與區域 MIG 的行為差異
區域 MIG 和區域 MIG 的主要差異在於,區域 MIG 可使用多個區域。
由於區域性 MIG 的代管執行個體分散在區域內的各個可用區,因此下列 MIG 功能的運作方式會有些許不同。
自動調度區域性 MIG
Compute Engine 可為 MIG 提供自動調度資源功能,讓您的群組能根據負載的增減自動新增或移除 VM (擴展)。
如果為地區 MIG 啟用自動調度資源功能,該功能的運作方式如下:
自動配置器會盡可能平均分配 VM 至各個可用區。
將目標發布形狀設為
BALANCED
後,自動調度器就會瞭解各區域的資源可用性。自動配置器只會在有足夠配額和 VM 容量的可用區中主動建立 VM,如 MIG 設定所述。
更新區域性 MIG
建立區域 MIG 後,就無法變更或更新區域。不過,您可以設定群組的目標分配型態,以便優先使用不同的區域,例如,如果您有預留的資源,或需要的硬體並非所有區域皆有。
如要將新範本推送至區域性 MIG,請參閱「更新區域性 MIG」。
如果您想在 MIG 中新增或移除執行個體,地區和區域 MIG 的程序類似。請參閱在 MIG 中新增及移除 VM。
如果您想在 MIG 中設定有狀態磁碟或有狀態中繼資料,請參閱「設定有狀態的 MIG」。
如何透過超額配置提高可用性
有各種不同事件可能會導致一個或多個執行個體變得無法使用,您可以使用下列幾項 Google Cloud服務來解決這個問題:
- 使用區域性 MIG 搭配
EVEN
或BALANCED
目標分配型態,在多個區域中平均分配應用程式。 - 使用以應用程式為基礎的自動修復功能,為含有故障應用程式的執行個體重建。
- 使用負載平衡功能,自動讓使用者避開無法使用的執行個體。
但就算使用了上述服務,若有太多執行個體在同一時間無法使用,您的使用者仍會遭遇困境。
針對某個區域無法運作,或整個執行個體群組停止回應等極端情況,Google 強烈建議超額佈建 MIG,以利未雨綢繆。視您的應用程式需求而定,如果某個區域或執行個體群組無法回應,則超額佈建群組可防止您的系統完全停擺。
Google 建議超額佈建,背後的優先考量是希望您的應用程式不會中斷對使用者的服務。如果採用這些建議,您需要佈建的執行個體數量和所支付費用,可能會超出您的應用程式保持日常運作所需。請根據應用程式需求和成本限制,決定超額佈建的設定。
您可以在建立 MIG 時設定大小,也可以在建立後新增或移除執行個體。
您可以設定自動調度資源,讓系統根據負載自動在群組中新增及移除執行個體。
預估建議的群組大小
建議您佈建足夠的執行個體,如此一來,如果任何一個區域內的所有執行個體同時無法使用,其餘執行個體仍能達到所需的最低執行個體數量。
如需判斷群組建議的大小下限,請參閱下表:
可用區數量 | 額外的 VM 執行個體 | 建議的 VM 執行個體總數 |
---|---|---|
2 | +100% | 200% |
3 | +50% | 150% |
4 | +33% | 133% |
在三個以上的區域中佈建區域性 MIG
您在建立區域 MIG 時,如果地區內至少具備三個區域,Google 建議執行個體群組至少要超額佈建 50%。根據預設,區域性 MIG 會在三個區域中建立執行個體。將執行個體分散在三個區域中已協助您保留了至少 2/3 的服務規模,如果單一區域無法運作,該地區中的其他兩個區域可以繼續不間斷地提供流量。透過超額佈建至 150%,便可以確保如果喪失 1/3 的規模,剩餘區域也可以支援 100% 的流量。
舉例來說,如果您在三個區域中的 MIG 需要 20 個執行個體,我們建議至少再額外增加 50% 的執行個體。在這種情況下,20 個的 50% 是多 10 個執行個體,也就是說群組中總共有 30 個執行個體。如果您建立大小為 30 的地區 MIG,群組會將 VM 分散至三個可用區,如下所示:
可用區 | VM 執行個體數量 |
---|---|
example-zone-1 | 10 個 |
example-zone-2 | 10 個 |
example-zone-3 | 10 |
如果任一區域發生故障,您仍有 20 個執行個體可提供流量。
在兩個區域中佈建地區性 MIG
如果要佈建執行個體的區域是兩個而非三個,Google 建議將執行個體的數量加倍。舉例來說,如果您的服務需要 20 個執行個體在兩個區域中平均分佈,建議設定含有 40 個執行個體的地區性 MIG,如此一來每個區域就會有 20 個執行個體。如果單一區域發生故障,您仍有 20 個執行個體可提供流量。
可用區 | VM 執行個體數量 |
---|---|
example-zone-1 | 20 個 |
example-zone-2 | 20 |
如果群組中的執行個體數無法平均分配給兩個區域,Compute Engine 會平均劃分這組 VM,並將剩餘的執行個體隨機置入其中一個區域。
在一個可用區中佈建區域性 MIG
您可以建立只包含一個區域的區域性 MIG。這類似於建立可用區 MIG。
我們不建議您建立單一區域的區域 MIG,因為這種做法只能讓高可用性的應用程式獲得最低的保障。如果該區域發生故障,整個 MIG 都會無法使用,並可能中斷為使用者提供的服務。
後續步驟
- 建立區域 MIG
- 瞭解如何建立可擴充且有彈性的網路應用程式。
- 瞭解 Google Cloud Platform 上的災難復原。