區域性外部直通式網路負載平衡器的流量分配

直通式網路負載平衡器會將傳入流量分配至可用的後端執行個體。本文說明負載平衡器如何選取後端、追蹤連線,以及管理工作階段相依性、加權負載平衡和容錯移轉。

瞭解所有這些功能如何搭配運作,有助於最佳化負載平衡設定,確保效能穩定可靠,並有效運用資源。如果應用程式需要工作階段持續性,這些機制就非常重要,可確保每次使用者互動的行為一致。

後端選取和連線追蹤

後端選取和連線追蹤功能會搭配運作,在不同後端之間平衡多個連線,並將每個連線的所有封包轉送至同一個後端。這需要採取兩步驟策略。首先,系統會使用一致雜湊法選取後端。然後,這項選取項目會記錄在連線追蹤表格中。

下列步驟說明後端選取和連線追蹤。

1。檢查連線追蹤表格項目

負載平衡器會透過下列程序,判斷負載平衡封包屬於新連線還是現有連線:

  • 含有 SYN 旗標的 TCP 封包:

    • 如果負載平衡器的連線追蹤模式為 PER_CONNECTION,請繼續進行「找出符合資格的後端」步驟。在 PER_CONNECTION 追蹤模式中,無論設定的工作階段相依性為何,帶有 SYN 旗標的 TCP 封包一律代表新連線。

    • 如果負載平衡器的連線追蹤模式為 PER_SESSION 且工作階段相依性為 NONE 或 CLIENT_IP_PORT_PROTO,請繼續執行「找出符合資格的後端」步驟。在 PER_SESSION 追蹤模式中,只有在使用 5 元組工作階段親和性選項 (NONE 或 CLIENT_IP_PORT_PROTO) 之一時,具有 SYN 旗標的 TCP 封包才代表新連線。

  • 不支援連線追蹤:如果通訊協定和工作階段相依性組合不支援連線追蹤,請繼續執行「找出符合資格的後端」步驟。如要瞭解哪些通訊協定可追蹤連線,請參閱「連線追蹤模式」一節中的表格。
  • 所有其他封包:負載平衡器會檢查封包是否與現有的連線追蹤表格項目相符。用於檢查現有連線追蹤資料表項目的封包雜湊細微程度,取決於您設定的連線追蹤模式和工作階段相依性。詳情請參閱「連線追蹤模式」一節中的表格。

    • 如果封包與連線追蹤表格項目相符,負載平衡器會將封包傳送至先前選取的後端。

    • 如果封包與連線追蹤表格項目不符,請繼續執行「找出符合條件的後端」步驟。

    如要瞭解連線追蹤表格項目的保留時間和保留條件,請參閱「管理連線追蹤表格項目」步驟。

2. 後端選取步驟

對於新連線,負載平衡器會使用一致雜湊,從符合資格的後端中選取後端。

下列步驟概述為新連線選取合格後端,然後在連線追蹤表格中記錄該連線的程序。

2.1 找出符合資格的後端

「符合資格的後端」是指可接收新連線的後端。下表定義了適用的後端組合,取決於負載平衡器是否使用容錯移轉,以及是否啟用加權負載平衡。

容錯移轉 加權負載平衡 符合條件的後端

如果同時停用容錯移轉和加權負載平衡功能,所有設定的後端都會是主要後端。符合資格的後端組合定義如下:

  • 只要至少有一個後端健康狀態良好,符合資格的後端組合就會包含所有健康狀態良好的後端。
  • 如果所有後端的健康狀態都不良,則符合資格的後端組合會包含「所有」後端。

如果停用容錯移轉負載平衡功能,並啟用加權負載平衡功能,則符合資格的後端會來自下列第一個非空白集合:

  • 所有權重不為零且健康狀態良好的後端
  • 所有權重不為零且健康狀態不良的後端
  • 所有健康後端的權重皆為零
  • 所有權重為零且健康狀態不良的後端

