Raft-Parameter
| Element | Wert |
|---|---|
| Herzschlag-Intervall | 250 ms |
| Wahl-Timeout | 500–1000 ms — eine neue Leaderwahl startet innerhalb dieses Fensters nach einem Leaderausfall |
| Knotenzahl | 3 oder 5 (beim Konfigurationsladen erzwungen — alles andere verweigert den Start) |
| Knoten-ID | seine (cluster_self) Position in der cluster_peers-Liste — deshalb muss |
| die Listenreihenfolge auf jedem Knoten identisch sein | |
| Bootstrap | 500 ms nach dem Start initialisiert sich jeder Knoten mit derselben Mitgliedschaft — |
| wird ignoriert, wenn er einem bereits initialisierten Cluster beitritt | |
| Log-Speicherung | In-Memory (flüchtig) — ein neu gestarteter Knoten erholt sich per |
| Replikation/Snapshot | |
| Lease-Ablauf-Erkennung | der Leader prüft alle 100 ms und committet |
Expire per Konsens | |
Granularität des wait-Timeouts | das 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.
| Knotenzahl | Mehrheit | Tolerierte gleichzeitige Ausfälle |
|---|---|---|
| 2 | 2 | 0 — ein einzelner Ausfall stoppt den Cluster. Nicht besser als der Single-Modus |
| 3 | 2 | 1 |
| 4 | 3 | 1 — dasselbe wie bei 3 Knoten, nur teurer |
| 5 | 3 | 2 |
Zusammenfassung des Fehlerverhaltens
| Situation | Verhalten |
|---|---|
| Client-Anfrage an einen Nicht-Leader-Knoten | M (Leader-Adresse), oder E no_leader, falls der Leader unbekannt ist |
| Leaderausfall | neuer Leader innerhalb von 500–1000 ms gewählt. Anfragen in diesem Fenster erhalten E no_leader → der Client versucht es erneut |
| Während des Leaderwechsels | anstehende Acquire-Anfragen werden mit M/E no_leader bereinigt, und der Client versucht es beim neuen Leader erneut |
| Knotenneustart | bootet mit leerem Zustand → holt über die Log-Replikation/den Snapshot eines Peers auf |
| Mehrheit verloren | Commits 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.