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%.