啟用容錯移轉負載平衡功能,並停用加權負載平衡功能時,負載平衡器會使用健康狀態檢查資訊和容錯移轉政策設定,定義符合資格的後端集:

  • 如果至少有一個 (主要或容錯移轉) 後端處於健康狀態,則符合資格的後端來自下列第一個非空白的集合:
    1. 如果沒有健康狀態良好的主要後端,則符合資格的後端為所有健康狀態良好的容錯移轉後端。
    2. 如果沒有健康狀態良好的容錯移轉後端,則符合資格的後端為所有健康狀態良好的主要後端。
    3. 如果容錯移轉比率設為 0.0 (預設值),則符合資格的後端為所有健康狀態良好的主要後端。
    4. 如果健康狀態良好的主要後端數量與主要後端總數的比率,大於或等於設定的容錯移轉率,則符合資格的後端會包含所有健康狀態良好的主要後端。
    5. 符合資格的後端包含所有健康狀態良好的容錯移轉後端。
  • 如果沒有健康狀態良好的 (主要和容錯移轉) 後端,符合資格的後端組合完全取決於容錯移轉政策設定:
    • 如果容錯移轉政策設定為在主要和容錯移轉後端皆不正常時捨棄新連線,則合格後端集會是空的。因此,負載平衡器會捨棄新連線的封包。
    • 如果容錯移轉政策未設定為在主要和容錯移轉後端皆不正常時捨棄新連線,則符合資格的後端為所有不正常的主要後端。

同時啟用容錯移轉和加權負載平衡功能時,負載平衡器會使用權重資訊、健康狀態檢查資訊和容錯移轉政策設定,定義符合資格的後端集:

  • 當至少有一個權重不為零 (主要或容錯移轉) 的後端健康狀態良好時,符合資格的後端會來自下列第一個非空白集合:
    1. 如果權重不為零且健康狀態良好的主要後端組合為空白,則符合資格的後端為所有權重不為零且健康狀態良好的容錯移轉後端。
    2. 如果權重不為零的健康容錯移轉後端組合為空白,則符合資格的後端為所有權重不為零的健康主要後端。
    3. 如果容錯移轉比率設為 0.0 (預設值),則符合資格的後端為所有權重不為零且健康狀態良好的主要後端。
    4. 如果權重不為零的健康主要後端數量與主要後端總數的比率,大於或等於設定的容錯移轉比率,則符合資格的後端會包含所有權重不為零的健康主要後端。
    5. 符合資格的後端包括所有權重不為零的健康狀態容錯移轉後端。
  • 如果沒有健康狀態良好且權重不為零 (主要和容錯移轉) 的後端,則符合資格的後端組合取決於容錯移轉政策設定:
    • 如果容錯移轉政策設定為在沒有健康狀態良好的非零權重主要和容錯移轉後端時,捨棄新的連線,則符合資格的後端組合會是空的。因此,負載平衡器會捨棄新連線的封包。
    • 如果容錯移轉政策「未」設為在沒有健康狀態良好、權重非零的主要和容錯移轉後端時捨棄新的連線,則符合資格的後端會來自下列第一個非空白集合:
      1. 所有權重不為零且運作狀態不良的主要後端
      2. 所有權重不為零、健康狀態不良的容錯移轉後端
      3. 所有權重為零的健康主要後端
      4. 所有權重為零、健康狀態良好的容錯移轉後端
      5. 所有權重為零、健康狀態不良的主要後端
      6. 所有權重為零、健康狀態不良的容錯移轉後端

2.2 選取符合條件的後端

負載平衡器會維護合格後端的雜湊,每個後端雜湊都會對應至單位圓。加權負載平衡會改變符合資格的後端對應至圓圈的方式,因此權重較高的後端更有可能獲選,機率與權重成正比。

