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

support more than 255 services #9

Open
raffaelespazzoli opened this issue Mar 2, 2020 · 0 comments
Open

support more than 255 services #9

raffaelespazzoli opened this issue Mar 2, 2020 · 0 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@raffaelespazzoli
Copy link
Collaborator

currently each KeepalivedGroup supports up to 255 services.
This limit is due to the way keepalived works and how the operator was designed: each services maps to a keepalived vrrp instance. With a different design where each vrrp instance can carry more than one VIP, it's possible to go beyond that limit.
Here is a possible design:

  1. a function maps services/VIPs to vrrp instance in a way that can be calculated at any point in time, so no state has to be held anywhere. For example sha256(namespace/service/VIP) mod 255. The pseudo randomness of the hash function ensures that VIPs are rather evenly distributed across vrrp groups.
  2. during the reconcile cycle VIPs are assigned via the above function and the keepalived map is computed.

This will allow supporting an unlimited number of VIPs/services. The only downside is that VIPs from different services share the same fail-over dynamic. This is not usually an issue.

@raffaelespazzoli raffaelespazzoli added enhancement New feature or request help wanted Extra attention is needed labels Mar 2, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant