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

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

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

事前準備

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

支援

不支援

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

相容的用戶端

只有與負載平衡器位於相同地區的 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) 已修改符合資格的後端
所有健康狀態良好的主要後端

所有已設定的主要後端

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

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

區域相符的後端可能全數運作正常,也可能部分運作正常,部分運作異常。

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

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

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


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

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

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

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

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

用戶端可用區中的所有容錯移轉後端

區域相符的後端可能全數運作正常,也可能部分運作正常,部分運作異常。

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

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

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


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

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

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

所有已設定的主要後端

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

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

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

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

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

後續步驟