處理連線追蹤表格中未列出的連線封包時,負載平衡器會計算封包特性的雜湊,並將該雜湊對應至相同的單位圓,然後在圓周上選取符合資格的後端。用於計算封包雜湊的封包特徵集,是由工作階段相依性設定定義。舉例來說,如果選取的工作階段相依性導致 2 元組或 3 元組後端選取雜湊,則來自來源 IP 位址的所有 TCP 連線都會對應至相同的合格後端。

  • 如未明確設定工作階段相依性,系統會預設為 NONE 工作階段相依性。
  • 即使符合資格的後端數量或權重有所變更,一致性雜湊也能確保負載平衡器將新連線指派給符合資格的後端,盡量減少對應中斷情形。

    • 在下列情況下,負載平衡器「一律」會為連線選取相同的合格後端,更廣泛地說,對於具有工作階段相依性設定所定義相同封包特性的所有封包,負載平衡器「一律」會選取相同的合格後端:

      • 如果未設定加權負載平衡,則符合資格的後端組合不會變更。

      • 如果設定了加權負載平衡,則符合資格的後端組合「不會」變更,「且」每個符合資格的後端權重會維持不變。

    • 如果新增、移除符合資格的後端,或變更其權重,一致性雜湊會盡可能減少對其他符合資格後端的對應干擾,也就是說,對應至其他符合資格後端的大多數連線,會繼續對應至相同的符合資格後端。

  • 此外,一致雜湊可確保負載平衡器盡可能公平地在符合資格的後端之間分配新連線。針對設定的工作階段相依性設定定義的所有可能封包雜湊 (更具體來說,當工作階段相依性導致後端選取 5 元組雜湊時,針對所有可能連線):

    • 如果未設定加權負載平衡,則大約有 1/N 個可能的封包雜湊會對應至每個符合資格的後端,其中 N 是符合資格的後端數量。

    • 如果設定加權負載平衡,對應至各個合格後端的可能封包雜湊比率,約為合格後端的權重除以所有合格後端權重的總和。

  • 以下兩個範例說明加權負載平衡如何影響每個合格後端的選取機率:

    • 如果後端服務有兩個符合條件的後端,第一個後端的權重為 1,第二個後端的權重為 4,則第一個符合條件的後端有 20% (1÷(1+4)) 的選取機率,第二個符合條件的後端有 80% (4÷(1+4)) 的選取機率。

    • 如果後端服務有三個符合資格的後端 (符合資格的後端 a 的權重為 0、符合資格的後端 b 的權重為 2,以及符合資格的後端 c 的權重為 6),則後端 a 的選取機率為 0% (0÷(0+2+6))、後端 b 的選取機率為 25% (2÷(0+2+6)),後端 c 的選取機率為 75% (6÷(0+2+6))。

2.3 建立連線追蹤表格項目

選取後端後,如果設定的工作階段相依性支援封包通訊協定的連線追蹤,負載平衡器就會建立連線追蹤資料表項目。

  • 如果通訊協定和工作階段相依性組合不支援連線追蹤,請略過這個步驟。

  • 如果設定的工作階段相依性支援封包通訊協定的連線追蹤,則建立的連線追蹤資料表項目會將封包特徵對應至所選後端。用於這項對應的封包標頭欄位,取決於您設定的連線追蹤模式和工作階段相依性。

如要瞭解根據設定選項,哪些通訊協定可追蹤連線,以及連線追蹤表中的雜湊值使用哪些封包特性,請參閱「連線追蹤模式」一節中的表格。

3。管理連線追蹤表格項目

