您可以設定內部直通式網路負載平衡器,將連線分配到「主要」後端中的虛擬機器 (VM) 執行個體,之後如有需要,再切換到使用「容錯移轉」後端。容錯移轉不僅提供增進可用性的方法,也讓您可以進一步掌控主要後端 VM 健康狀態不良時管理工作負載的方式。
本頁說明內部直通網路負載平衡器容錯移轉特有的概念和需求。為內部直通式網路負載平衡器設定容錯移轉之前,請確認您已熟悉以下文章中的概念性資訊:
瞭解這些概念很重要,因為設定容錯移轉也會修改內部直通式網路負載平衡器的標準流量分配演算法。
預設情況下,當您將後端新增到內部直通式網路負載平衡器的後端服務時,該後端就是主要後端。在您將後端新增到負載平衡器的後端服務時,可以將後端指定為容錯移轉後端,也可以稍後藉由編輯後端服務來指定。當所設定比例的主要 VM 未通過健康狀態檢查後,容錯移轉後端便只會接收來自負載平衡器的連線。
支援的執行個體群組
系統支援將代管和非代管執行個體群組當成後端。為求簡單明瞭,本頁以非代管執行個體群組為例。
將代管執行個體群組與自動調度資源和容錯移轉搭配使用,可能會導致現用集區在主要後端和容錯移轉後端之間反覆進行容錯移轉和容錯回復。 Google Cloud 不會阻止您為代管執行個體群組設定容錯移轉,因為部署作業可能受惠於這項設定。
架構
下例說明一個簡單的內部直通式網路負載平衡器,其具有一個主要後端和一個容錯移轉後端。
- 主要後端是
us-west1-a
中的非代管執行個體群組。 - 容錯移轉後端是
us-west1-c
中的另一個非代管執行個體群組。
下列所述的內部直通式網路負載平衡器,具有兩個主要後端和兩個容錯移轉後端,兩者分布在 us-west1
地區的兩個區域之間。這項設定可提高可靠性,因為它不會讓所有主要後端或所有容錯移轉後端都取決於單一區域。
如要進一步瞭解特定地區的注意事項,請參閱「地理位置與區域」一文。
- 主要後端是非代管執行個體群組
ig-a
和ig-d
。 - 容錯移轉後端是非代管執行個體群組
ig-b
和ig-c
。
在容錯移轉期間,兩個主要後端都會變成閒置狀態,而兩個容錯移轉後端中健康狀態良好的 VM 就會變為現用狀態。如需此例的容錯移轉運作原理的完整說明,請參閱容錯移轉範例。
後端執行個體群組和 VM
內部直通式網路負載平衡器中的非代管執行個體群組,不是主要後端,就是容錯移轉後端。在您將後端新增到後端服務時,或是在新增後端後透過編輯的方式,都可以將這個後端指定為容錯移轉後端。否則,非代管執行個體群組會是主要後端。
您可以在單一內部直通式網路負載平衡器中,將多個主要後端和多個容錯移轉後端新增到負載平衡器的後端服務,以設定多個主要後端和多個容錯移轉後端。
「主要 VM」是您定義為主要後端的執行個體群組成員。除非負載平衡器切換到使用其容錯移轉後端,否則主要後端中的 VM 會加入負載平衡器的「現用集區」 (詳見下節說明)。
「備用 VM」是您定義為容錯移轉後端的執行個體群組成員。當主要 VM 健康狀態不良時,容錯移轉後端中的 VM 就會加入負載平衡器的現用集區。觸發容錯機制的不良 VM 數量可設定為百分比。
限制
VM。現用集區最多可有 250 個 VM。也就是說,您的主要後端執行個體群組最多可包含 250 個主要 VM,而容錯移轉後端執行個體群組最多可包含 250 個備用 VM。
非代管執行個體群組。最多可有 50 個主要後端執行個體群組和最多 50 個容錯移轉後端執行個體群組。
比方說,部署作業最多可能有 5 個主要後端和 5 個容錯移轉後端,而每個執行個體群組包含 50 個 VM。
現用集區
現用集區是內部直通式網路負載平衡器向其傳送新連線的後端 VM 集合。現用集區中的後端 VM 成員資格會根據哪些後端健康狀態良好,以及您可以指定的條件 (如容錯移轉比例所述) 自動計算。
現用集區永遠不會結合主要 VM 和備用 VM,以下範例說明成員資格的可能性。在容錯移轉期間,現用集區只會包含備用 VM。在正常運作 (容錯回復) 期間,現用集區只會包含主要 VM。
容錯移轉和容錯回復
「容錯移轉」和「容錯回復」指的是將後端 VM 切換到或切換出負載平衡器的現用集區的自動程序。當 Google Cloud 從現用集區中移除主要 VM,並將健康狀態良好的容錯移轉 VM 新增到現用集區時,這個過程稱為容錯移轉。當 Google Cloud 反向操作這個程序時,這個過程就稱為容錯回復。
容錯移轉政策
「容錯移轉政策」是 Google Cloud用於進行容錯移轉和容錯回復的參數集合。每個內部直通式網路負載平衡器都有一個容錯移轉政策,其中包含多個設定:
- 容錯移轉率
- 當所有後端 VM 都健康狀態不良時捨棄流量
- 容錯移轉和容錯回復時連線排除
容錯移轉率
可設定的容錯移轉率決定 Google Cloud 何時執行容錯移轉或容錯回復,以變更現用集區中的成員資格。比例可以介於 0.0
到 1.0
(含) 之間。如果您未指定容錯移轉比例, Google Cloud 會使用預設值 0.0
。最佳做法是將容錯移轉比例設為適合用途的數字,而非依據這個預設值。
條件 | 現用集區中的 VM |
---|---|
|
所有健康狀態良好的主要 VM |
如果至少有一個備用 VM 健康狀態良好,並且:
|
所有健康狀態良好的備用 VM |
當所有主要 VM 和所有備用 VM 都健康狀態不良,且您尚未將負載平衡器設為在這種情況下捨棄流量 | 所有主要 VM (最不得已的做法) |
以下範例說明現用集區的成員資格。如需計算範例,請參閱容錯移轉範例。
- 如果容錯移轉比例為
1.0
,則要求所有主要 VM 都必須健康狀態良好。當「至少」一個主要 VM 健康狀態不良時, Google Cloud 就會執行容錯移轉,將備用 VM 移入現用集區。 - 如果容錯移轉比例為
0.1
,將會要求至少 10% 的主要 VM 必須健康狀態良好;否則, Google Cloud 就會執行容錯移轉作業。 - 容錯移轉比例為
0.0
時,意味著 Google Cloud 只會在所有主要虛擬機器都健康狀態不良時才會執行容錯移轉。只要有一個主要虛擬機器健康狀態良好,則不會發生容錯移轉。
內部直通式網路負載平衡器會根據流量分配演算法,將連線分配到現用集區中的 VM 之間。
當所有後端 VM 都健康狀態不良時捨棄流量
根據預設,當所有主要和備用 VM 都健康狀態不良時, Google Cloud只會在主要 VM 之間分配新連線。這是最後的手段。備份 VM 不會納入這個連線的最後手段分發作業。
如果您想要,可以設定內部直通式網路負載平衡器,在所有主要 VM 和備用 VM 都健康狀態不良時捨棄新的連線。
容錯移轉和容錯回復時連線排除
連線排除功能可讓現有的 TCP 工作階段維持現用狀態,最長可達設定的時間範圍 (即使後端 VM 的健康狀態不良)。如果負載平衡器的通訊協定為 TCP,則下列條件成立:
根據預設,系統會啟用連線排除功能。即使後端 VM 健康狀態不良或不在負載平衡器的現用集區中,現有的 TCP 工作階段也可以在後端 VM 上保留多達 300 秒 (5 分鐘)。
您可以在容錯移轉和容錯回復事件期間停用連線排除功能。在容錯移轉和容錯回復期間停用連線排除,可確保所有 TCP 工作階段 (包括已建立的工作階段) 都能快速終止。您可透過 TCP 重設封包關閉後端 VM 的連線。
在容錯移轉和容錯回復期間停用連線排除對下列情況非常有用:
修補後端 VM。在修補之前,將主要 VM 設為無法通過健康狀態檢查,藉此讓負載平衡器執行容錯移轉。停用連線排除可確保所有連線都能快速且有規劃地移到備用 VM。這樣一來,您就能安裝更新並重新啟動主要 VM,而無須保留現有的連線。完成修補後,只要有足夠數量的主要 VM (由容錯移轉比例定義) 通過健康狀態檢查, Google Cloud 就會執行容錯回復。
單一後端虛擬機器,確保資料一致性。如果您需要確保所有連線的目的地只有一個主要 VM,請停用連線排除,以便從主要 VM 切換到備用 VM 時,不會允許兩個虛擬機器保持現有連線。如此一來,在任何指定時間只要保留一個後端 VM,即可降低資料發生不一致的機率。
容錯移轉範例
下例說明架構一節所述的多區域內部轉送網路負載平衡器範例的容錯移轉行為。
這個負載平衡器的主要後端是 us-west1-a
中的非代管執行個體群組 ig-a
和 us-west1-c
中的 ig-d
。每個執行個體群組都包含兩個 VM。兩個執行個體群組中的四個 VM 全都是主要 VM:
- 「
ig-a
」設定了「vm-a1
」政策 - 「
ig-a
」設定了「vm-a2
」政策 - 「
ig-d
」設定了「vm-d1
」政策 - 「
ig-d
」設定了「vm-d2
」政策
這個負載平衡器的容錯移轉後端是 us-west1-a
中的非代管執行個體群組 ig-b
和 us-west1-c
中的 ig-c
。每個執行個體群組都包含兩個 VM。兩個執行個體群組中的四個 VM 全都是備用 VM:
- 「
ig-b
」設定了「vm-b1
」政策 - 「
ig-b
」設定了「vm-b2
」政策 - 「
ig-c
」設定了「vm-c1
」政策 - 「
ig-c
」設定了「vm-c2
」政策
假設您要為這個負載平衡器設定容錯移轉政策,以便在健康狀態良好的主要 VM 數量少於兩個時,將新的連線傳送到備用 VM。為此,請將容錯移轉比例設為 0.5
(50%
)。 Google Cloud 會使用容錯移轉比例來計算健康狀態必須良好的主要 VM 數量下限,方法就是將容錯移轉比例乘以主要 VM 數量:4 × 0.5 = 2
當四個主要 VM 全部都健康狀態良好時, Google Cloud 就會將新的連線分配給所有 VM。當主要 VM 未通過健康狀態檢查時:
如果
vm-a1
和vm-d1
健康狀態不良, Google Cloud 就會將新的連線分配到其餘兩個健康狀態良好的主要 VM (vm-a2
和vm-d2
) 之間,因為健康狀態良好的主要 VM 數量必須至少達到最小值。如果
vm-a2
也無法通過健康狀態檢查,只剩一個健康狀態良好的主要 VMvm-d2
時, Google Cloud 就會確認健康狀態良好的主要 VM 數量少於最小值,進而執行容錯移轉。現用集區是設定為四個健康狀態良好的備用 VM,而新的連線會分配到這四個 VM (位於執行個體群組ig-b
和ig-c
) 之中。即使vm-d2
健康狀態維持良好,也會從現用集區中移除,並且不會接收新的連線。如果
vm-a2
復原並通過健康狀態檢查, Google Cloud 會確認健康狀態良好的主要 VM 數量是否至少為最小值 2,以便執行容錯回復。現用集區是設定為兩個健康狀態良好的主要 VMvm-a2
和vm-d2
,系統會將新的連線分配到它們之間。所有備用 VM 都會從現用集區中移除。當其他主要 VM 復原並通過健康狀態檢查時, Google Cloud就會將它們新增到現用集區中。比方說,如果
vm-a1
健康狀態良好,Google Cloud 就會將現用集區設為 3 個健康狀態良好的主要 VM,即vm-a1
、vm-a2
和vm-d2
,並將新的連線分配到其中。
後續步驟
- 如要設定及測試使用容錯移轉功能的內部直通式網路負載平衡器,請參閱「設定內部直通式網路負載平衡器的容錯移轉功能」。
- 如要設定及測試內部直通式網路負載平衡器,請參閱「設定內部直通式網路負載平衡器」。
- 如要排解內部直通式網路負載平衡器的備援問題,請參閱「排解內部直通式網路負載平衡器問題」。