-
Notifications
You must be signed in to change notification settings - Fork 5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rework servers load-balancer to use the WRR #9431
Conversation
51882f9
to
3b34ec4
Compare
Linking the motivation of the motivation :) |
54c26d4
to
37d7ad9
Compare
a57d3fd
to
e232ede
Compare
451f09c
to
2ba66e0
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM ✨
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
What does this PR do?
This PR reworks the servers load-balancer to use the WRR load balancer instead of the oxy load balancer.
The healthcheck was rewritten to fit the WRR healthcheck mechanism.
Motivation
To simplify the code base.
More
- [ ] Added/updated documentationAdditional Notes
As we are reusing the sticky cookie mechanism we implemented in WRR, we dropped the support of the old cookie value (before 2.5) in the sticky feature.
This means that if a Traefik is upgraded from <2.5 to this version, the active user's sticky session will be discarded.
The services are now reused, this means that if two routers use the same service, load balancing will be shared by both routers.
CloseNotifier implementations are removed because they are not used anymore as the http.Request context always has a cancellable context. See https://github.com/golang/go/blob/7c84234142149bd24a4096c6cab691d3593f3431/src/net/http/httputil/reverseproxy.go#L340
The pipelining middleware is also removed because of https://github.com/golang/go/blob/32a52e039953889a3aaa6a3e7f0ad0f7dfcbeac3/src/net/http/server.go#L670
Co-authored-by: Kevin Pollet pollet.kevin@gmail.com