Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ActiveHealthChecks ¶
type ActiveHealthChecks struct { // The port to use (if different from the upstream's dial // address) for health checks. Port int `json:"port,omitempty"` // How frequently to perform active health checks (default 30s). Interval caddy.Duration `json:"interval,omitempty"` // How long to wait for a connection to be established with // peer before considering it unhealthy (default 5s). Timeout caddy.Duration `json:"timeout,omitempty"` // contains filtered or unexported fields }
ActiveHealthChecks holds configuration related to active health checks (that is, health checks which occur independently in a background goroutine).
type FirstSelection ¶
type FirstSelection struct{}
FirstSelection is a policy that selects the first available host.
func (FirstSelection) CaddyModule ¶
func (FirstSelection) CaddyModule() caddy.ModuleInfo
CaddyModule returns the Caddy module information.
func (FirstSelection) Select ¶
func (FirstSelection) Select(pool UpstreamPool, _ *layer4.Connection) *Upstream
Select returns an available host, if any.
type Handler ¶
type Handler struct { // Upstreams is the list of backends to proxy to. Upstreams UpstreamPool `json:"upstreams,omitempty"` // Health checks update the status of backends, whether they are // up or down. Down backends will not be proxied to. HealthChecks *HealthChecks `json:"health_checks,omitempty"` // Load balancing distributes load/connections between backends. LoadBalancing *LoadBalancing `json:"load_balancing,omitempty"` // Specifies the version of the Proxy Protocol header to add, either "v1" or "v2". // Ref: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt ProxyProtocol string `json:"proxy_protocol,omitempty"` // contains filtered or unexported fields }
Handler is a handler that can proxy connections.
func (Handler) CaddyModule ¶
func (Handler) CaddyModule() caddy.ModuleInfo
CaddyModule returns the Caddy module information.
type HealthChecks ¶
type HealthChecks struct { // Active health checks run in the background on a timer. To // minimally enable active health checks, set either path or // port (or both). Active *ActiveHealthChecks `json:"active,omitempty"` // Passive health checks monitor proxied connections for errors or timeouts. // To minimally enable passive health checks, specify at least an empty // config object. Passive *PassiveHealthChecks `json:"passive,omitempty"` }
HealthChecks configures active and passive health checks.
type IPHashSelection ¶
type IPHashSelection struct{}
IPHashSelection is a policy that selects a host based on hashing the remote IP of the connection.
func (IPHashSelection) CaddyModule ¶
func (IPHashSelection) CaddyModule() caddy.ModuleInfo
CaddyModule returns the Caddy module information.
func (IPHashSelection) Select ¶
func (IPHashSelection) Select(pool UpstreamPool, conn *layer4.Connection) *Upstream
Select returns an available host, if any.
type LeastConnSelection ¶
type LeastConnSelection struct{}
LeastConnSelection is a policy that selects the upstream with the least active connections. If multiple upstreams have the same fewest number, one is chosen randomly.
func (LeastConnSelection) CaddyModule ¶
func (LeastConnSelection) CaddyModule() caddy.ModuleInfo
CaddyModule returns the Caddy module information.
func (LeastConnSelection) Select ¶
func (LeastConnSelection) Select(pool UpstreamPool, _ *layer4.Connection) *Upstream
Select selects the up host with the least number of connections in the pool. If more than one host has the same least number of connections, one of the hosts is chosen at random.
type LoadBalancing ¶
type LoadBalancing struct { // A selection policy is how to choose an available backend. // The default policy is random selection. SelectionPolicyRaw json.RawMessage `json:"selection,omitempty" caddy:"namespace=layer4.proxy.selection_policies inline_key=policy"` // How long to try selecting available backends for each connection // if the next available host is down. By default, this retry is // disabled. Clients will wait for up to this long while the load // balancer tries to find an available upstream host. TryDuration caddy.Duration `json:"try_duration,omitempty"` // How long to wait between selecting the next host from the pool. Default // is 250ms. Only relevant when a connection to an upstream host fails. Be // aware that setting this to 0 with a non-zero try_duration can cause the // CPU to spin if all backends are down and latency is very low. TryInterval caddy.Duration `json:"try_interval,omitempty"` SelectionPolicy Selector `json:"-"` }
LoadBalancing has parameters related to load balancing.
type PassiveHealthChecks ¶
type PassiveHealthChecks struct { // How long to remember a failed connection to a backend. A // duration > 0 enables passive health checking. Default 0. FailDuration caddy.Duration `json:"fail_duration,omitempty"` // The number of failed connections within the FailDuration window to // consider a backend as "down". Must be >= 1; default is 1. Requires // that FailDuration be > 0. MaxFails int `json:"max_fails,omitempty"` // Limits the number of simultaneous connections to a backend by // marking the backend as "down" if it has this many or more // concurrent connections. UnhealthyConnectionCount int `json:"unhealthy_connnection_count,omitempty"` // contains filtered or unexported fields }
PassiveHealthChecks holds configuration related to passive health checks (that is, health checks which occur during the normal flow of connection proxying).
type RandomChoiceSelection ¶
type RandomChoiceSelection struct { // The size of the sub-pool created from the larger upstream pool. The default value // is 2 and the maximum at selection time is the size of the upstream pool. Choose int `json:"choose,omitempty"` }
RandomChoiceSelection is a policy that selects two or more available hosts at random, then chooses the one with the least load.
func (RandomChoiceSelection) CaddyModule ¶
func (RandomChoiceSelection) CaddyModule() caddy.ModuleInfo
CaddyModule returns the Caddy module information.
func (*RandomChoiceSelection) Provision ¶
func (r *RandomChoiceSelection) Provision(ctx caddy.Context) error
Provision sets up r.
func (RandomChoiceSelection) Select ¶
func (r RandomChoiceSelection) Select(pool UpstreamPool, _ *layer4.Connection) *Upstream
Select returns an available host, if any.
func (RandomChoiceSelection) Validate ¶
func (r RandomChoiceSelection) Validate() error
Validate ensures that r's configuration is valid.
type RandomSelection ¶
type RandomSelection struct{}
RandomSelection is a policy that selects an available host at random.
func (RandomSelection) CaddyModule ¶
func (RandomSelection) CaddyModule() caddy.ModuleInfo
CaddyModule returns the Caddy module information.
func (RandomSelection) Select ¶
func (r RandomSelection) Select(pool UpstreamPool, conn *layer4.Connection) *Upstream
Select returns an available host, if any.
type RoundRobinSelection ¶
type RoundRobinSelection struct {
// contains filtered or unexported fields
}
RoundRobinSelection is a policy that selects a host based on round-robin ordering.
func (RoundRobinSelection) CaddyModule ¶
func (RoundRobinSelection) CaddyModule() caddy.ModuleInfo
CaddyModule returns the Caddy module information.
func (*RoundRobinSelection) Select ¶
func (r *RoundRobinSelection) Select(pool UpstreamPool, _ *layer4.Connection) *Upstream
Select returns an available host, if any.
type Selector ¶
type Selector interface {
Select(UpstreamPool, *layer4.Connection) *Upstream
}
Selector selects an available upstream from the pool.
type Upstream ¶
type Upstream struct { // The network addresses to dial. Supports placeholders, but not port // ranges currently (each address must be exactly 1 socket). Dial []string `json:"dial,omitempty"` // Set this field to enable TLS to the upstream. TLS *reverseproxy.TLSConfig `json:"tls,omitempty"` // How many connections this upstream is allowed to // have before being marked as unhealthy (if > 0). MaxConnections int `json:"max_connections,omitempty"` // contains filtered or unexported fields }
Upstream represents a proxy upstream.