如果通訊協定和工作階段相依性組合支援連線追蹤,負載平衡器會根據下列事件和規則,管理連線追蹤表格項目:

  • 移除閒置項目:如果 Maglev 未處理新的輸入封包,連線追蹤表格項目會在 60 秒後移除。詳情請參閱「閒置逾時」。
  • 關閉的 TCP 連線:使用 FIN 或 RST 封包關閉 TCP 連線時,系統「不會」移除 TCP 連線的連線追蹤表格項目。系統可能會在稍後移除閒置項目。每個新的 TCP 連線一律會攜帶 SYN 旗標,並接受「檢查連線追蹤資料表項目」步驟所述的處理程序。

  • 連線在容錯移轉時不保留:如果設定了至少一個容錯移轉後端,且停用了容錯移轉設定的連線排除,則在符合資格的後端組合在主要和容錯移轉後端之間切換後,負載平衡器會移除連線追蹤資料表中的所有項目,並遵循下列規則:

    • 當符合資格的後端組合在主要和容錯移轉後端之間切換時,負載平衡器不會主動移除連線追蹤表格項目。而是負載平衡器會在連線的下一個封包抵達時,移除每個連線追蹤資料表項目,前提是符合資格的後端組合尚未切換回來。

    • 如果符合資格的後端組合在主要和容錯移轉後端之間切換 (例如從主要切換至容錯移轉,再切換回主要),且在切換事件之間沒有連線封包抵達,則連線追蹤表格項目會保留,除非有其他原因或事件移除連線追蹤表格項目。

    詳情請參閱「容錯移轉時的連線排除」。

  • 連線不會持續連線至健康狀態不良的後端:如果封包通訊協定的連線持續連線至健康狀態不良的後端功能已停用,負載平衡器會根據下列規則,移除健康狀態不良後端的連線追蹤資料表項目:

    • 當先前選取的後端變成健康狀態不良時,負載平衡器不會主動移除該後端的連線追蹤表格項目。相反地,當連線的「下一個封包」送達時,負載平衡器會移除連線追蹤資料表項目,前提是先前選取的後端「仍處於健康狀態不良」。連線的後續封包會視為新連線,因為負載平衡器會選取新的合格後端,並建立新的連線追蹤表格項目。

    • 如果先前選取的後端從正常變為異常,然後又恢復正常,且在先前選取的後端異常時,沒有任何連線封包抵達,則除非有其他原因或事件移除連線追蹤資料表項目,否則系統會保留連線追蹤資料表項目。

  • 移除、停止或刪除後端時的連線排除:如果啟用移除、停止或刪除後端時的連線排除,連線追蹤表格項目會在可設定的連線排除逾時後移除。收到移除 (捨棄)、停止或刪除後端的指令時 (包括因縮減代管執行個體群組而產生的刪除指令),系統就會開始計算逾時時間。如果已停用移除、停止或刪除後端的連線排除功能,系統會在收到移除、停止或刪除後端的指令時,移除連線追蹤表格項目。詳情請參閱「啟用連線排除」。

工作階段相依性

區域性外部直通式網路負載平衡器的工作階段相依性設定,會定義用於選取後端的封包雜湊,以及用於追蹤連線的封包雜湊 (取決於連線追蹤模式)。

您必須在後端服務上設定工作階段相依性,而非在每個後端執行個體群組或 NEG 上設定。工作階段相依性會決定要使用哪些 IP 和第 4 層標頭,來計算封包特性的雜湊。封包特性的雜湊值會用於後端選取步驟。

區域性外部直通式網路負載平衡器支援下列工作階段相依性設定。

選取後端的雜湊方法 工作階段相依性設定

非片段化封包的 5 元組雜湊 (包含來源 IP 位址、來源通訊埠、通訊協定、目的地 IP 位址和目的地通訊埠),其中包含通訊埠資訊 (TCP 封包和非片段化 UDP 封包)

或

3 元組雜湊 (包含來源 IP 位址、目的地 IP 位址和通訊協定),適用於 UDP 封包片段和其他所有通訊協定的封包

NONE1
或
CLIENT_IP_PORT_PROTO
3 元組雜湊
(包含來源 IP 位址、目的地 IP 位址和通訊協定)
CLIENT_IP_PROTO
2 元組雜湊
(由來源 IP 位址和目的地 IP 位址組成)
CLIENT_IP

1 NONE 工作階段相依性不表示沒有工作階段相依性。而是指工作階段相依性是透過封包特性的 5 元組雜湊或 3 元組雜湊完成,功能上與設定 CLIENT_IP_PORT_PROTO 時的行為相同。

連線追蹤政策

本節說明負載平衡器連線追蹤政策中的設定:

連線追蹤模式

本節說明負載平衡器在連線追蹤資料表中建立項目的時機和方式。區域性外部直通式網路負載平衡器支援依據通訊協定和工作階段相依性追蹤連線:

  • 無論工作階段相依性選項為何,TCP 連線一律可追蹤。

  • 除了 NONE 以外,所有工作階段黏著度選項都可追蹤 UDP、ESP 和 GRE 連線。如果是 NONE 工作階段相依性,這些通訊協定無法追蹤連線。

  • 對於所有工作階段相依性選項,所有其他通訊協定 (例如 ICMP 和 ICMPv6) 都無法追蹤連線。

如果可以追蹤連線,連線追蹤模式、通訊協定和工作階段相依性會決定一組封包特徵,用於在每個連線追蹤表格項目中建立封包雜湊。

