代管執行個體群組 (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 的目標分配型態。可用的選項如下:
- EVEN (預設):群組會建立及刪除 VM,以在所選區域中達到並維持相同數量的 VM。在
EVEN
分配方式中,任兩個區域之間的 VM 數量最多只會相差 1 個。建議用於高可用性服務工作負載。 - BALANCED:群組會優先在資源可用的區域中建立 VM,同時盡可能在所選區域中平均分配 VM,以盡量減少區域故障的影響。建議用於高可用性服務或批次工作負載。
- ANY:群組會選擇區域來建立 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 的資源
Compute Engine 可為 MIG 提供自動調度資源功能,讓群組能根據負載的增減,自動新增 VM (擴充) 或移除 VM (縮減)。
如果為地區 MIG 啟用自動調度資源功能,該功能的運作方式如下:
自動調度器會盡可能平均分配各可用區的 VM。
將目標分配形狀設為
BALANCED
後,自動調度器就會瞭解各區域的資源可用性。自動調度器只會在配額和容量充足的可用區中,主動建立 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
- 瞭解如何建立可擴充且有彈性的網路應用程式。
- 瞭解 Platform 上的災難復原 Google Cloud 。