This change adds sticky session support, by using the new oxy/rr/StickySession feature. To use it, set traefik.backend.sticky to true. This is currently only implemented in the wrr load balancer, and against the Marathon backend, but lifting it should be very doable. In the wrr load balancer, a cookie called _TRAEFIK_SERVERNAME will be set with the backend to use. If the cookie is altered to an invalid backend server, or the server is removed from the load balancer, the next server will be used instead. Otherwise, the cookie will be checked in Oxy's rr on access and if valid the connection will be wired through to it.
35 lines
1.2 KiB
Cheetah
35 lines
1.2 KiB
Cheetah
{{$apps := .Applications}}
|
|
[backends]{{range .Tasks}}
|
|
[backends.backend{{getBackend . $apps}}.servers.server-{{.ID | replace "." "-"}}]
|
|
url = "{{getProtocol . $apps}}://{{.Host}}:{{getPort . $apps}}"
|
|
weight = {{getWeight . $apps}}
|
|
{{end}}
|
|
|
|
{{range .Applications}}
|
|
{{ if hasMaxConnLabels . }}
|
|
[backends.backend{{getFrontendBackend . }}.maxconn]
|
|
amount = {{getMaxConnAmount . }}
|
|
extractorfunc = "{{getMaxConnExtractorFunc . }}"
|
|
{{end}}
|
|
{{ if hasLoadBalancerLabels . }}
|
|
[backends.backend{{getFrontendBackend . }}.loadbalancer]
|
|
method = "{{getLoadBalancerMethod . }}"
|
|
sticky = {{getSticky .}}
|
|
{{end}}
|
|
{{ if hasCircuitBreakerLabels . }}
|
|
[backends.backend{{getFrontendBackend . }}.circuitbreaker]
|
|
expression = "{{getCircuitBreakerExpression . }}"
|
|
{{end}}
|
|
{{end}}
|
|
|
|
[frontends]{{range .Applications}}
|
|
[frontends.frontend{{.ID | replace "/" "-"}}]
|
|
backend = "backend{{getFrontendBackend .}}"
|
|
passHostHeader = {{getPassHostHeader .}}
|
|
priority = {{getPriority .}}
|
|
entryPoints = [{{range getEntryPoints .}}
|
|
"{{.}}",
|
|
{{end}}]
|
|
[frontends.frontend{{.ID | replace "/" "-"}}.routes.route-host{{.ID | replace "/" "-"}}]
|
|
rule = "{{getFrontendRule .}}"
|
|
{{end}}
|