連線追蹤模式可以是下列其中一種:

  • PER_CONNECTION:這是預設且最精細的連線追蹤模式。每項連線都會定義為封包特性的 5 元組雜湊或 3 元組雜湊,具體取決於封包中是否有通訊埠資訊。包含通訊埠資訊的非分段封包 (例如 TCP 封包和非分段 UDP 封包) 會以 5 元組雜湊追蹤。其他所有封包則會以 3 元組雜湊追蹤。

  • PER_SESSION:這種連線追蹤模式的精細程度較低,使用的雜湊與工作階段相依性雜湊相符。視所選的工作階段相依性而定,PER_SESSION 追蹤模式可將多個不同的連線視為單一連線,以便追蹤連線。這會降低連線被視為新連線的頻率,並減少後端選取步驟的執行次數。

下表為摘要:

  • 用於後端選取的封包雜湊。
  • 用於連線追蹤的封包雜湊,取決於連線追蹤模式、通訊協定和工作階段相依性。
工作階段相依性 後端選取的封包雜湊 用於追蹤連線的封包雜湊
使用 PER_CONNECTION 追蹤模式 (預設) 時 使用 PER_SESSION 追蹤模式時
NONE (預設)
  • TCP 和未分段的 UDP:5 元組雜湊
  • 分段 UDP 和所有其他通訊協定:3 元組雜湊
  • TCP:連線追蹤功能已啟用,5 元組雜湊
  • 所有其他通訊協定:關閉連線追蹤
  • TCP:連線追蹤功能已開啟,5 元組雜湊
  • 所有其他通訊協定:關閉連線追蹤
CLIENT_IP_PORT_PROTO
  • TCP 和未分段的 UDP:5 元組雜湊
  • UDP 片段和其他所有通訊協定:3 元組雜湊
  • TCP 和未分段的 UDP:啟用連線追蹤,5 元組雜湊
  • 分段 UDP、ESP 和 GRE:連線追蹤功能已啟用,3 元組雜湊
  • 所有其他通訊協定:關閉連線追蹤
  • TCP 和未分段的 UDP:啟用連線追蹤,5 元組雜湊
  • 分段 UDP、ESP 和 GRE:連線追蹤功能已啟用,3 元組雜湊
  • 所有其他通訊協定:關閉連線追蹤
CLIENT_IP_PROTO
  • 所有通訊協定:3 元組雜湊
  • TCP 和未分段的 UDP:啟用連線追蹤,5 元組雜湊
  • 分段 UDP、ESP 和 GRE:連線追蹤功能已啟用,3 元組雜湊
  • 所有其他通訊協定:關閉連線追蹤
  • TCP、UDP、ESP、GRE:連線追蹤功能已啟用,3 元組雜湊
  • 所有其他通訊協定:關閉連線追蹤
CLIENT_IP
  • 所有通訊協定:2 元組雜湊
  • TCP 和未分段的 UDP:連線追蹤功能已開啟,5 元組雜湊
  • 分段 UDP、ESP 和 GRE:連線追蹤功能已啟用,3 元組雜湊
  • 所有其他通訊協定:關閉連線追蹤
  • TCP、UDP、ESP、GRE:連線追蹤功能已啟用,2 元組雜湊
  • 所有其他通訊協定:關閉連線追蹤

如要瞭解如何變更連線追蹤模式,請參閱「設定連線追蹤政策」。

持續連線至健康狀態不良的後端

「Connection persistence on unhealthy backends」(持續連線至健康狀態不良的後端) 控制項,可決定先前選取的後端 VM 變成健康狀態不良時,現有連線是否能持續連線至該 VM。如要持續連線至健康狀態不良的後端,後端 VM 必須仍是負載平衡執行個體群組或 NEG 的成員,且通訊協定和工作階段相依性組合支援連線追蹤。

可用的連線持續性選項如下:

  • DEFAULT_FOR_PROTOCOL (預設)
  • NEVER_PERSIST
  • ALWAYS_PERSIST

下表說明連線至健康狀態不良的後端時,連線持續性行為取決於連線至健康狀態不良的後端選項、連線追蹤模式、工作階段相依性和通訊協定。

