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 guide for how to expand and contract a cluster and considerations #480

Open
bruth opened this issue Sep 7, 2022 · 0 comments
Open
Assignees

Comments

@bruth
Copy link
Member

bruth commented Sep 7, 2022

Brief points to be expanded:

  • Adding nodes is straightforward
    • The routes should use the list of seed servers
    • There is full mesh communication overhead (and Raft meta for JS) if the cluster grows to large
    • JS-enabled nodes can be added to increase the total storage size and spread out the placement of streams
  • Removing nodes requires a few steps to prevent dropped messages and/or data loss
    • Abrupt removal will cause dropped messages, so a server must be put in lame-duck mode to drain and safely force clients to reconnect to another server
    • For JS-enabled nodes, R1 assets need to be explicitly moved to a new server (which assumes server tags are in use)
    • For R3 or R5 streams, the node needs to be removed as a peer for that stream, so the replica is moved elsewhere
    • Of course if R3 or R5 streams are present, the cluster size can't go below the max replica count
    • Likewise, the total available storage on a node needs to be sufficient for all streams placed on it
@bruth bruth self-assigned this Sep 7, 2022
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

No branches or pull requests

1 participant