Least Request Load Balancing Policy (proto)
This extension has the qualified name envoy.load_balancing_policies.least_request
Note
This extension has an unknown security posture and should only be used in deployments where both the downstream and upstream are trusted.
Tip
This extension extends and can be used with the following extension category:
This extension must be configured with one of the following type URLs:
extensions.load_balancing_policies.least_request.v3.LeastRequest
[extensions.load_balancing_policies.least_request.v3.LeastRequest proto]
This configuration allows the built-in LEAST_REQUEST LB policy to be configured via the LB policy extension point. See the load balancing architecture overview for more information.
{
"choice_count": {...},
"active_request_bias": {...},
"slow_start_config": {...},
"locality_lb_config": {...},
"selection_method": ...
}
- choice_count
(UInt32Value) The number of random healthy hosts from which the host with the fewest active requests will be chosen. Defaults to 2 so that we perform two-choice selection if the field is not set. Only applies to the
N_CHOICES
selection method.
- active_request_bias
(config.core.v3.RuntimeDouble) The following formula is used to calculate the dynamic weights when hosts have different load balancing weights:
weight = load_balancing_weight / (active_requests + 1)^active_request_bias
The larger the active request bias is, the more aggressively active requests will lower the effective weight when all host weights are not equal.
active_request_bias
must be greater than or equal to 0.0.When
active_request_bias == 0.0
the Least Request Load Balancer doesn’t consider the number of active requests at the time it picks a host and behaves like the Round Robin Load Balancer.When
active_request_bias > 0.0
the Least Request Load Balancer scales the load balancing weight by the number of active requests at the time it does a pick.The value is cached for performance reasons and refreshed whenever one of the Load Balancer’s host sets changes, e.g., whenever there is a host membership update or a host load balancing weight change.
Note
This setting only takes effect if all host weights are not equal.
- slow_start_config
(extensions.load_balancing_policies.common.v3.SlowStartConfig) Configuration for slow start mode. If this configuration is not set, slow start will not be not enabled.
- locality_lb_config
(extensions.load_balancing_policies.common.v3.LocalityLbConfig) Configuration for local zone aware load balancing or locality weighted load balancing.
- selection_method
(extensions.load_balancing_policies.least_request.v3.LeastRequest.SelectionMethod) Method for selecting the host set from which to return the host with the fewest active requests.
Defaults to
N_CHOICES
.
Enum extensions.load_balancing_policies.least_request.v3.LeastRequest.SelectionMethod
[extensions.load_balancing_policies.least_request.v3.LeastRequest.SelectionMethod proto]
Available methods for selecting the host set from which to return the host with the fewest active requests.
- N_CHOICES
(DEFAULT) Return host with fewest requests from a set of
choice_count
randomly selected hosts. Best selection method for most scenarios.
- FULL_SCAN
Return host with fewest requests from all hosts. Useful in some niche use cases involving low request rates and one of: (example 1) low request limits on workloads, or (example 2) few hosts.
Example 1: Consider a workload type that can only accept one connection at a time. If such workloads are deployed across many hosts, only a small percentage of those workloads have zero connections at any given time, and the rate of new connections is low, the
FULL_SCAN
method is more likely to select a suitable host thanN_CHOICES
.Example 2: Consider a workload type that is only deployed on 2 hosts. With default settings, the
N_CHOICES
method will return the host with more active requests 25% of the time. If the request rate is sufficiently low, the behavior of always selecting the host with least requests as of the last metrics refresh may be preferable.