「持續連線至健康狀態不良的後端」選項 持續連線至健康狀態不良的後端行為
使用 PER_CONNECTION 追蹤模式 (預設) 時 使用 PER_SESSION 追蹤模式時
DEFAULT_FOR_PROTOCOL
  • TCP (所有工作階段親和性):連線會持續連至健康狀態不良的後端,但須遵守「管理連線追蹤資料表項目」步驟中的其他事件和規則
  • 所有其他通訊協定:連線不會持續連至健康狀態不良的後端
  • TCP (NONE 和 CLIENT_IP_PORT_PROTO 工作階段相依性):持續連線至健康狀態不良的後端,但須遵守管理連線追蹤表格項目步驟中的其他事件和規則
  • TCP (所有其他工作階段親和性) 和所有其他通訊協定: 連線不會持續連線至健康狀態不良的後端
NEVER_PERSIST 所有通訊協定:連線不會持續連線至健康狀態不良的後端
ALWAYS_PERSIST

這個選項僅適用於進階用途。

  • TCP (所有工作階段相依性);ESP、GRE、UDP (不含 NONE 的所有工作階段相依性):連線會保留在健康狀態不良的後端,但須遵守「管理連線追蹤表格項目」步驟中的其他事件和規則
  • ESP、GRE、UDP (NONE 工作階段相依性):不適用,因為無法追蹤連線
無法設定

如要瞭解如何變更連線持續性行為,請參閱「設定連線追蹤政策」。

健康狀態不良的後端上的 TCP 連線持續性行為

在下列情況下,負載平衡器會使用 5 元組雜湊連線追蹤功能,追蹤 TCP 連線:

  • 使用 PER_CONNECTION 追蹤模式 (所有工作階段相依性),或
  • 使用 PER_SESSION 追蹤模式時,和工作階段相依性為 NONE 或 CLIENT_IP_PORT_PROTO。

負載平衡器使用 5 元組雜湊連線追蹤 TCP 連線時,請注意下列行為:

  • 如果健康狀態不良的後端持續回應封包,連線就會繼續,直到重設或關閉 (由健康狀態不良的後端或用戶端執行)。
  • 如果健康狀態不良的後端傳送 TCP 重設 (RST) 封包,或未回應封包,用戶端可能會嘗試建立新連線,讓負載平衡器選取其他符合資格的後端。(在「找出符合條件的後端」步驟中,TCP SYN 封包會視為新連線)。

閒置逾時

負載平衡器處理與項目相符的最後一個封包後,連線追蹤表中的項目會在 60 秒後失效。無法修改這個閒置逾時值。

為已移除、停止或刪除的後端排除連線

發生下列任一情況時,連線排除功能會提供可設定的時間下限,讓現有連線保留在負載平衡器的連線追蹤表中:

  • 從後端執行個體群組中移除虛擬機器 (VM) 執行個體 (包括捨棄後端代管執行個體群組中的執行個體)
  • VM 停止或遭到刪除 (包括滾動式更新或縮減後端代管執行個體群組等自動動作)
  • 從後端網路端點群組 (NEG) 移除端點

根據預設,移除、停止或刪除後端時,連線排除功能會停用。詳情請參閱「啟用連線排空」。

加權負載平衡

加權負載平衡會影響後端選取步驟中哪些後端符合資格。每個後端 VM 或端點都會使用 HTTP 健康狀態檢查和自訂回應標頭,向負載平衡器回報權重。如要使用加權負載平衡,您必須在負載平衡器的後端服務上設定下列項目:

  • 地區政策 (localityLbPolicy) 必須設為 WEIGHTED_MAGLEV。
  • 健康狀態檢查必須是 HTTP 健康狀態檢查,且會傳送特殊的回應標頭:

    • 回應標頭的欄位名稱必須是 X-Load-Balancing-Endpoint-Weight。
    • 回應標頭的欄位值可以介於 0 至 1000 (含) 之間。

詳情請參閱「設定加權負載平衡」。

加權負載平衡的注意事項

加權負載平衡適用於下列情況,可讓後端繼續處理現有連線:

  • 加權負載平衡可讓處理長時間連線或涉及大量資料的後端,告知負載平衡器減少接收的新連線數量。

  • 加權負載平衡可讓過載或進入維護狀態的後端,從新連線的適用後端中移除自身。為此,超載的後端會傳送 X-Load-Balancing-Endpoint-Weight: 0 回應標頭 (且可繼續通過或無法通過負載平衡器健康狀態檢查)。這是因為在「找出符合資格的後端」步驟中,所有權重不為零的後端 (無論健康狀態檢查狀態為何) 都是更合適的後端。

