Ticketing
Documentation

Paramètres Raft

ÉlémentValeur
Intervalle de battement de cœur250 ms
Timeout d'élection500-1000 ms — une nouvelle élection de leader démarre dans cette fenêtre après une panne du leader
Nombre de nœuds3 ou 5 (imposé au chargement de la configuration — tout autre nombre refuse de démarrer)
ID de nœudsa position (cluster_self) dans la liste cluster_peers — c'est pourquoi l'ordre de la liste doit être identique sur chaque nœud
Bootstrap500 ms après le démarrage, chaque nœud s'initialise avec le même membership — ignoré si le nœud rejoint un cluster déjà initialisé
Stockage du journalen mémoire (volatile) — un nœud redémarré récupère via la réplication ou un snapshot
Détection d'expiration de leasele leader vérifie toutes les 100 ms et valide Expire via consensus
Granularité du timeout waitle timeout d'attente (T) est aussi décidé sur ce même cycle de 100 ms — il peut arriver avec jusqu'à 100 ms de retard

Pourquoi 3 ou 5 nœuds

Un commit nécessite une majorité. Une configuration à nombre pair n'ajoute que du coût sans améliorer la tolérance aux pannes, le serveur la refuse donc.

Nombre de nœudsMajoritéPannes simultanées tolérées
220 — une seule panne arrête le cluster. Pas mieux que le mode simple
321
431 — identique à 3 nœuds, juste plus coûteux
532

Résumé du comportement en cas de panne

SituationComportement
Requête client vers un nœud non-leaderM (adresse du leader), ou E no_leader si le leader est inconnu
Panne du leadernouveau leader élu sous 500-1000 ms. Les requêtes pendant cette fenêtre reçoivent E no_leader → le client réessaie
Pendant le changement de leaderles requêtes d'acquisition en attente sont purgées avec M/E no_leader, et le client réessaie auprès du nouveau leader
Redémarrage d'un nœuddémarre avec un état vide → rattrape via la réplication du journal ou le snapshot d'un pair
Perte de la majoritéles commits deviennent impossibles → les écritures s'arrêtent (sécurité avant tout), reprise automatique une fois la majorité restaurée

Terminologie

  • Quorum — plus de la moitié de tous les nœuds (2 sur 3, ou 3 sur 5). Comme toute décision nécessite l'accord du quorum, deux groupes partitionnés ne peuvent jamais valider des décisions contradictoires en même temps.
  • Timeout d'élection (election timeout) — le temps qu'un suiveur attend sans battement de cœur avant de conclure que le leader est mort et de démarrer une élection. Randomisé par nœud pour réduire les candidatures simultanées.