load_balancer.proto
Package: gloo.solo.io
Types:
Source File: github.com/solo-io/gloo/projects/gloo/api/v1/load_balancer.proto
LoadBalancerConfig
LoadBalancerConfig is the settings for the load balancer used to send requests to the Upstream endpoints.
"healthyPanicThreshold": .google.protobuf.DoubleValue
"updateMergeWindow": .google.protobuf.Duration
"roundRobin": .gloo.solo.io.LoadBalancerConfig.RoundRobin
"leastRequest": .gloo.solo.io.LoadBalancerConfig.LeastRequest
"random": .gloo.solo.io.LoadBalancerConfig.Random
"ringHash": .gloo.solo.io.LoadBalancerConfig.RingHash
"maglev": .gloo.solo.io.LoadBalancerConfig.Maglev
"localityWeightedLbConfig": .google.protobuf.Empty
"useHostnameForHashing": .google.protobuf.BoolValue
"closeConnectionsOnHostSetChange": bool
Field | Type | Description |
---|---|---|
healthyPanicThreshold |
.google.protobuf.DoubleValue | Configures envoy’s panic threshold Percent between 0-100. Once the number of non health hosts reaches this percentage, envoy disregards health information. see more info here. |
updateMergeWindow |
.google.protobuf.Duration | This allows batch updates of endpoints health/weight/metadata that happen during a time window. this help lower cpu usage when endpoint change rate is high. defaults to 1 second. Set to 0 to disable and have changes applied immediately. |
roundRobin |
.gloo.solo.io.LoadBalancerConfig.RoundRobin | Use round robin for load balancing. Round robin is the default load balancing method. Only one of roundRobin , leastRequest , random , ringHash , or maglev can be set. |
leastRequest |
.gloo.solo.io.LoadBalancerConfig.LeastRequest | Use least request for load balancing. Only one of leastRequest , roundRobin , random , ringHash , or maglev can be set. |
random |
.gloo.solo.io.LoadBalancerConfig.Random | Use random for load balancing. Only one of random , roundRobin , leastRequest , ringHash , or maglev can be set. |
ringHash |
.gloo.solo.io.LoadBalancerConfig.RingHash | Use ring hash for load balancing. Only one of ringHash , roundRobin , leastRequest , random , or maglev can be set. |
maglev |
.gloo.solo.io.LoadBalancerConfig.Maglev | Use maglev for load balancing. Only one of maglev , roundRobin , leastRequest , random , or ringHash can be set. |
localityWeightedLbConfig |
.google.protobuf.Empty | (Enterprise Only) https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/locality_weight#locality-weighted-load-balancing Locality weighted load balancing enables weighting assignments across different zones and geographical locations by using explicit weights. This field is required to enable locality weighted load balancing. |
useHostnameForHashing |
.google.protobuf.BoolValue | Default: false, If set to true, the hostname will be used for hashing when using maglev for example, useful when using multiple host in the upstreams that resolve to the same IP. |
closeConnectionsOnHostSetChange |
bool |
If set to true, the load balancer will drain connections when the host set changes. Ring Hash or Maglev can be used to ensure that clients with the same key are routed to the same upstream host. Distruptions can cause new connections with the same key as existing connections to be routed to different hosts. Enabling this feature will cause the load balancer to drain existing connections when the host set changes, ensuring that new connections with the same key are consistently routed to the same host. Connections are not immediately closed, but are allowed to drain. |
RoundRobin
"slowStartConfig": .gloo.solo.io.LoadBalancerConfig.SlowStartConfig
Field | Type | Description |
---|---|---|
slowStartConfig |
.gloo.solo.io.LoadBalancerConfig.SlowStartConfig | Configuration for slow start mode. If this configuration is not set, slow start will not be not enabled. |
LeastRequest
"choiceCount": int
"slowStartConfig": .gloo.solo.io.LoadBalancerConfig.SlowStartConfig
Field | Type | Description |
---|---|---|
choiceCount |
int |
How many choices to take into account. defaults to 2. |
slowStartConfig |
.gloo.solo.io.LoadBalancerConfig.SlowStartConfig | Configuration for slow start mode. If this configuration is not set, slow start will not be not enabled. |
Random
Field | Type | Description |
---|
RingHashConfig
Customizes the parameters used in the hashing algorithm to refine performance or resource usage.
"minimumRingSize": int
"maximumRingSize": int
Field | Type | Description |
---|---|---|
minimumRingSize |
int |
Minimum hash ring size. The larger the ring is (that is, the more hashes there are for each provided host) the better the request distribution will reflect the desired weights. Defaults to 1024 entries, and limited to 8M entries. |
maximumRingSize |
int |
Maximum hash ring size. Defaults to 8M entries, and limited to 8M entries, but can be lowered to further constrain resource use. |
RingHash
"ringHashConfig": .gloo.solo.io.LoadBalancerConfig.RingHashConfig
Field | Type | Description |
---|---|---|
ringHashConfig |
.gloo.solo.io.LoadBalancerConfig.RingHashConfig | Optional, customizes the parameters used in the hashing algorithm. |
Maglev
Field | Type | Description |
---|
SlowStartConfig
"slowStartWindow": .google.protobuf.Duration
"aggression": .google.protobuf.DoubleValue
"minWeightPercent": .google.protobuf.DoubleValue
Field | Type | Description |
---|---|---|
slowStartWindow |
.google.protobuf.Duration | Represents the size of slow start window. If set, the newly created host remains in slow start mode starting from its creation time for the duration of slow start window. |
aggression |
.google.protobuf.DoubleValue | This parameter controls the speed of traffic increase over the slow start window. Defaults to 1.0, so that endpoint would get linearly increasing amount of traffic. When increasing the value for this parameter, the speed of traffic ramp-up increases non-linearly. The value of aggression parameter should be greater than 0.0. By tuning the parameter, is possible to achieve polynomial or exponential shape of ramp-up curve. During slow start window, effective weight of an endpoint would be scaled with time factor and aggression: new_weight = weight * max(min_weight_percent, time_factor ^ (1 / aggression)) , where time_factor=(time_since_start_seconds / slow_start_time_seconds) . As time progresses, more and more traffic would be sent to endpoint, which is in slow start window. Once host exits slow start, time_factor and aggression no longer affect its weight. |
minWeightPercent |
.google.protobuf.DoubleValue | Configures the minimum percentage of origin weight that avoids too small new weight, which may cause endpoints in slow start mode receive no traffic in slow start window. If not specified, the default is 10%. |