用於兩個或多個負載平衡策略擴充的通用配置 (proto)

extensions.load_balancing_policies.common.v3.LocalityLbConfig

[extensions.load_balancing_policies.common.v3.LocalityLbConfig proto]

{
  "zone_aware_lb_config": {...},
  "locality_weighted_lb_config": {...}
}
zone_aware_lb_config

(extensions.load_balancing_policies.common.v3.LocalityLbConfig.ZoneAwareLbConfig) 用於本機區域感知負載平衡的組態。

必須設定 zone_aware_lb_configlocality_weighted_lb_config 其中一個。

locality_weighted_lb_config

(extensions.load_balancing_policies.common.v3.LocalityLbConfig.LocalityWeightedLbConfig) 啟用本機加權負載平衡。

必須設定 zone_aware_lb_configlocality_weighted_lb_config 其中一個。

extensions.load_balancing_policies.common.v3.LocalityLbConfig.ZoneAwareLbConfig

[extensions.load_balancing_policies.common.v3.LocalityLbConfig.ZoneAwareLbConfig proto]

用於區域感知路由的組態。

{
  "routing_enabled": {...},
  "min_cluster_size": {...},
  "fail_traffic_on_panic": ...
}
routing_enabled

(type.v3.Percent) 如果已設定區域感知路由,則設定將會被考量用於區域感知路由的請求百分比。如果未指定,則預設值為 100%。 * 執行時間值。 * 區域感知路由支援

min_cluster_size

(UInt64Value) 設定執行區域感知路由所需的最小上游叢集大小。如果上游叢集大小小於指定值,即使已設定區域感知路由,也不會執行區域感知路由。如果未指定,則預設值為 6。 * 執行時間值。 * 區域感知路由支援

fail_traffic_on_panic

(bool) 如果設定為 true,當叢集處於恐慌模式時,Envoy 將不會考慮任何主機。相反地,叢集會讓所有請求失敗,如同所有主機都不健康。這有助於避免潛在地壓垮失敗的服務。

extensions.load_balancing_policies.common.v3.LocalityLbConfig.LocalityWeightedLbConfig

[extensions.load_balancing_policies.common.v3.LocalityLbConfig.LocalityWeightedLbConfig proto]

用於本機加權負載平衡的組態

extensions.load_balancing_policies.common.v3.SlowStartConfig

[extensions.load_balancing_policies.common.v3.SlowStartConfig proto]

用於慢速啟動模式的組態。

{
  "slow_start_window": {...},
  "aggression": {...},
  "min_weight_percent": {...}
}
slow_start_window

(Duration) 表示慢速啟動視窗的大小。如果設定,則新建立的主機會從建立時間開始,在慢速啟動視窗的持續時間內保持在慢速啟動模式。

aggression

(config.core.v3.RuntimeDouble) 此參數控制慢速啟動視窗中流量增加的速度。預設值為 1.0,因此端點將會獲得線性增加的流量。當增加此參數的值時,流量增加的速度會非線性增加。aggression 參數的值應大於 0.0。透過調整此參數,可以實現斜升曲線的多項式或指數形狀。

在慢速啟動視窗期間,端點的有效權重將會以時間因數和 aggression 來縮放:new_weight = weight * max(min_weight_percent, time_factor ^ (1 / aggression)),其中 time_factor=(time_since_start_seconds / slow_start_time_seconds)

隨著時間進展,會有越來越多的流量被傳送到處於慢速啟動視窗的端點。一旦主機退出慢速啟動,時間因數和 aggression 將不再影響其權重。

min_weight_percent

(type.v3.Percent) 設定最小權重百分比以避免過小的新權重,這可能會導致處於慢速啟動模式的端點在慢速啟動視窗中接收不到流量。如果未指定,則預設值為 10%。

extensions.load_balancing_policies.common.v3.ConsistentHashingLbConfig

[extensions.load_balancing_policies.common.v3.ConsistentHashingLbConfig proto]

所有一致性雜湊負載平衡器 (MaglevLb、RingHashLb 等) 的通用配置

{
  "use_hostname_for_hashing": ...,
  "hash_balance_factor": {...}
}
use_hostname_for_hashing

(bool) 如果設定為 true,叢集將使用主機名稱而非解析的位址作為一致雜湊到上游主機的金鑰。僅適用於具有解析為單一 IP 位址的主機名稱的 StrictDNS 叢集。

hash_balance_factor

(UInt32Value) 設定每個上游主機的平均叢集負載百分比上限。例如,值為 150 時,任何上游主機的負載都不會超過叢集中所有主機平均負載的 1.5 倍。如果未指定,則任何上游主機的負載都不會受限。此參數的典型值介於 120 到 200 之間。最小值為 100。

適用於環形雜湊和 Maglev 負載平衡器。

這是基於論文 https://arxiv.org/abs/1608.01350 中描述的方法實作。對於指定的 hash_balance_factor,傳送至任何上游主機的請求上限為叢集中平均請求數的 hash_balance_factor/100 倍。當請求傳送到目前已達最大容量的上游主機時,會使用線性探測來識別合格的主機。此外,線性探測是使用主機環/表中隨機跳躍來實作,以識別合格的主機 (此技術如論文 https://arxiv.org/abs/1908.08762 中所述,隨機跳躍可以避免在環/表中選擇下一個主機時產生級聯溢出效應)。

如果在主機上指定權重,則會受到尊重。

這是一個 O(N) 演算法,不像其他負載平衡器。使用較低的 hash_balance_factor 會導致探測更多的主機,因此如果您需要更好的效能,請使用較高的值。