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

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.

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