將 VM 分散至區域多個可用區的代管執行個體群組 (MIG),又稱為區域性 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 會嘗試在區域內的可用區之間平均分配執行個體,以在可用區層級發生故障時,盡可能提高應用程式的可用性。
如果您從群組中刪除或捨棄執行個體,導致可用區之間的分配不均,群組會主動重新分配執行個體,重新建立平均分配狀態。
為重新建立各可用區的平均分配,群組會刪除執行個體較多的可用區中的執行個體,並在執行個體較少的可用區中新增執行個體。群組會自動選擇要刪除的執行個體。
舉例來說,假設您有一個區域 MIG,其中有 12 個執行個體分布在 3 個可用區:a、b 和 c。如果您在 c 中刪除 3 個代管執行個體,群組會嘗試重新平衡,讓執行個體再次平均分配到各個可用區。在這種情況下,該群組會刪除 2 個執行個體 (一個來自 a,另一個來自b),並在區域 c 中建立 2 個執行個體,如此每個區域都會有 3 個執行個體,達成了均勻分布的目標。您無法挑選要刪除的執行個體。群組在新的執行個體啟動時會暫時失去容量。
如要防止系統自動重新分配執行個體,可以關閉主動式執行個體重新分配功能。
如果您有以下需求,就很適合關閉主動式執行個體重新分配功能:
- 從群組中刪除或捨棄執行個體,不會影響其他執行中的執行個體。舉例來說,您可以在工作完成後刪除批次 worker 執行個體,不會影響其他 worker。
- 防止有狀態工作負載的執行個體因主動式重新分配而遭到自動刪除。
- 將 MIG 的目標分配型態設為
BALANCED或ANY_SINGLE_ZONE
如果關閉主動式執行個體重新分配功能,MIG 不會主動新增或移除執行個體來達成平衡,但仍會在調整大小作業期間,伺機趨向平衡,並將每次調整大小作業視為平衡群組的機會。舉例來說,水平縮減時,群組會自動利用重新調整規模的機會,從較大的可用區移除執行個體;水平擴展時,群組則會利用這個機會,在較小的可用區新增執行個體。
初始執行個體建立作業失敗時的 MIG 行為
如果區域性 MIG 在首次嘗試時無法建立執行個體,MIG 會根據目標分配型態尋找替代容量,如下所示:
如果 MIG 的目標分配型態為
BALANCED或ANY,系統會自動嘗試在其他所選可用區中尋找容量。這有助於提高工作負載的資源取得率。使用執行個體彈性在 MIG 中設定不同機型時,這項預設行為可進一步提高取得容量的機會,因為 MIG 可以在各種機型和可用區中搜尋可用容量。如果 MIG 的目標分配型態為
EVEN或ANY_SINGLE_ZONE,或是具有有狀態的設定,MIG 會繼續在初始嘗試失敗的相同可用區中,重試建立執行個體。不會搜尋其他所選可用區的容量。如要提高取得容量的機率,可以在 MIG 中設定執行個體彈性。如果初始執行個體建立作業失敗,MIG 會嘗試使用執行個體彈性政策中指定的其他機型建立執行個體。
與可用區 MIG 的行為差異
區域性 MIG 與可用區 MIG 的主要差異在於,區域性 MIG 可使用多個可用區。
由於區域性 MIG 的代管執行個體會分散在區域內的各個可用區,因此下列 MIG 功能的運作方式會略有不同。
自動調度區域性 MIG 的資源
Compute Engine 提供 MIG 的自動調度資源功能,可根據負載的增減,自動在群組中新增 VM (水平擴展) 或移除 VM (水平縮減)。
如果為區域性 MIG 啟用自動調度資源功能,該功能的運作方式如下:
自動配置器會根據您設定的目標分配型態,在各個可用區分配 VM。
自動配置器會瞭解各可用區的資源可用性。自動配置器只會在有足夠配額和 VM 容量的可用區中,主動建立 VM,如 MIG 設定中所指定。如果目標發布形狀為
EVEN,這種行為可能會導致 VM 分布不均。如果可用區容量不足而導致 VM 建立作業失敗,MIG 會在容量充足的可用區建立 VM。
更新區域性 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 就無法使用,可能會中斷使用者的服務。
監控各可用區的執行個體分配情形
如要觀察區域 MIG 如何在各個可用區分配及平衡執行個體,可以使用 Cloud Monitoring 中的「GCE MIG Instance Distribution Monitoring」(GCE MIG 執行個體分配監控) 資訊主頁。這個預先設定的資訊主頁可協助您確認執行個體分配作業是否正常運作。您可以運用這些洞察資料,找出基礎架構的潛在調整項目,進一步進行最佳化。
如要瞭解如何存取監控資訊主頁,請參閱「監控 MIG 中的執行個體分配情形」。