使用負載平衡時,請注意下列事項:

  • 如果符合條件的後端經常變更權重,加權負載平衡可能會對工作階段相依性造成不利影響。詳情請參閱「選取符合資格的後端」步驟。

  • 如果使用相同的執行個體群組或 NEG 做為兩項以上負載平衡器後端服務的後端,可以採用下列策略,為每項後端服務回報專屬權重:

    • 請為每項後端服務使用專屬的 HTTP 健康狀態檢查。每項健康狀態檢查都可以使用專屬目標通訊埠或 request-path 參數。

    • 設定後端執行個體或端點,以便在每次健康狀態檢查時,回應適當的權重資訊。

容錯移轉

您可以透過容錯移轉功能,將後端執行個體群組或 NEG 及其端點分類,藉此影響符合資格的後端組合:

  • 主要後端是指執行個體群組或 NEG 中的 VM 或端點,這些 VM 或端點已設定為主要後端群組。
  • 「容錯移轉後端」是指設為「容錯移轉後端群組」的執行個體群組或 NEG 中的 VM 或端點。

根據預設,將執行個體群組或 NEG 新增至後端服務時,執行個體群組或 NEG 會是主要後端群組。一項後端服務最多可新增 50 個主要後端群組和 50 個容錯移轉後端群組。

如要啟用容錯移轉功能,您必須為負載平衡器的後端服務設定下列兩項:

  • 至少一個非空白的主要後端群組
  • 至少一個非空白的容錯移轉後端群組

啟用容錯移轉功能後,系統會根據下列因素決定符合資格的後端組合:

  • 每個後端的健康狀態
  • 容錯移轉政策中的容錯移轉率
  • 容錯移轉政策中的「drop traffic if backends are unhealthy」(如果後端健康狀態不良,則捨棄流量) 設定
  • 您是單獨使用容錯移轉,還是搭配加權負載平衡

容錯移轉政策

您可以在後端服務的容錯移轉政策中調整下列設定。只有在啟用容錯移轉功能時,容錯移轉政策才會生效。

  • 容錯移轉率:介於 0.0 至 1.0 之間的數字 (含)。
  • Drop traffic if backends are unhealthy:布林值,決定負載平衡器的最後手段行為。容錯移轉比率和「drop traffic if backends are unhealthy」(如果後端健康狀態不良,則捨棄流量) 設定會與其他因素搭配運作,控管符合資格的後端組合。
  • 容錯移轉時連線排除:布林值,可控制當符合資格的後端組合在主要和容錯移轉後端之間切換時,連線是否會保留在先前選取的後端上。

容錯移轉率

容錯移轉比例會決定符合資格的後端集何時要在主要和容錯移轉後端之間切換。比例可以是介於 0.0 至 1.0 之間的數字 (含首尾)。如未指定容錯移轉比率, Google Cloud 會使用預設值 0.0。最佳做法是根據用途設定合適的容錯移轉比率,而非採用預設值。

容錯移轉時連線排除

容錯移轉時連線排除:控制當符合資格的後端在主要和容錯移轉後端之間切換時,先前選取的後端 VM 或端點是否會保留現有連線。

容錯移轉時連線排除功能預設為啟用。下表摘要說明連線是否會保留,具體取決於容錯移轉時的連線排除選項和通訊協定:

容錯移轉時連線排除選項 當符合資格的後端集在主要和容錯移轉後端之間切換時的行為
已啟用 (預設)
  • 可追蹤連線的通訊協定:只要有對應的連線追蹤資料表項目,連線就會持續存在,即使符合資格的後端組合在主要和容錯移轉後端之間切換,連線也不會中斷。詳情請參閱管理連線追蹤表格項目步驟。
  • 無法追蹤連線的通訊協定:當符合資格的後端集在主要和容錯移轉後端之間切換時,連線不會持續存在。

如要瞭解哪些通訊協定可追蹤連線,請參閱「連線追蹤模式」一節中的表格。

