.. _envoy_v3_api_file_envoy/extensions/load_balancing_policies/least_request/v3/least_request.proto: Least Request Load Balancing Policy (proto) =========================================== .. _extension_envoy.load_balancing_policies.least_request: 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: - :ref:`envoy.load_balancing_policies ` This extension must be configured with one of the following type URLs: - :ref:`type.googleapis.com/envoy.extensions.load_balancing_policies.least_request.v3.LeastRequest ` .. _envoy_v3_api_msg_extensions.load_balancing_policies.least_request.v3.LeastRequest: extensions.load_balancing_policies.least_request.v3.LeastRequest ---------------------------------------------------------------- :repo:`[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 :ref:`load balancing architecture overview ` for more information. .. code-block:: json :force: { "choice_count": {...}, "active_request_bias": {...}, "slow_start_config": {...}, "locality_lb_config": {...}, "selection_method": ... } .. _envoy_v3_api_field_extensions.load_balancing_policies.least_request.v3.LeastRequest.choice_count: 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. .. _envoy_v3_api_field_extensions.load_balancing_policies.least_request.v3.LeastRequest.active_request_bias: active_request_bias (:ref:`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. .. _envoy_v3_api_field_extensions.load_balancing_policies.least_request.v3.LeastRequest.slow_start_config: slow_start_config (:ref:`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. .. _envoy_v3_api_field_extensions.load_balancing_policies.least_request.v3.LeastRequest.locality_lb_config: locality_lb_config (:ref:`extensions.load_balancing_policies.common.v3.LocalityLbConfig `) Configuration for local zone aware load balancing or locality weighted load balancing. .. _envoy_v3_api_field_extensions.load_balancing_policies.least_request.v3.LeastRequest.selection_method: selection_method (:ref:`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``. .. _envoy_v3_api_enum_extensions.load_balancing_policies.least_request.v3.LeastRequest.SelectionMethod: Enum extensions.load_balancing_policies.least_request.v3.LeastRequest.SelectionMethod ------------------------------------------------------------------------------------- :repo:`[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. .. _envoy_v3_api_enum_value_extensions.load_balancing_policies.least_request.v3.LeastRequest.SelectionMethod.N_CHOICES: N_CHOICES *(DEFAULT)* ⁣Return host with fewest requests from a set of ``choice_count`` randomly selected hosts. Best selection method for most scenarios. .. _envoy_v3_api_enum_value_extensions.load_balancing_policies.least_request.v3.LeastRequest.SelectionMethod.FULL_SCAN: 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 than ``N_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.