Proto: load_balancer_policy.proto

Package: trafficcontrol.policy.gloo.solo.io

LoadBalancerPolicyReport

Report on the state of the LoadBalancerPolicyReport

FieldDescription
workspaces(repeated LoadBalancerPolicyReport.WorkspacesEntry)

A list of workspaces in which the policy can apply to workloads.
selectedDestinationPorts(repeated common.gloo.solo.io.DestinationReference)

The list of destination ports selected by the policy.

LoadBalancerPolicyReport.WorkspacesEntry

FieldDescription
key(string)

value(common.gloo.solo.io.Report)

LoadBalancerPolicySpec

Specifications for the policy.

FieldDescription
applyToDestinations(repeated common.gloo.solo.io.DestinationSelector)

Destinations to apply the policy to. If empty or unset, the policy applies to all destinations in the workspace.

Configuration constraints: Only one load balancer policy can apply to a destination. Subsequent policies (sorted by creation time) are ignored and put into a FAILED state.
config(LoadBalancerPolicySpec.Config)

The configuration for load balancer settings.

LoadBalancerPolicySpec.Config

The configuration for load balancer settings.

FieldDescription
simple(LoadBalancerPolicySpec.Config.SimpleLB)

Set a load balancing algorithm for selecting upstream services to forward incoming requests to.
consistentHash(LoadBalancerPolicySpec.Config.ConsistentHashLB)

Set up soft session affinity between a client and an upstream service by using a consistent hashing algorithm based on HTTP headers, cookies, or other properties.
warmupDurationSecs(google.protobuf.Duration)

The warm-up duration for a service. If set, the newly created endpoint of the service remains in warm-up mode, starting from its creation time and for the duration of this window. The gateway progressively increases the amount of traffic for that endpoint instead of sending a proportional amount of traffic. This setting is effective in scaling events, such as when new replicas are added to handle increased load. However, if all services start at the same time, this setting might not be as effective as all endpoints receiving the same amount of requests.

Implementation notes: This setting is supported only when config.simple is set to ROUND_ROBIN (default) or LEAST_REQUEST.

Configuration constraints:
  • The value must be at least 1ms.
  • The value cannot have granularity smaller than one millisecond.
healthyPanicThreshold(google.protobuf.DoubleValue)

The threshold at which Envoy disregards the upstream health status and either load balances requests either among all or no hosts.

Implementation notes:
  • Defaults to 50% (entered as 50).
  • To disable panic mode, set to 0.


Configuration constraints: The value must be in the range 0 - 100, inclusive.
updateMergeWindow(google.protobuf.Duration)

The duration of time within which the gateway merges all health check, weight, and metadata updates together.

Implementation notes:
  • Defaults to 1s.
  • To disable this setting, set to 0.


Configuration constraints:
  • The value must be at least 1ms.
  • The value cannot have granularity smaller than one millisecond.

LoadBalancerPolicySpec.Config.ConsistentHashLB

Provide soft session affinity based on HTTP headers, cookies, the source IP address, or a query parameter. The affinity to a particular destination host might be lost when one or more hosts are added or removed from the destination service.

Configuration constraints: Only one of the following settings can be set.

FieldDescription
httpHeaderName(string)

Hash based on a specific HTTP header.
httpCookie(LoadBalancerPolicySpec.Config.ConsistentHashLB.HTTPCookie)

Hash based on an HTTP cookie.
useSourceIp(bool)

Hash based on the source IP address. This is applicable for both TCP and HTTP connections.
httpQueryParameterName(string)

Hash based on a specific HTTP query parameter.

LoadBalancerPolicySpec.Config.ConsistentHashLB.HTTPCookie

An HTTP cookie that is used as the hash key for the consistent hash load balancer. If the cookie is not present, it is generated.

FieldDescription
name(string)

Name of the cookie.
path(string)

Path to set for the cookie.
ttl(google.protobuf.Duration)

Lifetime of the cookie.

Configuration constraints:
  • The value must be at least 1ms.
  • The value cannot have granularity smaller than one millisecond.

LoadBalancerPolicyStatus

The status of the policy after it is applied to your Gloo environment.

FieldDescription
common(common.gloo.solo.io.Status)

The state and workspace conditions of the applied resource.
numSelectedDestinationPorts(uint32)

The number of destination ports selected by the policy.

LoadBalancerPolicySpec.Config.SimpleLB

The load balancing algorithm for selecting upstream services to forward incoming requests to.

NameNumberDescription
UNSPECIFIED0No load balancing algorithm is specified. Istio selects an appropriate algorithm.
RANDOM1The load balancer selects a random healthy host. The random load balancer generally performs better than round robin if no health checking policy is configured.
PASSTHROUGH2Forward the connection to the original IP address requested by the caller without doing any form of load balancing. Use caution with this setting, which is intended only for advanced use cases.
ROUND_ROBIN3The load balancer performs basic round robin load balancing. This algorithm is generally unsafe for many scenarios, such as when endpoint weighting is used, as it can overburden endpoints. In general, LEAST_REQUEST is recommended as a drop-in replacement for ROUND_ROBIN.
LEAST_REQUEST4The request load balancer spreads load across endpoints, favoring endpoints with the least outstanding requests. This is generally safer and performs better than ROUND_ROBIN in nearly all cases.