區域加權負載平衡
一種決定如何在不同區域和地理位置之間加權分配的方法是使用透過 EDS 在 LocalityLbEndpoints 訊息中提供的明確權重。此方法與區域感知路由互斥,因為在區域感知負載平衡的情況下,我們依賴管理伺服器來提供區域加權,而不是區域感知路由中使用的 Envoy 端啟發式方法。
當所有端點都可用時,將使用加權循環調度來選擇區域,其中區域權重用於加權。當某個區域中的某些端點不可用時,我們會調整區域權重以反映這一點。與優先級別一樣,我們假設一個過度配置因子(預設值為 1.4),這表示當某個區域中只有少數端點不可用時,我們不會執行任何權重調整。
假設一個簡單的設定,其中有 2 個區域 X 和 Y,其中 X 的區域權重為 1,而 Y 的區域權重為 2,L=Y 的可用率為 100%,預設過度配置因子為 1.4。
L=X 健康端點 |
到 L=X 的流量百分比 |
到 L=Y 的流量百分比 |
---|---|---|
100% |
33% |
67% |
70% |
33% |
67% |
69% |
32% |
68% |
50% |
26% |
74% |
25% |
15% |
85% |
0% |
0% |
100% |
總結為虛擬演算法
availability(L_X) = 140 * available_X_upstreams / total_X_upstreams
effective_weight(L_X) = locality_weight_X * min(100, availability(L_X))
load to L_X = effective_weight(L_X) / Σ_c(effective_weight(L_c))
請注意,區域加權選擇是在選擇優先級別之後進行的。負載平衡器遵循以下步驟
選擇優先級別。
從 (1) 中選擇優先級別內的區域(如本節所述)。
使用 (2) 中的區域內叢集指定的負載平衡器來選擇端點。
透過在叢集配置中設定locality_weighted_lb_config,並透過load_balancing_weight提供權重,以及在 LocalityLbEndpoints 中透過 locality 識別上游主機的位置,來配置區域加權負載平衡。
此功能與負載平衡器子集不相容,因為要協調區域層級的加權與個別子集的合理權重並不簡單。