Skip to content
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

CPLB userspace reverse proxy load balancer #5279

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

juanluisvaladas
Copy link
Contributor

@juanluisvaladas juanluisvaladas commented Nov 20, 2024

Description

Implement userspace CPLB reverse proxy load balancer.

Due to the keepalived virtualservers using IPVS for the load balancing, we simply couldn't make it work on some environments and needed to implement a userspace reverse proxy.

Fixes #4700

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update

How Has This Been Tested?

  • Manual test
  • Auto test added

Checklist:

  • My code follows the style guidelines of this project
  • My commit messages are signed-off
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published in downstream modules
  • I have checked my code and corrected any misspellings

@juanluisvaladas juanluisvaladas changed the title Cplb usrp Cplb userspace reverse proxy load balancer Nov 20, 2024
@juanluisvaladas juanluisvaladas changed the title Cplb userspace reverse proxy load balancer CPLB userspace reverse proxy load balancer Nov 20, 2024
@juanluisvaladas juanluisvaladas marked this pull request as ready for review November 20, 2024 21:05
@juanluisvaladas juanluisvaladas requested review from a team as code owners November 20, 2024 21:05
@juanluisvaladas juanluisvaladas marked this pull request as draft November 21, 2024 11:01
@juanluisvaladas juanluisvaladas marked this pull request as ready for review November 21, 2024 11:07
@juanluisvaladas juanluisvaladas marked this pull request as draft November 22, 2024 11:53
@juanluisvaladas
Copy link
Contributor Author

Got some feedback on the docs from Daniel, so I'm making it a draft temporarily

Copy link
Contributor

This pull request has merge conflicts that need to be resolved.

tcpproxy is a subset of github.com/inetaf/tcpproxy with some
modifications:
1- Implement the method SetRoutes to allow to set routes in bulk. Also
allows deletion of routes which otherwise would be impossible.
2- Implement round robin load balancing (there was no load balancing at
all).
3- Remove unused code.
4- Append Mirantis copyright for the modifications.

Additionaly this PR had to do some modifications in the copyright
linter script and `.golangci.yaml` because this is a file copied and
modified. This is required to Apache 2.0 retribution right.

Signed-off-by: Juan-Luis de Sousa-Valadas Castaño <[email protected]>
IPVS is problematic for many reasons, implement a userspace load
balancer which should get the job done and should be far less
problematic.

Signed-off-by: Juan-Luis de Sousa-Valadas Castaño <[email protected]>
The only reason why we block externalAddres is that we need a disabled
endpoint-reconciler. It doesn't make sense to move all this logic and
these parameters to the config validation, instead do it all in cmd.

Signed-off-by: Juan-Luis de Sousa-Valadas Castaño <[email protected]>
1- Included userspace reverse proxy and made it the default option.
2- Explained better the difference between virtual IP and a load
balancer, it was confusing for many users.
3- Added a whole troubleshooting section.

Signed-off-by: Juan-Luis de Sousa-Valadas Castaño <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

CPLB hairpining fails on vSphere
1 participant