如果代管執行個體群組 (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 的目標分配型態設為 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 的目標分配型態為
BALANCED或ANY,MIG 會自動嘗試在其他所選可用區中尋找容量。這有助於提高工作負載的資源取得率。使用執行個體彈性在 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,具體情況取決於 MIG 設定。如果目標分布形狀為
EVEN,這種行為可能會導致 VM 分布不均。如果 VM 建立作業因可用區容量不足而失敗,MIG 會在有可用容量的可用區建立 VM。
更新區域性 MIG
區域 MIG 建立後,您就無法變更或更新可用區。不過,您可以設定群組的目標分布型態,優先使用不同可用區,例如您有預留資源,或需要並非所有可用區都提供的硬體。
如要將新範本套用至區域 MIG,請參閱「更新區域 MIG」。
如要在 MIG 中新增或移除執行個體,區域和可用區 MIG 的程序類似。請參閱「在 MIG 中新增及移除 VM」。
如要設定 MIG 中的有狀態磁碟或有狀態中繼資料,請參閱「設定有狀態 MIG」。
如何透過超額佈建提高可用性
各種事件都可能導致一或多個執行個體無法使用,您可以使用多個 Cloud de Confiance服務,協助減輕這個問題:
- 使用區域性 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 如何隨著時間在各可用區分配及平衡執行個體,您可以查看特定 MIG 的執行個體分布情形,或多個 MIG 的匯總資料。您可以根據這些洞察資料,找出可能的調整方式,將基礎架構最佳化。如要瞭解如何查看執行個體分布情形,請參閱「監控 MIG 中的執行個體分布情形」。