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

Add HA control-plane design doc [K8SSAND-1284] #433

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

Miles-Garnsey
Copy link
Member

@Miles-Garnsey Miles-Garnsey commented Feb 24, 2022

What this PR does:

What it says on the tin.

Which issue(s) this PR fixes:
Fixes #435

Checklist

  • Changes manually tested
  • Automated Tests added/updated
  • Documentation added/updated
  • CHANGELOG.md updated (not required for documentation PRs)
  • CLA Signed: DataStax CLA

@Miles-Garnsey Miles-Garnsey requested a review from a team as a code owner February 24, 2022 01:48
@jdonenine jdonenine changed the title Add HA control-plane design doc Add HA control-plane design doc [K8SSAND-1284] Feb 24, 2022
Copy link
Contributor

@adejanovski adejanovski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very well written doc @Miles-Garnsey.

I think automated leader election in a multicluster environment is going to be tough to manage with simplicity (if we have 2 clusters and lose one, how can we ensure consistency in the leader election process?).
But here's my question: why would we want this to be automated? Can't we provide a manual procedure to switch control planes?
We will also need to copy over client configs to the data plane so that it can connect to the API server of remote k8s clusters. Not sure if that should be replicated from the start or done manually when needed (it could be unsafe to shuffle those around).


This topic touches on a number of operational questions that users are likely to face in the real world. I'm not sure how many of these we have/want to consider, but I thought it'd be good to document them somewhere.

- A user has an existing CassandraDataCenter from Cass operator. How can they join it to a new K8ssandra cluster?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's good from a migration standpoint. There's a question still as to whether we support it long term.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NB: we should also note that this ends up in a situation where the clusters are joined to the same Cassandra ring, but the cass-operator cluster isn't under the management of k8ssandra-operator. So there's two meanings to 'how can they join it to a new k8ssandra cluster' in that sentence.

- A user has an existing CassandraDataCenter from Cass operator. How can they join it to a new K8ssandra cluster?
- What is the process for migrating control plane DCs and data plane DCs to new k8s clusters generally?
- What cases do we support around running some DCs under k8ssandra and others externally? (e.g. in a traditional bare metal DC.)
- Do we support mixed (k8s/bare-metal) clusters only at migration or permanently.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My opinion there is that we can support them permanently, but the automation we have in k8ssandra-operator won't spill over to the external clusters. Operations spanning over both clusters will have to be handled manually, which can come with some surprises.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I guess we'd recommend against it.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm happy to recommend against. I suggest we leave the question in the doc though.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
No open projects
Status: No status
Development

Successfully merging this pull request may close these issues.

Control Plane HA Design
2 participants