1
0
Fork 0

Add HighestRandomWeight Loadbalancing Algorithm

This commit is contained in:
mathieuHa 2025-09-08 12:00:42 +02:00 committed by GitHub
parent 9b42b5b930
commit 02443545e7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 936 additions and 112 deletions

View file

@ -199,39 +199,39 @@
- "traefik.http.routers.router1.tls.domains[1].main=foobar"
- "traefik.http.routers.router1.tls.domains[1].sans=foobar, foobar"
- "traefik.http.routers.router1.tls.options=foobar"
- "traefik.http.services.service02.loadbalancer.healthcheck.followredirects=true"
- "traefik.http.services.service02.loadbalancer.healthcheck.headers.name0=foobar"
- "traefik.http.services.service02.loadbalancer.healthcheck.headers.name1=foobar"
- "traefik.http.services.service02.loadbalancer.healthcheck.hostname=foobar"
- "traefik.http.services.service02.loadbalancer.healthcheck.interval=42s"
- "traefik.http.services.service02.loadbalancer.healthcheck.method=foobar"
- "traefik.http.services.service02.loadbalancer.healthcheck.mode=foobar"
- "traefik.http.services.service02.loadbalancer.healthcheck.path=foobar"
- "traefik.http.services.service02.loadbalancer.healthcheck.port=42"
- "traefik.http.services.service02.loadbalancer.healthcheck.scheme=foobar"
- "traefik.http.services.service02.loadbalancer.healthcheck.status=42"
- "traefik.http.services.service02.loadbalancer.healthcheck.timeout=42s"
- "traefik.http.services.service02.loadbalancer.healthcheck.unhealthyinterval=42s"
- "traefik.http.services.service02.loadbalancer.passhostheader=true"
- "traefik.http.services.service02.loadbalancer.passivehealthcheck.failurewindow=42s"
- "traefik.http.services.service02.loadbalancer.passivehealthcheck.maxfailedattempts=42"
- "traefik.http.services.service02.loadbalancer.responseforwarding.flushinterval=42s"
- "traefik.http.services.service02.loadbalancer.serverstransport=foobar"
- "traefik.http.services.service02.loadbalancer.sticky=true"
- "traefik.http.services.service02.loadbalancer.sticky.cookie=true"
- "traefik.http.services.service02.loadbalancer.sticky.cookie.domain=foobar"
- "traefik.http.services.service02.loadbalancer.sticky.cookie.httponly=true"
- "traefik.http.services.service02.loadbalancer.sticky.cookie.maxage=42"
- "traefik.http.services.service02.loadbalancer.sticky.cookie.name=foobar"
- "traefik.http.services.service02.loadbalancer.sticky.cookie.path=foobar"
- "traefik.http.services.service02.loadbalancer.sticky.cookie.samesite=foobar"
- "traefik.http.services.service02.loadbalancer.sticky.cookie.secure=true"
- "traefik.http.services.service02.loadbalancer.strategy=foobar"
- "traefik.http.services.service02.loadbalancer.server.port=foobar"
- "traefik.http.services.service02.loadbalancer.server.preservepath=true"
- "traefik.http.services.service02.loadbalancer.server.scheme=foobar"
- "traefik.http.services.service02.loadbalancer.server.url=foobar"
- "traefik.http.services.service02.loadbalancer.server.weight=42"
- "traefik.http.services.service03.loadbalancer.healthcheck.followredirects=true"
- "traefik.http.services.service03.loadbalancer.healthcheck.headers.name0=foobar"
- "traefik.http.services.service03.loadbalancer.healthcheck.headers.name1=foobar"
- "traefik.http.services.service03.loadbalancer.healthcheck.hostname=foobar"
- "traefik.http.services.service03.loadbalancer.healthcheck.interval=42s"
- "traefik.http.services.service03.loadbalancer.healthcheck.method=foobar"
- "traefik.http.services.service03.loadbalancer.healthcheck.mode=foobar"
- "traefik.http.services.service03.loadbalancer.healthcheck.path=foobar"
- "traefik.http.services.service03.loadbalancer.healthcheck.port=42"
- "traefik.http.services.service03.loadbalancer.healthcheck.scheme=foobar"
- "traefik.http.services.service03.loadbalancer.healthcheck.status=42"
- "traefik.http.services.service03.loadbalancer.healthcheck.timeout=42s"
- "traefik.http.services.service03.loadbalancer.healthcheck.unhealthyinterval=42s"
- "traefik.http.services.service03.loadbalancer.passhostheader=true"
- "traefik.http.services.service03.loadbalancer.passivehealthcheck.failurewindow=42s"
- "traefik.http.services.service03.loadbalancer.passivehealthcheck.maxfailedattempts=42"
- "traefik.http.services.service03.loadbalancer.responseforwarding.flushinterval=42s"
- "traefik.http.services.service03.loadbalancer.serverstransport=foobar"
- "traefik.http.services.service03.loadbalancer.sticky=true"
- "traefik.http.services.service03.loadbalancer.sticky.cookie=true"
- "traefik.http.services.service03.loadbalancer.sticky.cookie.domain=foobar"
- "traefik.http.services.service03.loadbalancer.sticky.cookie.httponly=true"
- "traefik.http.services.service03.loadbalancer.sticky.cookie.maxage=42"
- "traefik.http.services.service03.loadbalancer.sticky.cookie.name=foobar"
- "traefik.http.services.service03.loadbalancer.sticky.cookie.path=foobar"
- "traefik.http.services.service03.loadbalancer.sticky.cookie.samesite=foobar"
- "traefik.http.services.service03.loadbalancer.sticky.cookie.secure=true"
- "traefik.http.services.service03.loadbalancer.strategy=foobar"
- "traefik.http.services.service03.loadbalancer.server.port=foobar"
- "traefik.http.services.service03.loadbalancer.server.preservepath=true"
- "traefik.http.services.service03.loadbalancer.server.scheme=foobar"
- "traefik.http.services.service03.loadbalancer.server.url=foobar"
- "traefik.http.services.service03.loadbalancer.server.weight=42"
- "traefik.tcp.middlewares.tcpmiddleware01.ipallowlist.sourcerange=foobar, foobar"
- "traefik.tcp.middlewares.tcpmiddleware02.ipwhitelist.sourcerange=foobar, foobar"
- "traefik.tcp.middlewares.tcpmiddleware03.inflightconn.amount=42"

