Ticketing
Dokumentation

Raft-Parameter

ElementWert
Herzschlag-Intervall250 ms
Wahl-Timeout500–1000 ms — eine neue Leaderwahl startet innerhalb dieses Fensters nach einem Leaderausfall
Knotenzahl3 oder 5 (beim Konfigurationsladen erzwungen — alles andere verweigert den Start)
Knoten-IDseine (cluster_self) Position in der cluster_peers-Liste — deshalb muss
die Listenreihenfolge auf jedem Knoten identisch sein
Bootstrap500 ms nach dem Start initialisiert sich jeder Knoten mit derselben Mitgliedschaft —
wird ignoriert, wenn er einem bereits initialisierten Cluster beitritt
Log-SpeicherungIn-Memory (flüchtig) — ein neu gestarteter Knoten erholt sich per
Replikation/Snapshot
Lease-Ablauf-Erkennungder Leader prüft alle 100 ms und committet
Expire per Konsens
Granularität des wait-Timeoutsdas Wartezeit-Timeout (T) wird ebenfalls im selben
100-ms-Takt entschieden — es kann bis zu 100 ms verspätet eintreffen

Warum 3 oder 5 Knoten

Ein Commit benötigt eine Mehrheit. Eine Konfiguration mit gerader Knotenzahl erhöht nur die Kosten, ohne die Fehlertoleranz zu verbessern, daher lehnt der Server sie ab.

KnotenzahlMehrheitTolerierte gleichzeitige Ausfälle
220 — ein einzelner Ausfall stoppt den Cluster. Nicht besser als der Single-Modus
321
431 — dasselbe wie bei 3 Knoten, nur teurer
532

Zusammenfassung des Fehlerverhaltens

SituationVerhalten
Client-Anfrage an einen Nicht-Leader-KnotenM (Leader-Adresse), oder E no_leader, falls der Leader unbekannt ist
Leaderausfallneuer Leader innerhalb von 500–1000 ms gewählt. Anfragen in diesem Fenster erhalten E no_leader → der Client versucht es erneut
Während des Leaderwechselsanstehende Acquire-Anfragen werden mit M/E no_leader bereinigt, und der Client versucht es beim neuen Leader erneut
Knotenneustartbootet mit leerem Zustand → holt über die Log-Replikation/den Snapshot eines Peers auf
Mehrheit verlorenCommits werden unmöglich → Schreibvorgänge stoppen (Sicherheit zuerst), wird automatisch fortgesetzt, sobald die Mehrheit wiederhergestellt ist

Begriffe

  • Quorum — mehr als die Hälfte aller Knoten (2 von 3, oder 3 von 5). Da jede Entscheidung die Zustimmung des Quorums erfordert, können zwei partitionierte Gruppen niemals gleichzeitig widersprüchliche Entscheidungen committen.
  • Wahl-Timeout (election timeout) — wie lange ein Follower ohne Herzschlag wartet, bevor er schließt, dass der Leader gestorben ist, und eine Wahl startet. Pro Knoten randomisiert, um gleichzeitige Kandidaturen zu reduzieren.