在負載平衡器的後端服務上設定區域親和性,即可限制跨區域流量、縮短延遲時間及提升效能,同時維持多區域架構的優點。
內部直通式網路負載平衡器支援三種區域相依性選項,可為將新連線路由至與支援的用戶端位於相同區域的合格後端,提供不同程度的偏好設定。區域親和性會在負載平衡器為新連線選取合適的後端後,修改合適的後端集。負載平衡器連線追蹤表中的已建立連線不會受到區域相依性影響。
相容性
可用區親和性適用於下列內部直通式網路負載平衡器:
區域親和性與下列內部直通式網路負載平衡器不相容:
- 啟用後端子集設定
- 是否為封包鏡像的收集器目標位置
- 用於提供 Private Service Connect 發布的服務。只有將封包傳送至負載平衡器的相容用戶端,才能使用區域親和性,如果 Private Service Connect 端點的已發布服務供應商使用內部直通式網路負載平衡器,則無法使用區域親和性。
相容的用戶端
只有與負載平衡器位於相同地區的 VM 用戶端,才能使用區域親和性。區域親和性與下列用戶端不相容,這些用戶端一律會以區域親和性已停用的狀態運作:
用戶端 Cloud VPN 通道和用戶端 Cloud Interconnect VLAN 連結:Cloud VPN 通道和 Cloud Interconnect VLAN 連結是區域性資源,而非可用區資源。無論封包是否與負載平衡器位於相同區域,透過 Cloud VPN 通道或 VLAN 連結路由傳送的封包一律不支援區域親和性。
位於與負載平衡器區域不符的區域中的用戶端 VM:如果啟用全域存取權,位於一個區域的內部直通式網路負載平衡器,可供所有其他區域的用戶端存取。如果用戶端 VM 所在的區域與負載平衡器所在的區域不同,用戶端 VM 絕不會與任何負載平衡器後端共用可用區。
區域比對
區域相符條件說明觸發區域親和性的條件。負載平衡器可能會修改原始的適用後端集,以提供設定的區域相依性。原始的合格後端集會在「後端選擇和連線追蹤」程序中的「找出合格後端」之後修改。
如要觸發區域相依性邏輯,必須發生下列一連串事件:
必須啟用可用區相依性
如果啟用區域親和性,您需要判斷用戶端是否為相容的用戶端。
判斷用戶端是否為相容用戶端
如果用戶端相容,請判斷是否可進行區域比對。
判斷是否會發生區域比對
區域相符表示用戶端 VM 所在的區域至少包含一個相關類型的已設定後端。如要瞭解可設定的不同後端,請參閱「區域相符條件」一節。
如果符合下列任一條件,就「絕不會」出現區域相符項目:
- 可用區相依性已停用
- 用戶端不相容
套用區域親和性邏輯
如果發生區域比對,請根據設定的區域相依性選項套用區域相依性邏輯。啟用區域親和性的選項如下:
ZONAL_AFFINITY_STAY_WITHIN_ZONE
ZONAL_AFFINITY_SPILL_CROSS_ZONE
,溢出比率為0
ZONAL_AFFINITY_SPILL_CROSS_ZONE
,溢出比率不為零
發生區域相符後,視設定的區域親和性選項類型而定,原始的合格後端組合可能會經過調整、替換或保持不變。來自用戶端的所有新連線都會轉送至這組修改後的合格後端。
區域比對條件
下表說明負載平衡器是否可將流量限制在用戶端區域。如果第三欄中的條件未達成,系統會忽略區域親和性,並將新連線轉送至任何符合資格的後端。
容錯移轉設定 | 符合資格的後端1 | 區域比對條件 |
---|---|---|
沒有容錯移轉政策 | 所有運作狀態良好的後端或所有後端 | 用戶端 VM 所在的區域至少有一個已設定的後端。設定的後端可能符合或不符合資格。 |
已設定容錯移轉政策 | 所有運作狀態良好的主要後端,或所有主要後端2 | 用戶端 VM 所在的區域至少有一個已設定的主要後端。設定的主要後端可能符合或不符合資格。 |
已設定容錯移轉政策 | 所有運作正常的容錯移轉後端3 | 用戶端 VM 所在的區域至少有一個已設定的容錯移轉後端。設定的容錯移轉後端可能符合或不符合資格。 |
2 負載平衡器處於容錯回復模式。
3 負載平衡器處於容錯移轉模式。
區域比對範例
請參考以下情況,判斷是否有區域比對:
- 已設定容錯移轉政策
- 已啟用可用區相依性
- 用戶端位於區域 A
- 主要後端僅位於區域 B 和區域 C
- 區域 A 中沒有主要後端
現在即使啟用區域親和性,且有相容的用戶端,也不會發生區域相符情形,因為區域 A (用戶端 VM 的區域) 中沒有主要後端。因此系統會忽略區域親和性。
可用區相依性選項
內部直通式網路負載平衡器支援下列區域相依性選項:
ZONAL_AFFINITY_DISABLED
(預設):停用可用區相依性。負載平衡器會為新連線選取符合資格的後端,而不修改符合資格的後端集合。ZONAL_AFFINITY_STAY_WITHIN_ZONE
:已啟用可用區相依性。如果發生區域相符情形,負載平衡器會修正原始的適用後端集,或取代原始的適用後端集,改用新的後端集,將流量保留在用戶端的區域中。如要進一步瞭解這個選項,請參閱ZONAL_AFFINITY_STAY_WITHIN_ZONE
的運作方式。ZONAL_AFFINITY_SPILL_CROSS_ZONE
:已啟用可用區相依性。發生區域相符時,負載平衡器可能會縮減符合資格的後端集區,也可能維持不變。如果用戶端可用區的健康狀態良好的後端不足,流量可以溢流至其他可用區。溢出是由溢出比例控制。如要進一步瞭解這個選項,請參閱「如何」ZONAL_AFFINITY_SPILL_CROSS_ZONE
和溢位比率 運作方式。
如要瞭解如何在內部直通式網路負載平衡器的後端服務上設定區域親和性,請參閱「使用區域親和性」。
ZONAL_AFFINITY_STAY_WITHIN_ZONE
的運作方式
如果區域親和性設為 ZONAL_AFFINITY_STAY_WITHIN_ZONE
,且發生區域相符情形,負載平衡器會執行下列其中一項操作,將流量保留在用戶端區域:
調整原始的合格後端組合
如果至少有一個符合資格的後端位於用戶端所在區域,負載平衡器會執行下列動作,縮小符合資格的後端集合:
- 捨棄不在用戶端可用區中的所有符合資格後端
- 僅使用用戶端所在區域中符合資格的後端
精選的合格後端集合是原始合格後端集合的子集。
取代原始的合格後端組合
如果用戶端區域中沒有符合資格的後端,但用戶端區域中存在其他已設定的後端 (不在符合資格的後端集中),這是因為發生區域相符情形,觸發了區域親和性。在這種情況下,負載平衡器會取代一組符合資格的後端,並根據是否已設定容錯移轉政策,以及容錯移轉狀態 (如有),改為使用一組新的後端,其中包含用戶端區域內的異常後端。
這組新的替代合格後端包含下列其中一項:
如果未設定容錯移轉政策,符合資格的替代後端組合會包含用戶端區域中的所有不健全後端。
如果已設定容錯移轉政策,且原始符合資格的後端是主要後端,則替代的符合資格後端組合會包含用戶端區域中所有不正常的主要後端。
如果已設定容錯移轉政策,且原始符合資格的後端是容錯移轉後端,則替代的合格後端組合會包含用戶端區域中所有不正常的容錯移轉後端。
下表摘要列出 ZONAL_AFFINITY_STAY_WITHIN_ZONE
選項的所有修正和取代情境:
符合資格的原始後端組合 | 如果至少有一個符合資格的後端 (來自原始符合資格的後端集) 位於用戶端區域: | 如果用戶端所在區域沒有符合資格的後端 (來自原始符合資格的後端組合): |
---|---|---|
未設定容錯移轉政策 | ||
所有健康狀態良好的後端 | 縮減原始的合格後端組合,方法是捨棄不在用戶端可用區中的所有合格後端。 | 取代原始的合格後端集。新的合格後端集包含用戶端區域中的所有運作狀態不良後端。 |
所有後端 | 縮減原始的合格後端組合,方法是捨棄不在用戶端可用區中的所有合格後端。 | 這種情況不可能發生。1 |
已設定容錯移轉政策 | ||
所有健康狀態良好的主要後端 | 縮減原始的合格後端組合,方法是捨棄不在用戶端可用區中的所有合格後端。 | 取代原始的合格後端集。新的適用後端組合包含用戶端區域中所有健康狀態不良的主要後端。 |
所有健康狀態良好的容錯移轉後端 | 縮減原始的合格後端集,方法是捨棄不在用戶端可用區中的所有合格後端。 | 取代原始的合格後端集。新的合格後端集包含用戶端區域中所有運作狀態不良的容錯移轉後端。 |
所有主要後端 | 調整原始的合格後端組合,捨棄不在用戶端可用區中的所有合格後端。 | 這種情況不可能發生。2 |
1 區域相依性需要區域相符。如果未設定容錯移轉政策,區域相符條件至少需要一個與用戶端位於相同區域的已設定後端。如果所有符合資格的後端都已設定,則與用戶端位於相同區域的後端中,至少會有一個符合資格。
2可用區相依性必須符合可用區。設定容錯移轉政策後,如果符合資格的後端是主要後端,區域相符條件就要求至少有一個已設定的主要後端,與用戶端位於相同區域。如果所有符合資格的後端都是主要後端,則與用戶端位於相同區域的後端一律至少有一個符合資格。
請注意,ZONAL_AFFINITY_STAY_WITHIN_ZONE
選項有以下限制:
- 這個可用區親和性選項絕不會變更原始的合格後端集。
- 即使使用狀況不佳的後端,這個區域親和性選項也會優先使用用戶端區域中的後端 (假設符合區域相符條件)。
ZONAL_AFFINITY_SPILL_CROSS_ZONE
和溢出比率的運作方式
如果區域相依性設為 ZONAL_AFFINITY_SPILL_CROSS_ZONE
,且發生區域相符情形,系統可能會調整用戶端適用的後端集,也可能不會調整。
如果原始的合格後端集保持不變,新的連線可能會傳送至用戶端可用區中的合格後端,也可能會溢出至其他可用區中的合格後端。這項分配作業取決於可設定的溢出比率,該比率會決定流量何時開始溢出至其他區域的合格後端。
可設定的溢出比率代表將流量保留在用戶端區域的門檻值。如果健康狀態良好且符合資格的後端比例低於定義的溢出比例,系統就會將該區域中所有用戶端的新連線,分配給其他區域中符合資格的後端。溢出比例的值可介於 0.0
至 1.0
之間,含首尾值。
設定 ZONAL_AFFINITY_SPILL_CROSS_ZONE
區域親和性時,如未指定溢出比例,Google Cloud 會使用預設值 0.0
。
溢出比率為零
如果設定的溢位比率為 0.0
,負載平衡器會捨棄「不在」用戶端區域中的所有適用後端,藉此縮減適用後端集,但前提是必須符合下列任一條件:
- 如果未設定容錯移轉政策,則符合資格的後端必須是健康狀態良好的後端,且至少有一個符合資格的後端位於用戶端區域
- 如果已設定容錯移轉政策,則符合資格的後端必須是所有運作正常的後端,且至少有一個符合資格的後端位於用戶端區域
- 如果已設定容錯移轉政策,則符合資格的後端必須是所有健康狀態的容錯移轉後端,且至少有一個符合資格的後端位於用戶端區域
如果用戶端所在區域沒有符合資格的後端:
- 負載平衡器會保留原始的合格後端集
- 允許新連線溢出至其他可用區的合格後端
下表摘要列出設定溢位比例為 0.0
時,ZONAL_AFFINITY_SPILL_CROSS_ZONE
選項的所有精細化情境:
符合資格的原始後端組合 | 如果至少有一個符合資格的後端 (來自原始符合資格的後端集) 位於用戶端區域: | 如果用戶端所在區域沒有符合資格的後端 (來自原始符合資格的後端組合): |
---|---|---|
未設定容錯移轉政策 | ||
所有健康狀態良好的後端 | 縮減原始的合格後端集,方法是捨棄不在用戶端可用區中的所有合格後端。 | 沒有變更,請使用原先符合資格的後端組合。在這種情況下,新的連線會溢出至其他區域中符合資格的後端。 |
所有後端 | 沒有變更,請使用原先符合資格的後端組合。在這種情況下,系統可能會將新連線傳送至用戶端區域中符合資格的後端,也可能會溢出至其他區域中符合資格的後端。 | 這種情況不可能發生。1 |
已設定容錯移轉政策 | ||
所有健康狀態良好的主要後端 | 縮減原始的合格後端組合,捨棄不在用戶端可用區的所有合格後端。 | 沒有變更,請使用原先符合資格的後端組合。在這種情況下,新的連線會溢出至其他區域中符合資格的後端。 |
所有健康狀態良好的容錯移轉後端 | 調整原始的合格後端組合,捨棄不在用戶端可用區的所有合格後端。 | 沒有變更,請使用原先符合資格的後端組合。在這種情況下,新的連線會溢出至其他區域中符合資格的後端。 |
所有主要後端 | 沒有變更,請使用原先符合資格的後端組合。在這種情況下,系統可能會將新連線傳送至用戶端區域中符合資格的後端,也可能會溢出至其他區域中符合資格的後端。 | 這種情況不可能發生。2 |
1 區域相依性需要區域相符。如果未設定容錯移轉政策,區域相符條件至少需要一個與用戶端位於相同區域的已設定後端。如果所有符合資格的後端都已設定,則與用戶端位於相同區域的後端中,至少會有一個符合資格。
2可用區相依性必須符合可用區。設定容錯移轉政策後,如果符合資格的後端是主要後端,區域相符條件就要求至少有一個已設定的主要後端,與用戶端位於相同區域。如果所有符合資格的後端都是主要後端,則與用戶端位於相同區域的後端一律至少有一個符合資格。
非零溢出比率
如果設定的溢出比例大於 0.0
但小於或等於 1.0
,負載平衡器會先計算下列其中一個比例:
如果未設定容錯移轉政策,計算出的比率就是用戶端區域中符合資格且運作正常的後端數量,除以用戶端區域中已設定的後端數量。
$$ \frac{\text{count}(\text{Eligible and healthy backends})_{\text{Client's zone}}}{\text{count}(\text{Configured backends})_{\text{Client's zone}}} $$如果已設定容錯移轉政策,且所有符合資格的後端都是主要後端,則計算出的比率為用戶端區域中符合資格且健康狀態良好的後端數量,除以用戶端區域中已設定的主要後端數量。
$$ \frac{\text{count}(\text{Eligible and healthy primary backends})_{\text{Client's zone}}}{\text{count}(\text{Configured primary backends})_{\text{Client's zone}}} $$如果已設定容錯移轉政策,且所有符合資格的後端都是容錯移轉後端,則計算出的比率為用戶端區域中符合資格且健康狀態良好的後端數量,除以用戶端區域中已設定的容錯移轉後端數量。
$$ \frac{\text{count}(\text{Eligible and healthy failover backends})_{\text{Client's zone}}}{\text{count}(\text{Configured failover backends})_{\text{Client's zone}}} $$
接著,負載平衡器會將計算出的比率與溢出比率進行比較。如果計算出的比例大於或等於溢出比例,負載平衡器會捨棄不在用戶端區域中的所有符合資格後端,藉此縮減符合資格的後端集合。否則,負載平衡器會使用原始的適用後端。
計算比率時,請注意下列事項:
符合資格的後端可能包括所有健康狀態良好的後端、所有後端、所有健康狀態良好的主要後端、所有健康狀態良好的容錯移轉後端,或所有主要後端。
除非符合資格的後端包含所有後端或所有主要後端,否則已設定的後端、已設定的主要後端或已設定的容錯移轉後端,會包含不只符合資格的後端。
溢出比率為
1.0
表示下列其中一項屬實:如果未設定容錯移轉政策,一組符合資格的後端必須全都是健全的後端,且用戶端區域中符合資格的後端數量,必須等於用戶端區域中設定的後端數量。
如果已設定容錯移轉政策,且所有符合資格的後端都是主要後端,則符合資格的後端組合必須包含所有運作正常的後端,且用戶端區域中符合資格的後端數量,必須等於用戶端區域中設定的主要後端數量。
如果已設定容錯移轉政策,且所有符合資格的後端都是容錯移轉後端,則符合資格的後端組合必須包含所有健康狀態良好的容錯移轉後端,且用戶端區域中符合資格的後端數量,必須等於用戶端區域中設定的容錯移轉後端數量。
下表摘要列出所有精細化情境,適用於設定的溢位比率不是 0.0
時的 ZONAL_AFFINITY_SPILL_CROSS_ZONE
選項:
符合資格的原始後端組合 | 計算得出的比率 >= 溢出比率 | 計算得出的比率 < 溢出比率 |
---|---|---|
未設定容錯移轉政策 | ||
所有健康狀態良好的後端 | 縮減原始的合格後端組合,方法是捨棄不在用戶端可用區中的所有合格後端。 | 沒有變更,請使用原先符合資格的後端組合。在這種情況下,系統可能會將新連線傳送至用戶端區域中符合資格的後端,也可能會溢出至其他區域中符合資格的後端。 |
所有後端 | 沒有變更,請使用原先符合資格的後端組合。在這種情況下,系統可能會將新連線傳送至用戶端區域中符合資格的後端,也可能會溢出至其他區域中符合資格的後端。 | 沒有變更,請使用原先符合資格的後端組合。在這種情況下,系統可能會將新連線傳送至用戶端區域中符合資格的後端,也可能會溢出至其他區域中符合資格的後端。 |
已設定容錯移轉政策 | ||
所有健康狀態良好的主要後端 | 縮減原始的合格後端組合,方法是捨棄不在用戶端可用區中的所有合格後端。 | 沒有變更,請使用原先符合資格的後端組合。在這種情況下,系統可能會將新連線傳送至用戶端區域中符合資格的後端,也可能會溢出至其他區域中符合資格的後端。 |
所有健康狀態良好的容錯移轉後端 | 縮減原始的合格後端組合,方法是捨棄不在用戶端可用區中的所有合格後端。 | 沒有變更,請使用原先符合資格的後端組合。在這種情況下,系統可能會將新連線傳送至用戶端區域中符合資格的後端,也可能會溢出至其他區域中符合資格的後端。 |
所有主要後端 | 沒有變更,請使用原先符合資格的後端組合。在這種情況下,系統可能會將新連線傳送至用戶端區域中符合資格的後端,也可能會溢出至其他區域中符合資格的後端。 | 沒有變更,請使用原先符合資格的後端組合。在這種情況下,系統可能會將新連線傳送至用戶端區域中符合資格的後端,也可能會溢出至其他區域中符合資格的後端。 |
溢出比率範例
以下範例說明未設定容錯移轉政策時,ZONAL_AFFINITY_SPILL_CROSS_ZONE
的運作方式。
如要設定
1.0
的溢位比例時套用區域親和性,必須符合下列條件:- 符合資格的後端必須全數運作正常。
- 用戶端區域中符合資格的正常後端數量,必須等於用戶端區域中設定的後端數量。
溢出比率為
1.0
表示用戶端區域中所有符合資格的後端都必須正常運作,所有新連線才能只分配給用戶端區域中的後端。即使某個後端不健康,負載平衡器也會將部分新連線分配給其他可用區的後端。如要設定
0.8
的溢位比例時套用區域親和性,必須符合下列條件:- 符合資格的後端必須全數運作正常。
- 用戶端區域中符合資格的正常後端數量除以用戶端區域中設定的後端數量,必須至少為
0.8
。
溢出比率為
0.8
表示,用戶端區域中至少要有 80% 的合格後端運作正常,所有新連線才能只分配給用戶端區域中的後端。如果用戶端區域中健康狀態良好的後端不到 80%,負載平衡器會將部分新連線分配給其他區域的後端。如要設定
0.0
的溢位比例時套用區域親和性,必須符合下列條件:- 符合資格的後端必須全數運作正常。
- 用戶端區域中至少要有一個符合資格的正常後端。
溢位比率為
0.0
表示只要用戶端區域中至少有一個狀況良好的後端,所有新連線都會分配至用戶端區域中的後端。如果溢位比率為0.0
,且用戶端可用區中沒有健康的後端,負載平衡器會將所有新連線分配至用戶端可用區以外的健康後端。
下圖顯示 0.8
的溢位比率:
區域 1 和 2 各有五個已設定的後端。
原始的合格後端集包含十個已設定後端中的八個:
可用區 1 中設定的五個後端健康狀態良好。
區域 2 中設定的三個後端運作狀態良好。
如為第 1 區的相容用戶端:
由於區域 1 中至少有一個已設定的後端,因此發生區域相符情形。
可用區 1 中符合資格的健康後端與可用區 1 中所有已設定後端的比率為
5/5
=1.0
。對於區域 1 中的相容用戶端:由於計算出的
1.0
比率大於0.8
的溢出比率,負載平衡器會捨棄區域 1 以外的所有合格後端,藉此縮減合格後端集。因此,來自第 1 區相容用戶端的新連線,只會分配到第 1 區五個健康狀態良好的後端。
如為第 2 區的相容用戶端:
由於區域 2 中至少有一個已設定的後端,因此發生區域相符情形。
可用區 2 中符合資格的健康後端與可用區 2 中所有已設定後端的比率為
3/5
=0.6
。適用於第 2 區的相容用戶端:由於計算出的
0.6
比率不等於或大於0.8
的溢出比率,因此負載平衡器不會變更符合資格的後端組合。因此,區域 2 中相容用戶端的新連線會分配到原本的八個健康狀態良好且符合資格的後端 (區域 1 中有五個,區域 2 中有三個)。
後續步驟
- 如要為內部直通式網路負載平衡器設定 Cloud Monitoring,請參閱「內部直通式網路負載平衡器記錄和監控」。
- 如要排解內部直通式網路負載平衡器的問題,請參閱「排解內部直通式網路負載平衡器的問題」。