4 votes

Algorithme de consensus : que se passera-t-il si un cluster impair devient pair en raison d'une défaillance de nœud ?

L'algorithme de consensus (par exemple, raft) nécessite que le cluster contienne un nombre impair de nœuds pour éviter le problème du « split-brain ».

Disons que j'ai un cluster de 5 nœuds, que se passera-t-il si un seul nœud échoue ? Le cluster a maintenant 4 nœuds, ce qui enfreint la règle du nombre impair, le cluster continuera-t-il à bien fonctionner ?

Une solution est de supprimer un nœud supplémentaire pour que le cluster ne contienne que 3 nœuds, mais que se passera-t-il si le nœud précédemment défaillant revient ? alors le cluster aura à nouveau 4 nœuds, et nous devrons ramener le nœud précédemment supprimé pour que le cluster soit impair.

Les implémentations de l'algorithme de consensus gèrent-elles automatiquement ce problème, ou dois-je le faire dans le code de mon application (par exemple, supprimer un nœud) ?

8voto

msantl Points 311

Oui, le cluster continuera de fonctionner normalement. Un cluster de N noeuds, et si N est impair (N = 2k + 1), peut gérer k pannes de noeuds. Tant qu'une majorité de noeuds est en vie, il peut fonctionner normalement. Si un noeud échoue, et que nous avons encore la majorité, tout va bien. Seulement lorsque vous perdez la majorité des noeuds, vous avez un problème.

Il n'y a aucune raison de forcer le cluster à avoir un nombre impair de noeuds, et les implémentations ne considèrent pas cela comme un problème et ne le gèrent donc pas (supprimer des noeuds). Vous pouvez exécuter un algorithme de consensus sur un nombre pair de noeuds, mais cela a généralement plus de sens de le faire de façon impaire.

Le cluster de 3 noeuds peut gérer 1 panne de noeud (la majorité est de 2 noeuds).
Le cluster de 4 noeuds peut gérer 1 panne de noeud (la majorité est de 3 noeuds).

Le cluster de 5 noeuds peut gérer 2 pannes de noeuds (la majorité est de 3 noeuds).
Le cluster de 6 noeuds peut gérer 2 pannes de noeuds (la majorité est de 4 noeuds).

J'espère que cela rend plus clair pourquoi il est plus logique d'avoir une taille de cluster impaire, car il peut gérer le même nombre de pannes de noeuds avec moins de noeuds dans le cluster.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X