View file

@ -55,12 +55,23 @@
fallback = "foobar"
[http.services.Service01.failover.healthCheck]
[http.services.Service02]
[http.services.Service02.loadBalancer]
[http.services.Service02.highestRandomWeight]
[[http.services.Service02.highestRandomWeight.services]]
name = "foobar"
weight = 42
[[http.services.Service02.highestRandomWeight.services]]
name = "foobar"
weight = 42
[http.services.Service02.highestRandomWeight.healthCheck]
[http.services.Service03]
[http.services.Service03.loadBalancer]
strategy = "foobar"
passHostHeader = true
serversTransport = "foobar"
[http.services.Service02.loadBalancer.sticky]
[http.services.Service02.loadBalancer.sticky.cookie]
[http.services.Service03.loadBalancer.sticky]
[http.services.Service03.loadBalancer.sticky.cookie]
name = "foobar"
secure = true
httpOnly = true
@ -69,16 +80,16 @@
path = "foobar"
domain = "foobar"
[[http.services.Service02.loadBalancer.servers]]
[[http.services.Service03.loadBalancer.servers]]
url = "foobar"
weight = 42
preservePath = true
[[http.services.Service02.loadBalancer.servers]]
[[http.services.Service03.loadBalancer.servers]]
url = "foobar"
weight = 42
preservePath = true
[http.services.Service02.loadBalancer.healthCheck]
[http.services.Service03.loadBalancer.healthCheck]
scheme = "foobar"
mode = "foobar"
path = "foobar"
@ -90,40 +101,40 @@
timeout = "42s"
hostname = "foobar"
followRedirects = true
[http.services.Service02.loadBalancer.healthCheck.headers]
[http.services.Service03.loadBalancer.healthCheck.headers]
name0 = "foobar"
name1 = "foobar"
[http.services.Service02.loadBalancer.passiveHealthCheck]
[http.services.Service03.loadBalancer.passiveHealthCheck]
failureWindow = "42s"
maxFailedAttempts = 42
[http.services.Service02.loadBalancer.responseForwarding]
[http.services.Service03.loadBalancer.responseForwarding]
flushInterval = "42s"
[http.services.Service03]
[http.services.Service03.mirroring]
[http.services.Service04]
[http.services.Service04.mirroring]
service = "foobar"
mirrorBody = true
maxBodySize = 42
[[http.services.Service03.mirroring.mirrors]]
[[http.services.Service04.mirroring.mirrors]]
name = "foobar"
percent = 42
[[http.services.Service03.mirroring.mirrors]]
[[http.services.Service04.mirroring.mirrors]]
name = "foobar"
percent = 42
[http.services.Service03.mirroring.healthCheck]
[http.services.Service04]
[http.services.Service04.weighted]
[http.services.Service04.mirroring.healthCheck]
[http.services.Service05]
[http.services.Service05.weighted]
[[http.services.Service04.weighted.services]]
[[http.services.Service05.weighted.services]]
name = "foobar"
weight = 42
[[http.services.Service04.weighted.services]]
[[http.services.Service05.weighted.services]]
name = "foobar"
weight = 42
[http.services.Service04.weighted.sticky]
[http.services.Service04.weighted.sticky.cookie]
[http.services.Service05.weighted.sticky]
[http.services.Service05.weighted.sticky.cookie]
name = "foobar"
secure = true
httpOnly = true
@ -131,7 +142,7 @@
maxAge = 42
path = "foobar"
domain = "foobar"
[http.services.Service04.weighted.healthCheck]
[http.services.Service05.weighted.healthCheck]
[http.middlewares]
[http.middlewares.Middleware01]
[http.middlewares.Middleware01.addPrefix]

