Actually this apply to adding new nodes, or removing existing nodes:
- Add the new node in, make sure AutoBootstrap is set to true so it will step into bootstrap node, for removing old nodes, just shut it down
- For all existing nodes current in ring, do the calculation to get different ranges which used for token, the formula is 2^127/nodes.
- Now, on each node, run “nodeprobe move token-for-this-node”, you can run only one node at a time as data will be moved around
- After all nodes finish the move, do “nodeprobe cleanup” to remove useless entries
The serving should not be affected during the operation though performance may be affected.
The “loadbalance” does not make things perfect, though Cassandra guys mentioned it should be good enough.