內部直通式網路負載平衡器的可用區親和性

在負載平衡器的後端服務上設定區域親和性,即可限制跨區域流量、縮短延遲時間及提升效能,同時維持多區域架構的優點。

內部直通式網路負載平衡器支援不同的可用區相依性選項,可讓您選用各種偏好設定,將新的連線轉送至與相容用戶端位於同一個可用區的合格後端。請注意,負載平衡器連線追蹤表中的已建立連線不受區域相依性影響。

事前準備

啟用可用區親和性之前,請務必瞭解哪些內部直通式網路負載平衡器功能支援可用區親和性。

支援功能

不支援的功能

區域親和性與下列設定的內部直通式網路負載平衡器不相容:

相容的用戶端

只有與負載平衡器位於相同地區的 VM 用戶端,才能使用區域親和性。區域親和性與下列用戶端不相容,這些用戶端一律會以區域親和性已停用的狀態運作:

  • 透過 Cloud VPN 通道和 Cloud Interconnect VLAN 連結連線的用戶端Cloud VPN 通道Cloud Interconnect VLAN 連結是區域性資源,而非可用區資源。無論封包是否與負載平衡器位於相同區域,透過 Cloud VPN 通道或 VLAN 連結路由傳送的封包一律不支援區域親和性。

  • 位於與負載平衡器區域不符的區域中的用戶端 VM:如果啟用全域存取權,位於一個區域的內部直通式網路負載平衡器,可供所有其他區域的用戶端存取。如果用戶端 VM 所在的區域與負載平衡器所在的區域不同,用戶端 VM 絕不會與任何負載平衡器後端共用可用區。

與下一個躍點內部直通式網路負載平衡器的相容性

雖然可以為用做靜態路徑下一個躍點的內部直通式網路負載平衡器啟用區域親和性,但一般不建議用於有狀態架構,因為這類架構會平行設定防火牆等虛擬設備,且負載平衡實體會放置在防火牆的任一側。

詳情請參閱「以內部直通式網路負載平衡器為下一個躍點」指南的規定一節。

可用區相依性選項

內部直通式網路負載平衡器支援下列可用區相依性選項:

  • ZONAL_AFFINITY_DISABLED (預設):停用可用區相依性。負載平衡器會為新連線選取符合資格的後端,但不會修改原始符合資格的後端集。

  • ZONAL_AFFINITY_STAY_WITHIN_ZONE:已啟用可用區相依性。如果發生可用區相符的情況,即使必須使用健康狀態不佳的後端,負載平衡器也會將流量保留在用戶端的可用區。如要進一步瞭解這個選項,請參閱ZONAL_AFFINITY_STAY_WITHIN_ZONE 的運作方式

  • ZONAL_AFFINITY_SPILL_CROSS_ZONE:已啟用可用區相依性。如果發生可用區相符情形,負載平衡器會允許將新連線分配至用戶端可用區內,或溢出至其他可用區。溢出是由溢出比率控制。如要進一步瞭解這個選項,請參閱溢位比率的運作方式ZONAL_AFFINITY_SPILL_CROSS_ZONE

如要瞭解如何在內部直通式網路負載平衡器的後端服務上設定可用區親和性,請參閱「使用可用區親和性」。

區域親和性的運作方式

接下來的章節將深入說明區域親和性的運作方式。您不必瞭解這些詳細資料也能設定區域親和性,但有助於瞭解極端情況和精確的流量分配行為。

具體來說,這些章節涵蓋下列內容:

不同類型的後端

區域親和性會根據負載平衡器的原始合格後端和已設定的後端,建立一組經過修改的合格後端。為說明區域親和性如何進行這項修改,我們精確定義了五種不同的後端集。本文後續章節會說明區域親和性運作方式,並參考下列術語。

  • 輸入集

    • 已設定的後端:屬於負載平衡器後端服務的所有後端。包括所有主要後端,以及 (如果已啟用容錯移轉功能) 所有主要和容錯移轉後端。

    • 原始符合資格的後端:設定後端的一小部分,可接收新的連線。原始合格後端集是由後端選取和連線追蹤程序的「識別合格後端」步驟產生。

  • 中介集

    • 區域比對測試後端:用於測試區域比對的一組設定後端。設定的後端原始符合資格的後端都會決定哪些 VM 是區域相符測試後端

    • 區域相符後端:與相容用戶端位於相同區域的區域相符測試後端子集。

  • 輸出集

    • 修改後的適用後端:視設定的區域親和性類型和溢出比例而定,修改後的適用後端可能與原始適用後端相同、是原始適用後端的子集,或與原始適用後端不同。這組設定用於提供已設定的區域相依性。