已停用 所有通訊協定:如果符合資格的後端組合在主要和容錯移轉後端之間切換,連線就不會保留

在下列情況下,建議停用容錯移轉時排除連線功能:

  • 修補後端 VM。修補前,您可以將健康狀態良好的主要後端設定為非零權重,使其健康狀態檢查失敗,也可以將權重設為零。這樣一來,符合資格的後端可以是權重不為零、健康狀態良好的容錯移轉後端。如果停用容錯移轉連線排除功能,負載平衡器會移除連線追蹤表格項目,將後端選取步驟套用至後續封包,並將封包傳送至其他符合資格的後端。接著,不同的後端會透過 TCP 重設關閉連線,讓用戶端 VM 快速與負載平衡器建立新連線。

  • 單一後端 VM,確保資料一致性。如要確保符合資格的後端組合不超過一個成員 VM 或端點,請停用容錯移轉時的連線排除功能,降低資料不一致的可能性。

如要瞭解如何在容錯移轉時停用連線排除功能,請參閱「定義容錯移轉政策」。

最佳做法和指引

您可以按照下列操作指南,最佳化區域性外部直通式網路負載平衡器。以下各節提供管理 UDP 封包片段的技術相關規定,以及測試單一用戶端負載分配的最佳做法。

處理 UDP 分割

後端服務型區域性外部直通式網路負載平衡器,可處理分割和未分割的 UDP 封包。如果應用程式使用分段 UDP 封包,請注意下列事項:

  • UDP 封包可能會在抵達 Google Cloud 虛擬私有雲網路前遭到分段。
  • Google Cloud 虛擬私有雲網路會轉送抵達的 UDP 片段 (不會等待所有片段抵達)。
  • 非Google Cloud 網路和地端部署網路設備可能會轉送抵達的 UDP 片段、延遲片段化 UDP 封包,直到所有片段都抵達,或捨棄片段化 UDP 封包。詳情請參閱網路供應商或網路設備的說明文件。

如果您預期會收到分割的 UDP 封包,且需要將這些封包轉送至相同的後端,請使用下列轉送規則和後端服務設定參數:

  • 轉送規則設定:每個負載平衡 IP 位址只能使用一個 UDP 或 L3_DEFAULT 轉送規則,並將轉送規則設為接受所有通訊埠的流量。這可確保所有片段都符合相同的轉送規則。即使分段封包 (第一個分段以外) 缺少目的地通訊埠,將轉送規則設為處理所有通訊埠的流量,也會將規則設為接收沒有通訊埠資訊的 UDP 分段。如要設定所有通訊埠,請使用 Google Cloud CLI 設定 --ports=ALL,或使用 API 將 allPorts 設為 True。

  • 後端服務設定:將後端服務的工作階段相依性設為 CLIENT_IP (2 元組雜湊) 或 CLIENT_IP_PROTO (3 元組雜湊),這樣一來,系統就會為包含通訊埠資訊的 UDP 封包,以及缺少通訊埠資訊的 UDP 片段 (第一個片段除外) 選取相同的後端。將後端服務的連線追蹤模式設為 PER_SESSION,以便使用相同的 2 元組或 3 元組雜湊建立連線追蹤表格項目。

從單一用戶端進行測試

從單一用戶端測試區域性外部直通式網路負載平衡器時,請注意下列事項:

  • 如果用戶端 VM 不是負載平衡器的後端:系統會按照「後端選取和連線追蹤」步驟所述處理新連線。在「Select an eligible backend」(選取符合資格的後端) 步驟中,負載平衡器會根據工作階段相依性建立封包特性的雜湊。

    請注意,所有工作階段相依性選項都至少會依據用戶端的 IP 位址,因此來自相同用戶端的連線,可能會比預期更頻繁地分配到同一個符合資格的後端。因此,您無法透過單一用戶端連線至區域性外部直通式網路負載平衡器,準確模擬新連線的整體分布情形。

  • 如果用戶端 VM 也是負載平衡器的後端 VM:負載平衡器實際上完全不會處理新連線。由於轉送規則有本機路由,因此目的地 IP 位址為負載平衡器轉送規則的輸出封包,會在用戶端的客體 OS 內進行本機路由。

後續步驟