Unterbrechungsfreies Neustartverfahren (Rolling Restart)
Es gibt ein zentrales Prinzip: eine Mehrheit muss immer am Leben bleiben. Bei 3 Knoten darfst du nur 1 gleichzeitig herunterfahren, bei 5 Knoten bis zu 2.
- Zuerst Follower (Nicht-Leader-Knoten) neu starten, einen nach dem anderen — der Leader bedient währenddessen durchgehend weiter. Bestätige, dass jeder neu gestartete Knoten per Peer-Log-Replikation/Snapshot aufgeholt hat, bevor du zum nächsten übergehst.
- Zuletzt den Leader herunterfahren. Die verbleibenden Knoten erkennen den ausgebliebenen Herzschlag und wählen innerhalb von 0,5–1 Sekunde einen neuen Leader. Client-Anfragen in diesem Fenster erhalten
E no_leader, aber die offiziellen Clients versuchen es transparent erneut, sodass die Anwendung nur eine kurze Verzögerung sieht. - Den alten Leader wieder hochfahren — er tritt als Follower bei und holt auf (er erlangt die Führung nicht automatisch zurück).
Der Sperrenzustand bleibt durchgehend erhalten, solange eine Mehrheit am Leben bleibt — Sperren, die während des Neustarts vergeben oder freigegeben werden, durchlaufen ebenfalls den Commit, sodass nichts verloren geht.
Ablauf (3 Knoten)
Leader
Follower 1
Follower 2
① Follower 1 neu starten — der Leader bedient weiter
holt per Log-Replikation/Snapshot auf
② nach dem Aufholen Follower 2 neu starten
holt per Log-Replikation auf
③ zuletzt den Leader neu starten
Vote → neuer Leader innerhalb von 0,5–1s gewählt
der alte Leader tritt als Follower bei und holt auf
Konsens-RPC (Raft)
Während des kurzen Fensters, in dem der Leader ausgefallen ist, erhalten Clients möglicherweise E no_leader, aber die offiziellen Clients versuchen es transparent erneut, sodass es der Anwendung nur als kurze Verzögerung erscheint.