區域比對

可用區相符條件說明觸發可用區相依性的條件。負載平衡器可能會修改原始符合資格的後端組合,以提供設定的區域相依性。負載平衡器為新連線選取符合資格的後端,系統才會修改原始符合資格的後端。

如要觸發區域親和性邏輯,必須發生下列一連串事件:

  1. 必須啟用區域相依性。

    如果已啟用區域親和性,請繼續下一個步驟。

  2. 判斷用戶端是否為相容用戶端

    如果用戶端相容,請繼續下一個步驟。

  3. 判斷是否可進行區域比對。

    區域相符表示用戶端 VM 位於至少包含一個區域相符測試後端的區域。區域相符測試後端是一組已設定的後端,以原始符合資格的後端為基礎。詳情請參閱「區域比對條件」。

    如果符合下列任一條件,就「絕不會」出現區域相符項目:

    • 可用區相依性已停用
    • 用戶端不相容
  4. 套用區域相依性邏輯

區域比對條件

如要進行區域比對,區域比對測試後端中至少要有一個執行個體或端點,與相容的用戶端位於同一個區域。設定的後端符合資格的原始後端都會做為輸入內容,用於判斷區域相符測試後端

符合資格的原始後端 可用區比對測試後端
所有健康狀態良好的主要後端

所有已設定的主要後端

設定的主要後端可能全數正常運作,也可能正常運作和運作異常的後端都有。

所有健康狀態良好的容錯移轉後端

所有已設定的容錯移轉後端

設定的容錯移轉後端可能全數健康狀態良好,也可能健康狀態良好和不良的後端都有。

所有健康狀態不良的主要後端

所有已設定的主要後端

根據定義,當原始符合資格的後端全都不良時,設定的主要後端全都不良。

區域比對範例

請參考下列內部直通式網路負載平衡器設定,瞭解是否發生區域相符

  • 主要後端:可用區 A 和 B
  • 容錯移轉後端:可用區 C 和 D
  • 用戶端 VM 位置:可用區 A
  • 已啟用可用區相依性
  • 預設容錯移轉政策存在

情境 1

  • 原始合格後端:所有運作狀態良好的主要後端 (可用區 A 和 B)
  • 區域相符測試後端:所有已設定的主要後端 (區域 A 和 B)
  • 是否有區域相符項目?:可以。在本例中,用戶端 VM 與區域相符測試後端位於相同可用區,因此區域相符。

情境 2

  • 原始符合資格的後端:所有健康狀態良好的容錯移轉後端 (區域 C 和 D)
  • 區域相符測試後端:所有已設定的容錯移轉後端 (區域 C 和 D)
  • 是否有區域相符項目?:否。如要進行區域比對,用戶端 VM 必須位於至少包含一組區域比對測試後端的區域。在本例中,用戶端位於區域 A,而區域比對測試後端則位於區域 C 和 D。

發生區域相符後,請套用以下各節所述的區域親和性邏輯。

可用區相依性邏輯

如果發生區域相符情形,請根據設定的區域相依性選項套用區域相依性邏輯。啟用區域親和性的選項如下:

  • ZONAL_AFFINITY_STAY_WITHIN_ZONE
  • ZONAL_AFFINITY_SPILL_CROSS_ZONE,溢出比率為 0
  • ZONAL_AFFINITY_SPILL_CROSS_ZONE,且溢出比率不為零

發生區域相符後,視設定的區域親和性選項類型而定,修改後的適用後端可能與原始適用後端相同、是原始適用後端的子集,或與原始適用後端不同。

ZONAL_AFFINITY_STAY_WITHIN_ZONE 的運作方式

如果區域相依性設為 ZONAL_AFFINITY_STAY_WITHIN_ZONE,且發生區域相符情形,負載平衡器會將新連線分配至修改後的合格後端。修改後的合格後端可能與原始合格後端相同、是原始合格後端的子集,或與原始合格後端不同。

