多个负载均衡策略扩展(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。通过调整参数,可以实现爬升曲线的多项式或指数形状。

在慢启动窗口期间,端点的有效权重将随着时间因子和侵略性进行缩放:new_weight = weight * max(min_weight_percent, time_factor ^ (1 / aggression)),其中 time_factor=(time_since_start_seconds / slow_start_time_seconds)

随着时间的推移,越来越多的流量将发送到处于慢启动窗口的端点。一旦主机退出慢启动,time_factor 和 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 会导致探测到更多主机,因此如果您需要更好的性能,请使用更高的值。