Derzeit im Test: Der GitHub-Code wird nach Abschluss veröffentlicht.

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.

  1. 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.
  2. 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.
  3. 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.