如要建立修改後的合格後端,負載平衡器會使用下列程序:

  1. 區域相符測試後端開始,這些後端是由區域相符條件所識別。

  2. 移除所有與用戶端不在同一可用區的後端。 這會產生一組區域相符的後端。 由於發生區域相符,這個集合一律不會是空白。

  3. 計算區域相符後端原始符合資格的後端的交集。這個交集可能不為空或為空。

    • 如果交集不為空,則修改後的適用後端為交集集合。修改後的合格後端可能與原始合格後端相同,也可能只是原始合格後端的子集。

    • 如果交集為空,則修改後的合格後端就是區域相符後端本身,這與原始合格後端一律不同。在這種情況下,所有經過修改的合格後端運作狀態皆不良。

下表摘要說明在區域親和性選項為 ZONAL_AFFINITY_STAY_WITHIN_ZONE 時,建立一組修改後符合資格的後端的程序。即使使用健康狀態不良的後端,這個可用區親和性選項也會優先使用用戶端可用區中的後端。

原先符合資格的後端 (A) 可用區相符測試後端 (B) 可用區相符的後端 (C) 交集 (A∩C) 已修改符合資格的後端
所有健康狀態良好的主要後端

所有已設定的主要後端

區域相符測試後端可能全數正常運作,也可能正常和異常運作的後端都有。

用戶端區域中的所有主要後端

區域相符的後端可能全數正常運作、全數運作異常,或正常運作和運作異常的後端都有。

用戶端所在區域中所有運作狀態良好的主要後端

交集不為空:修改後的合格後端是用戶端區域中的所有運作狀態良好的主要後端

修改後的合格後端可能與原始合格後端相同,也可能是原始合格後端的子集。


交集為空:修改後的合格後端是用戶端區域中所有不正常的後端

修改後的適用後端與區域相符後端相同,也就是用戶端可用區中的所有主要後端;不過,由於與原始適用後端的交集為空,因此所有這些後端的運作狀態皆不良。

所有健康狀態良好的容錯移轉後端

所有已設定的容錯移轉後端

區域相符測試後端可能全數正常運作,也可能正常和異常運作的後端都有。

位於用戶端區域的所有容錯移轉後端

區域相符的後端可能全數正常運作、全數運作異常,或正常運作和運作異常的後端都有。

用戶端所在區域的所有運作正常的容錯移轉後端

交集不為空:修改後的合格後端是用戶端可用區中所有運作狀態良好的容錯移轉後端

修改後的合格後端可能與原始合格後端相同,也可能是原始合格後端的子集。


交集為空:修改後的合格後端是用戶端區域中所有健康狀態不良的容錯移轉後端

修改後的適用後端與區域相符後端相同,也就是用戶端可用區中的所有容錯移轉後端;不過,由於與原始適用後端的交集為空,因此所有這些後端的運作狀態皆不良。

所有健康狀態不良的主要後端

所有已設定的主要後端

如果原始符合資格的後端全都是運作狀態不良的主要後端,則區域相符測試後端一律會運作狀態不良。

用戶端所在區域中所有運作狀態不良的主要後端

用戶端所在區域中所有運作狀態不良的主要後端

交集一律不得為空:修改後的適用後端是用戶端可用區中所有不正常的主要後端

修改後的合格後端可能與原始合格後端相同,也可能是原始合格後端的子集。

ZONAL_AFFINITY_SPILL_CROSS_ZONE 和溢出比率的運作方式

如果區域相依性設為 ZONAL_AFFINITY_SPILL_CROSS_ZONE,且發生區域相符情形,負載平衡器會將新連線分配至修改後的合格後端。修改後的合格後端可能與原始合格後端相同,也可能是原始合格後端的子集。

如果修改後的合格後端與原始合格後端相同,新的連線可能會傳送至用戶端可用區中的合格後端,也可能會傳送至任何可用區中的合格後端 (「溢出」)。這項分配比例取決於可設定的溢位比率。

可設定的溢出比率代表門檻值,用於控管用戶端可用區中的流量。溢出比率的值可以介於 0.01.0 (含) 之間。如果您在設定 ZONAL_AFFINITY_SPILL_CROSS_ZONE 時未指定溢位比率, Google Cloud 會使用預設值 0.0

溢出比率為零

如果設定的溢出比率為 0.0,負載平衡器會使用下列程序建立修改後的合格後端

  1. 從區域相符條件識別的區域相符測試後端開始。

  2. 移除所有與用戶端不在同一可用區的後端。 這會產生一組區域相符的後端。 由於發生區域相符,這個集合一律不會是空白。

  3. 計算區域相符後端原始符合資格的後端的交集。這個交集可能不為空或為空。

    • 如果這個交集不是空白,則修改後的適用後端就是交集集合。修改後的合格後端可能與原始合格後端相同,也可能只是原始合格後端的子集。

    • 如果交集為空,則修改後的適用後端與原始適用後端相同。