View file

@ -65,6 +65,14 @@ http:
fallback: foobar
healthCheck: {}
Service02:
highestRandomWeight:
services:
- name: foobar
weight: 42
- name: foobar
weight: 42
healthCheck: {}
Service03:
loadBalancer:
sticky:
cookie:
@ -105,7 +113,7 @@ http:
responseForwarding:
flushInterval: 42s
serversTransport: foobar
Service03:
Service04:
mirroring:
service: foobar
mirrorBody: true
@ -116,7 +124,7 @@ http:
- name: foobar
percent: 42
healthCheck: {}
Service04:
Service05:
weighted:
services:
- name: foobar

View file

@ -274,58 +274,63 @@ THIS FILE MUST NOT BE EDITED BY HAND
| `traefik/http/services/Service01/failover/fallback` | `foobar` |
| `traefik/http/services/Service01/failover/healthCheck` | `` |
| `traefik/http/services/Service01/failover/service` | `foobar` |
| `traefik/http/services/Service02/loadBalancer/healthCheck/followRedirects` | `true` |
| `traefik/http/services/Service02/loadBalancer/healthCheck/headers/name0` | `foobar` |
| `traefik/http/services/Service02/loadBalancer/healthCheck/headers/name1` | `foobar` |
| `traefik/http/services/Service02/loadBalancer/healthCheck/hostname` | `foobar` |
| `traefik/http/services/Service02/loadBalancer/healthCheck/interval` | `42s` |
| `traefik/http/services/Service02/loadBalancer/healthCheck/method` | `foobar` |
| `traefik/http/services/Service02/loadBalancer/healthCheck/mode` | `foobar` |
| `traefik/http/services/Service02/loadBalancer/healthCheck/path` | `foobar` |
| `traefik/http/services/Service02/loadBalancer/healthCheck/port` | `42` |
| `traefik/http/services/Service02/loadBalancer/healthCheck/scheme` | `foobar` |
| `traefik/http/services/Service02/loadBalancer/healthCheck/status` | `42` |
| `traefik/http/services/Service02/loadBalancer/healthCheck/timeout` | `42s` |
| `traefik/http/services/Service02/loadBalancer/healthCheck/unhealthyInterval` | `42s` |
| `traefik/http/services/Service02/loadBalancer/passHostHeader` | `true` |
| `traefik/http/services/Service02/loadBalancer/passiveHealthCheck/failureWindow` | `42s` |
| `traefik/http/services/Service02/loadBalancer/passiveHealthCheck/maxFailedAttempts` | `42` |
| `traefik/http/services/Service02/loadBalancer/responseForwarding/flushInterval` | `42s` |
| `traefik/http/services/Service02/loadBalancer/servers/0/preservePath` | `true` |
| `traefik/http/services/Service02/loadBalancer/servers/0/url` | `foobar` |
| `traefik/http/services/Service02/loadBalancer/servers/0/weight` | `42` |
| `traefik/http/services/Service02/loadBalancer/servers/1/preservePath` | `true` |
| `traefik/http/services/Service02/loadBalancer/servers/1/url` | `foobar` |
| `traefik/http/services/Service02/loadBalancer/servers/1/weight` | `42` |
| `traefik/http/services/Service02/loadBalancer/serversTransport` | `foobar` |
| `traefik/http/services/Service02/loadBalancer/sticky/cookie/domain` | `foobar` |
| `traefik/http/services/Service02/loadBalancer/sticky/cookie/httpOnly` | `true` |
| `traefik/http/services/Service02/loadBalancer/sticky/cookie/maxAge` | `42` |
| `traefik/http/services/Service02/loadBalancer/sticky/cookie/name` | `foobar` |
| `traefik/http/services/Service02/loadBalancer/sticky/cookie/path` | `foobar` |
| `traefik/http/services/Service02/loadBalancer/sticky/cookie/sameSite` | `foobar` |
| `traefik/http/services/Service02/loadBalancer/sticky/cookie/secure` | `true` |
| `traefik/http/services/Service02/loadBalancer/strategy` | `foobar` |
| `traefik/http/services/Service03/mirroring/healthCheck` | `` |
| `traefik/http/services/Service03/mirroring/maxBodySize` | `42` |
| `traefik/http/services/Service03/mirroring/mirrorBody` | `true` |
| `traefik/http/services/Service03/mirroring/mirrors/0/name` | `foobar` |
| `traefik/http/services/Service03/mirroring/mirrors/0/percent` | `42` |
| `traefik/http/services/Service03/mirroring/mirrors/1/name` | `foobar` |
| `traefik/http/services/Service03/mirroring/mirrors/1/percent` | `42` |
| `traefik/http/services/Service03/mirroring/service` | `foobar` |
| `traefik/http/services/Service04/weighted/healthCheck` | `` |
| `traefik/http/services/Service04/weighted/services/0/name` | `foobar` |
| `traefik/http/services/Service04/weighted/services/0/weight` | `42` |
| `traefik/http/services/Service04/weighted/services/1/name` | `foobar` |
| `traefik/http/services/Service04/weighted/services/1/weight` | `42` |
| `traefik/http/services/Service04/weighted/sticky/cookie/domain` | `foobar` |
| `traefik/http/services/Service04/weighted/sticky/cookie/httpOnly` | `true` |
| `traefik/http/services/Service04/weighted/sticky/cookie/maxAge` | `42` |
| `traefik/http/services/Service04/weighted/sticky/cookie/name` | `foobar` |
| `traefik/http/services/Service04/weighted/sticky/cookie/path` | `foobar` |
| `traefik/http/services/Service04/weighted/sticky/cookie/sameSite` | `foobar` |
| `traefik/http/services/Service04/weighted/sticky/cookie/secure` | `true` |
| `traefik/http/services/Service02/highestRandomWeight/healthCheck` | `` |
| `traefik/http/services/Service02/highestRandomWeight/services/0/name` | `foobar` |
| `traefik/http/services/Service02/highestRandomWeight/services/0/weight` | `42` |
| `traefik/http/services/Service02/highestRandomWeight/services/1/name` | `foobar` |
| `traefik/http/services/Service02/highestRandomWeight/services/1/weight` | `42` |
| `traefik/http/services/Service03/loadBalancer/healthCheck/followRedirects` | `true` |
| `traefik/http/services/Service03/loadBalancer/healthCheck/headers/name0` | `foobar` |
| `traefik/http/services/Service03/loadBalancer/healthCheck/headers/name1` | `foobar` |
| `traefik/http/services/Service03/loadBalancer/healthCheck/hostname` | `foobar` |
| `traefik/http/services/Service03/loadBalancer/healthCheck/interval` | `42s` |
| `traefik/http/services/Service03/loadBalancer/healthCheck/method` | `foobar` |
| `traefik/http/services/Service03/loadBalancer/healthCheck/mode` | `foobar` |
| `traefik/http/services/Service03/loadBalancer/healthCheck/path` | `foobar` |
| `traefik/http/services/Service03/loadBalancer/healthCheck/port` | `42` |
| `traefik/http/services/Service03/loadBalancer/healthCheck/scheme` | `foobar` |
| `traefik/http/services/Service03/loadBalancer/healthCheck/status` | `42` |
| `traefik/http/services/Service03/loadBalancer/healthCheck/timeout` | `42s` |
| `traefik/http/services/Service03/loadBalancer/healthCheck/unhealthyInterval` | `42s` |
| `traefik/http/services/Service03/loadBalancer/passHostHeader` | `true` |
| `traefik/http/services/Service03/loadBalancer/passiveHealthCheck/failureWindow` | `42s` |
| `traefik/http/services/Service03/loadBalancer/passiveHealthCheck/maxFailedAttempts` | `42` |
| `traefik/http/services/Service03/loadBalancer/responseForwarding/flushInterval` | `42s` |
| `traefik/http/services/Service03/loadBalancer/servers/0/preservePath` | `true` |
| `traefik/http/services/Service03/loadBalancer/servers/0/url` | `foobar` |
| `traefik/http/services/Service03/loadBalancer/servers/0/weight` | `42` |
| `traefik/http/services/Service03/loadBalancer/servers/1/preservePath` | `true` |
| `traefik/http/services/Service03/loadBalancer/servers/1/url` | `foobar` |
| `traefik/http/services/Service03/loadBalancer/servers/1/weight` | `42` |
| `traefik/http/services/Service03/loadBalancer/serversTransport` | `foobar` |
| `traefik/http/services/Service03/loadBalancer/sticky/cookie/domain` | `foobar` |
| `traefik/http/services/Service03/loadBalancer/sticky/cookie/httpOnly` | `true` |
| `traefik/http/services/Service03/loadBalancer/sticky/cookie/maxAge` | `42` |
| `traefik/http/services/Service03/loadBalancer/sticky/cookie/name` | `foobar` |
| `traefik/http/services/Service03/loadBalancer/sticky/cookie/path` | `foobar` |
| `traefik/http/services/Service03/loadBalancer/sticky/cookie/sameSite` | `foobar` |
| `traefik/http/services/Service03/loadBalancer/sticky/cookie/secure` | `true` |
| `traefik/http/services/Service03/loadBalancer/strategy` | `foobar` |
| `traefik/http/services/Service04/mirroring/healthCheck` | `` |
| `traefik/http/services/Service04/mirroring/maxBodySize` | `42` |
| `traefik/http/services/Service04/mirroring/mirrorBody` | `true` |
| `traefik/http/services/Service04/mirroring/mirrors/0/name` | `foobar` |
| `traefik/http/services/Service04/mirroring/mirrors/0/percent` | `42` |
| `traefik/http/services/Service04/mirroring/mirrors/1/name` | `foobar` |
| `traefik/http/services/Service04/mirroring/mirrors/1/percent` | `42` |
| `traefik/http/services/Service04/mirroring/service` | `foobar` |
| `traefik/http/services/Service05/weighted/healthCheck` | `` |
| `traefik/http/services/Service05/weighted/services/0/name` | `foobar` |
| `traefik/http/services/Service05/weighted/services/0/weight` | `42` |
| `traefik/http/services/Service05/weighted/services/1/name` | `foobar` |
| `traefik/http/services/Service05/weighted/services/1/weight` | `42` |
| `traefik/http/services/Service05/weighted/sticky/cookie/domain` | `foobar` |
| `traefik/http/services/Service05/weighted/sticky/cookie/httpOnly` | `true` |
| `traefik/http/services/Service05/weighted/sticky/cookie/maxAge` | `42` |
| `traefik/http/services/Service05/weighted/sticky/cookie/name` | `foobar` |
| `traefik/http/services/Service05/weighted/sticky/cookie/path` | `foobar` |
| `traefik/http/services/Service05/weighted/sticky/cookie/sameSite` | `foobar` |
| `traefik/http/services/Service05/weighted/sticky/cookie/secure` | `true` |
| `traefik/tcp/middlewares/TCPMiddleware01/ipAllowList/sourceRange/0` | `foobar` |
| `traefik/tcp/middlewares/TCPMiddleware01/ipAllowList/sourceRange/1` | `foobar` |
| `traefik/tcp/middlewares/TCPMiddleware02/ipWhiteList/sourceRange/0` | `foobar` |