Membership Changes#
// TODO
Rough Notes#
- Dynamically add/remove nodes from cluster
- Replicate configuration changes through Raft log
- Joint consensus (C_old,new) to prevent split brain during transitions
- Or single-server changes (simpler, safer)
- AddServer and RemoveServer operations
- Catch up new servers before adding to cluster
- Handle leader stepping down if removed from cluster
Cluster Management API#
- POST /cluster/join
Join a cluster.
POST /cluster/join
Body:
{
"leader": ":<port>" # the leader's address
}
Response:
- 200 OK: Successfully joined cluster- POST /cluster/leave
Leave the cluster.
POST /cluster/leave
Response:
- 200 OK: Successfully initiated removal from clusterResources#
- The Raft Consensus Algorithm
- Students’ Guide to Raft by Jon Gjengset