下表摘要說明在區域親和性選項為 ZONAL_AFFINITY_SPILL_CROSS_ZONE 且設定的溢出比率為 0.0 時,建立一組修改後符合資格的後端的程序。

原先符合資格的後端 (A) 可用區相符測試後端 (B) 可用區相符的後端 (C) 交集 (A∩C) 已修改符合資格的後端
所有健康狀態良好的主要後端

所有已設定的主要後端

區域相符測試後端可能全數正常運作,也可能正常和異常運作的後端都有。

用戶端區域中的所有主要後端

區域相符的後端可能全數正常運作、全數運作異常,或正常運作和運作異常的後端都有。

用戶端所在區域中所有運作狀態良好的主要後端

交集不為空:修改後的合格後端是用戶端區域中的所有運作狀態良好的主要後端

新連線會分配到用戶端的區域內。 修改後的合格後端可能與原始合格後端相同,也可能是原始合格後端的子集。


交集為空:修改後的合格後端與原始合格後端相同

新連線可能會分配到用戶端所在可用區,或分配到其他可用區。

所有健康狀態良好的容錯移轉後端

所有已設定的容錯移轉後端

區域相符測試後端可能全數正常運作,也可能正常和異常運作的後端都有。

位於用戶端區域的所有容錯移轉後端

區域相符的後端可能全數正常運作、全數運作異常,或正常運作和運作異常的後端都有。

用戶端所在區域的所有運作正常的容錯移轉後端

交集不為空:修改後的合格後端是用戶端可用區中所有運作狀態良好的容錯移轉後端

新連線會分配到用戶端的區域內。 修改後的合格後端可能與原始合格後端相同,也可能是原始合格後端的子集。


交集為空:修改後的合格後端與原始合格後端相同

新連線可能會分配到用戶端所在可用區,或分配到其他可用區。

所有健康狀態不良的主要後端

所有已設定的主要後端

如果原始符合資格的後端全都是運作狀態不良的主要後端,則區域相符測試後端一律會運作狀態不良。

用戶端所在區域中所有運作狀態不良的主要後端

用戶端所在區域中所有運作狀態不良的主要後端

交集一律不得為空:修改後的適用後端是用戶端可用區中所有不正常的主要後端

新連線會分配到用戶端的區域。 修改後的合格後端可能與原始合格後端相同,也可能是原始合格後端的子集。

非零溢出比率

如果設定的溢出比率大於 0.0 但小於或等於 1.0,負載平衡器會使用下列程序建立修改後的合格後端:

  1. 區域相符測試後端開始,這些後端是由區域相符條件所識別。

  2. 移除所有與用戶端不在同一可用區的後端。 這會產生一組區域相符的後端。這個集合一律為非空白,因為發生了區域比對。

  3. 計算區域相符後端原始符合資格後端的交集。這個集合可能不為空或為空。

  4. 計算下列比率:

    $$ \frac{\text{count}(\text{zonal matched backends} \; \cap \; \text{original eligible backends})}{\text{count}(\text{zonal matched backends})} $$

    請注意,如果交集為空,計算出的比率一律為零。

  5. 使用計算出的比率,判斷修改後的合格後端

    • 如果計算出的比例大於或等於溢出比例,則修改後的合格後端即為交集集合。修改後的合格後端可能與原始合格後端相同,也可能是原始合格後端的子集。

    • 如果計算出的比例小於溢位比例,則修改後的合格後端與原始合格後端相同。

下表摘要說明在區域親和性選項為 ZONAL_AFFINITY_SPILL_CROSS_ZONE 選項,且設定的溢出比率不是 0.0 時,建立一組修改後符合資格的後端的程序:

原先符合資格的後端 (A) 可用區相符測試後端 (B) 可用區相符的後端 (C) 交集 (A∩C) 已修改符合資格的後端
所有健康狀態良好的主要後端

所有已設定的主要後端

區域相符測試後端可能全數正常運作,也可能正常和異常運作的後端都有。

用戶端區域中的所有主要後端

區域相符的後端可能全數正常運作、全數運作異常,或正常運作和運作異常的後端都有。

用戶端所在區域中所有運作狀態良好的主要後端

計算出的比率 ≥ 溢出比率:修改後的合格後端是用戶端可用區中所有健康狀態良好的主要後端

