Override load balancer alg view config map
This commit is contained in:
parent
c8a9385d04
commit
a5d58cc521
4 changed files with 30 additions and 5 deletions
|
@ -304,6 +304,12 @@ The zero value disables keep-alive client connections.
|
||||||
http://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout
|
http://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout
|
||||||
|
|
||||||
|
|
||||||
|
**load-balance:** Sets the algorithm to use for load balancing. The value can either be round_robin to
|
||||||
|
use the default round robin load balancer, least_conn to use the least connected method, or
|
||||||
|
ip_hash to use a hash of the server for routing. The default is least_conn.
|
||||||
|
http://nginx.org/en/docs/http/load_balancing.html.
|
||||||
|
|
||||||
|
|
||||||
**max-worker-connections:** Sets the maximum number of simultaneous connections that can be opened by each [worker process](http://nginx.org/en/docs/ngx_core_module.html#worker_connections).
|
**max-worker-connections:** Sets the maximum number of simultaneous connections that can be opened by each [worker process](http://nginx.org/en/docs/ngx_core_module.html#worker_connections).
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -73,6 +73,9 @@ const (
|
||||||
// Size of the SSL shared cache between all worker processes.
|
// Size of the SSL shared cache between all worker processes.
|
||||||
// http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_cache
|
// http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_cache
|
||||||
sslSessionCacheSize = "10m"
|
sslSessionCacheSize = "10m"
|
||||||
|
|
||||||
|
// Default setting for load balancer algorithm
|
||||||
|
defaultLoadBalancerAlgorithm = "least_conn"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -266,6 +269,9 @@ type Configuration struct {
|
||||||
// Defines the number of worker processes. By default auto means number of available CPU cores
|
// Defines the number of worker processes. By default auto means number of available CPU cores
|
||||||
// http://nginx.org/en/docs/ngx_core_module.html#worker_processes
|
// http://nginx.org/en/docs/ngx_core_module.html#worker_processes
|
||||||
WorkerProcesses string `json:"worker-processes,omitempty"`
|
WorkerProcesses string `json:"worker-processes,omitempty"`
|
||||||
|
|
||||||
|
// Defines the load balancing algorithm to use. The deault is round-robin
|
||||||
|
LoadBalanceAlgorithm string `json:"load-balance,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewDefault returns the default nginx configuration
|
// NewDefault returns the default nginx configuration
|
||||||
|
@ -301,6 +307,7 @@ func NewDefault() Configuration {
|
||||||
SSLSessionTimeout: sslSessionTimeout,
|
SSLSessionTimeout: sslSessionTimeout,
|
||||||
UseGzip: true,
|
UseGzip: true,
|
||||||
WorkerProcesses: strconv.Itoa(runtime.NumCPU()),
|
WorkerProcesses: strconv.Itoa(runtime.NumCPU()),
|
||||||
|
LoadBalanceAlgorithm: defaultLoadBalancerAlgorithm,
|
||||||
VtsStatusZoneSize: "10m",
|
VtsStatusZoneSize: "10m",
|
||||||
UseHTTP2: true,
|
UseHTTP2: true,
|
||||||
Backend: defaults.Backend{
|
Backend: defaults.Backend{
|
||||||
|
|
|
@ -74,3 +74,12 @@ func TestMergeConfigMapToStruct(t *testing.T) {
|
||||||
t.Errorf("unexpected diff: (-got +want)\n%s", diff)
|
t.Errorf("unexpected diff: (-got +want)\n%s", diff)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDefaultLoadBalance(t *testing.T) {
|
||||||
|
conf := map[string]string{
|
||||||
|
}
|
||||||
|
to := ReadConfig(conf)
|
||||||
|
if to.LoadBalanceAlgorithm != "least_conn" {
|
||||||
|
t.Errorf("default load balance algorithm wrong")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -206,7 +206,10 @@ http {
|
||||||
{{ if eq $upstream.SessionAffinity.AffinityType "cookie" }}
|
{{ if eq $upstream.SessionAffinity.AffinityType "cookie" }}
|
||||||
sticky hash={{$upstream.SessionAffinity.CookieSessionAffinity.Hash}} name={{$upstream.SessionAffinity.CookieSessionAffinity.Name}} httponly;
|
sticky hash={{$upstream.SessionAffinity.CookieSessionAffinity.Hash}} name={{$upstream.SessionAffinity.CookieSessionAffinity.Name}} httponly;
|
||||||
{{ else }}
|
{{ else }}
|
||||||
least_conn;
|
# Load balance algorithm; empty for round robin, which is the default
|
||||||
|
{{ if ne $cfg.LoadBalanceAlgorithm "round_robin" }}
|
||||||
|
{{ $cfg.LoadBalanceAlgorithm }};
|
||||||
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ range $server := $upstream.Endpoints }}server {{ $server.Address }}:{{ $server.Port }} max_fails={{ $server.MaxFails }} fail_timeout={{ $server.FailTimeout }};
|
{{ range $server := $upstream.Endpoints }}server {{ $server.Address }}:{{ $server.Port }} max_fails={{ $server.MaxFails }} fail_timeout={{ $server.FailTimeout }};
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
Loading…
Reference in a new issue