新連線會分配到用戶端的區域內。 修改後的合格後端可能與原始合格後端相同,也可能是原始合格後端的子集。


計算出的比率 < 溢出比率:修改後的合格後端與原始合格後端相同

新連線可能會分配到用戶端所在可用區,或分配到其他可用區。

所有健康狀態良好的容錯移轉後端

所有已設定的容錯移轉後端

區域相符測試後端可能全數正常運作,也可能正常和異常運作的後端都有。

位於用戶端區域的所有容錯移轉後端

區域相符的後端可能全數正常運作、全數運作異常,或正常運作和運作異常的後端都有。

用戶端所在區域的所有運作正常的容錯移轉後端

計算出的比率 ≥ 溢出比率:修改後的合格後端是用戶端可用區中所有健康狀態良好的容錯移轉後端

新連線會分配到用戶端的區域內。 修改後的合格後端可能與原始合格後端相同,也可能是原始合格後端的子集。


計算出的比率 < 溢出比率:修改後的合格後端與原始合格後端相同

新連線可能會分配到用戶端所在可用區,或分配到其他可用區。

所有健康狀態不良的主要後端

所有已設定的主要後端

如果原始符合資格的後端全都是運作狀態不良的主要後端,則區域相符測試後端一律會運作狀態不良。

用戶端所在區域中所有運作狀態不良的主要後端

用戶端所在區域中所有運作狀態不良的主要後端

計算出的比率一律 ≥ 溢出比率:修改後的合格後端是用戶端可用區中所有不正常的後端

新連線會分配到用戶端的區域。 修改後的合格後端可能與原始合格後端相同,也可能是原始合格後端的子集。

溢出比率範例

以下範例說明 ZONAL_AFFINITY_SPILL_CROSS_ZONE 的運作方式。

  • 溢出比率為 1.0 代表:

    • 如果區域相符後端與原始符合資格後端的交集區域相符後端是同一組,則修改後的符合資格後端就是交集。
    • 如果區域相符後端原始符合資格的後端的交集,與區域相符後端不是同一組,則修改後的符合資格後端與原始符合資格的後端相同。
  • 溢出比率為 0.8 代表:

    • 區域相符後端與原始符合資格後端的交集中,後端數量至少為區域相符後端數量的 80% 時,修改後的符合資格後端就是該交集。
    • 如果區域相符後端原始符合資格後端的交集後端數量,少於區域相符後端數量的 80%,則修改後的符合資格後端與原始符合資格後端相同。
  • 溢出比率為 0.0 代表:

    • 如果區域相符後端原始符合資格的後端交集不為空,則修改後的符合資格後端為交集。
    • 如果區域相符後端原始符合資格的後端的交集為空,則修改後的符合資格後端與原始符合資格的後端相同。

請參考下列設定,其中內部直通式網路負載平衡器已設定 ZONAL_AFFINITY_SPILL_CROSS_ZONE 可用區親和性選項,溢位比率為 0.8

  • 已設定的後端:十個主要後端 (可用區 1 和可用區 2 各五個)
  • 原始符合資格的後端:所有運作狀態良好的主要後端 (八個後端,可用區 1 中有五個,可用區 2 中有三個)
  • 區域比對測試後端:所有十個已設定的主要後端
內部直通式網路負載平衡器可用區親和性範例。
部分流量溢出至其他區域 (按一下可放大)。

情境 A:區域 1 中的相容用戶端

  • 可用區相符後端:可用區 1 中的五個後端。
  • 交集區域相符後端原始符合資格的後端的交集,是可用區 1 中的五個健康狀態良好的後端。
  • 計算比率:5 / 5 = 1.0
  • 結果:由於計算出的比例 1.0 ≥ 0.8,因此修改後的合格後端位於交集集中,也就是用戶端區域 1 中的所有五個健康主要後端。新連線只會分配到用戶端的區域。

情境 B:第 2 區的相容用戶端

  • 可用區相符後端:可用區 2 中的五個後端。
  • 交集區域相符後端和原始符合資格後端的交集,是可用區 2 中的三個運作狀態良好的後端。
  • 計算比率:3 / 5 = 0.6
  • 結果:由於計算出的比率 0.6 < 0.8,因此修改後的合格後端與原始合格後端相同。原始符合資格的後端是八個健康的後端 (可用區 1 有五個,可用區 2 有三個)。新連線會分配到可用區 1 或可用區 2。

後續步驟