Cluster cérébral divisé
Cela se produit lorsqu'un ou plusieurs nœuds d'un cluster subissent une déconnexion des autres nœuds, entraînant la formation de sous-clusters ou d'un cluster cérébral divisé.
Essentiellement, Split-Brain est une terminologie basée sur une analogie avec le syndrome médical de Split-Brain. Cette condition décrit l'incohérence des données ou leur disponibilité qui peut provenir de la maintenance de deux ensembles de données distincts dont la portée se chevauche. Cela peut être dû aux serveurs dans une conception de réseau ou à une condition de panne qui peut être causée par une mauvaise communication et une désynchronisation des données entre les serveurs correspondants du réseau. Ceci est également communément appelé partition réseau.
Depuis que NCache est également un cache distribué pouvant comprendre plusieurs nœuds et clusters, l'apparition d'un cluster Split-Brain est également une possibilité avec NCache.
Lorsqu’un Split-Brain se produit, il est possible que des sous-groupes se forment. Par conséquent, l'un des sous-clusters doit être supprimé pour garantir que tous les clients sont redirigés vers un cluster sain. Étant donné que la suppression d'un sous-cluster signifie que des données seront perdues, le sous-cluster à supprimer est sélectionné selon les critères suivants :
- Dans le cas où les sous-clusters sont de tailles différentes, le sous-cluster avec le moins de nœuds sera supprimé. Cela permet de garantir une perte de données minimale, car le cluster plus petit contiendra moins de données.
- Si la taille des clusters est la même, le sous-cluster dont le nœud coordinateur a l'adresse IP la plus élevée sera supprimé. Par exemple, les adresses IP des nœuds coordinateurs des sous-clusters A et B sont respectivement 20.200.20.38 et 20.200.20.40. Dans ce cas, le sous-cluster avec l'IP du nœud coordinateur 20.200.20.40 sera supprimé.
Un Split-Brain peut représenter des problèmes d’incohérence ou de disponibilité des données résultant de la maintenance de deux ensembles de données distincts dont la portée se chevauche. En outre, cela peut entraîner des problèmes importants et poser une situation désastreuse pour l’administrateur. Pour cette raison, il est très important de s’assurer qu’il n’y a aucun risque de Split-Brain et de corruption des données.
Il existe des approches courantes pour traiter le problème de partition réseau après l'apparition d'un Split-Brain.
- Approche optimiste
- Approche pessimiste
Dans l'approche optimiste, le canal de communication entre les nœuds est simplement restauré tout en laissant les nœuds partitionnés fonctionner temporairement comme d'habitude. Ceci est fait en supposant que les nœuds se synchroniseront automatiquement dans un court laps de temps. Cette approche n’est peut-être qu’une solution de facilité car il existe toujours une menace de corruption des données dans le cas de Split-Brain.
D’un autre côté, l’approche pessimiste nécessite d’abandonner ou simplement de sacrifier la disponibilité des systèmes pour maintenir la cohérence des données. Sur détection d'un partitionnement du réseau, l'accès aux sous-partitions est limité. Ceci est fait pour garantir la cohérence des données. Dans ce cas, pour éviter les divergences d'historique, un seul composant peut continuer à effectuer des requêtes de lecture/écriture au stockage.
Gestion du cluster Split-Brain via NCache
Lorsqu'un Split-Brain se produit, les nœuds du cluster du réseau sont soumis à une série de vérifications avant de prendre des décisions importantes, telles que les nœuds qui doivent être arrêtés, redémarrés, reconnectés ou supprimés du réseau. NCache fournit une fonctionnalité appelée Split-Brain Auto-Recovery, qui est désactivée par défaut. Cependant, il peut être activé en fonction de la sensibilité des données et des exigences de l'utilisateur au cas où un Split-Brain se produirait sur le réseau.
NCache propose cette fonctionnalité uniquement pour la topologie Partition de réplication. Pour comprendre cela en profondeur, examinons la connectivité du cluster, la topologie Partition-Replica et les scénarios derrière la déconnexion des nœuds.
Connectivité du cluster
Deux nœuds ou plus peuvent se connecter et travailler ensemble pour former un cluster. Chaque nœud du cluster est appelé membre. Un cluster dans NCache peut être considéré comme un canal de groupe dans lequel les membres peuvent se parler en envoyant ou en recevant des messages. Un cluster est toujours formé dans une topologie maillée, ce qui signifie que tous les nœuds sont interconnectés.
Chaque cluster comprend un nœud coordinateur et les nœuds non-coordonnateurs ou participants restants. Le nœud coordinateur est le nœud le plus ancien, c'est-à-dire le nœud qui a démarré en premier et qui est responsable de la plupart des tâches, telles que l'ajout ou la suppression de nœuds. Chaque fois qu'un nœud est ajouté ou supprimé du cluster, il en informe le nœud coordinateur, qui gère le reste des opérations pour maintenir un environnement connectable dans le cluster. Les autres tâches exécutées par le nœud coordinateur incluent la distribution de compartiments, le déclenchement du chargeur de cache et la maintenance des connexions.
Un cluster peut être catégorisé comme suit :
- Cluster entièrement connecté
- Cluster partiellement connecté
- Cluster arrêté
Grappe entièrement connectée
Un cluster est dit être dans un état entièrement connecté s’il a n nœuds et que chaque nœud du cluster a n-1 connexions saines avec tous les autres nœuds. Dans cet état, tous les nœuds peuvent communiquer entre eux, ils sont donc dans un état stable.
La figure suivante montre un cluster entièrement connecté dans un état idéal.
Si un cluster est dans un état entièrement connecté et qu'un nœud rejoint le cluster, il devient une partie/membre du cluster correspondant. Si un nœud quitte le cluster ou est partiellement déconnecté, avec un ou plusieurs nœuds membres, il forme un cluster séparé. Tous les nœuds existants sont informés de ce changement dans le réseau par le nœud coordinateur. Cela déclenche le transfert d'état, qui vise à équilibrer les données dans le nouveau cluster. En fonction de la topologie, les connexions client sont réparties entre de nouveaux nœuds.
Connectivité client
Si un cluster est dans un état sain, dans la topologie PoR, tous les clients sont connectés à tous les nœuds du cluster. Dans le cas de Split-Brain, qui concerne le Partition-Replica (PoR), les clients sont connectés à tous les nœuds du cluster. Si un nœud rejoint, les clients se connectent également au nouveau nœud. Si un nœud quitte, le client peut continuer à effectuer les opérations.
Arrêté
Si un nœud quitte correctement le cluster, c'est à dire s'il a été arrêté et qu'il n'y a pas de processus hôte pour le nœud correspondant, alors le nœud est considéré comme arrêté (concernant le reste du cluster). L'arrêt d'un nœud entraîne un transfert d'état, qui conduit à l'équilibrage des données. Ceci, à son tour, équilibre le nombre de clients entre le reste des nœuds. Toutefois, cette fonctionnalité est spécifique à la topologie REP.
Connectivité client
Les clients qui étaient précédemment connectés au nœud arrêté se connecteront désormais aux autres nœuds connectés.
Cluster partiellement connecté
Il peut arriver qu'un ou plusieurs nœuds d'un cluster ne puissent pas se connecter à d'autres nœuds, par exemple en raison d'un problème de réseau.
Supposons qu'il existe un cluster à 3 nœuds entièrement connecté. Si un problème survient tel que deux des trois nœuds peuvent toujours communiquer entre eux ; cependant, le troisième nœud ne peut pas atteindre le réseau, alors les deux nœuds connectés formeront un seul sous-cluster, disons le sous-cluster 1. Le troisième nœud déconnecté formera un sous-cluster indépendant, disons le sous-cluster 2. Chaque sous-cluster -cluster aura désormais ses nœuds coordinateurs. Dans cette situation, le cluster perd son état de connexion idéal. Il existe désormais deux clusters, qui ne peuvent pas communiquer entre eux, mais sont entièrement connectés au sein de leurs sous-clusters. Cet état est appelé connectivité partielle d'un cluster, comme le montre la figure ci-dessous.
Dans le scénario susmentionné, les nœuds du sous-cluster 1 et du sous-cluster 2 sont tels que le sous-cluster 1 est entièrement connecté à lui-même et entièrement déconnecté du sous-cluster 2, et vice versa.
Dans un cas plus complexe, supposons un cluster à 5 nœuds dans lequel un problème de réseau amène le nœud 5 à rompre sa connexion avec tous les nœuds sauf le nœud 3. Dans ce cas, le nœud 3 est toujours connecté au nœud 5 et le nœud 3 est toujours connecté. connecté au nœud 1, au nœud 2 et au nœud 4 également. Désormais, le nœud 3 est un membre commun au sous-cluster 1 (nœud 1, nœud 4 et nœud 2) et au sous-cluster 2 (nœud 5).
La figure suivante illustre la connectivité partielle en cours.
Chaque cluster informera le nœud 3 en lui demandant de maintenir sa connexion à un seul cluster. À la réception des notifications, le nœud 3 évaluera d'où proviennent les notifications et se connectera au sous-cluster contenant le nœud le plus ancien, avant que la déconnexion du cluster principal n'ait lieu, qui dans ce scénario est le sous-cluster 2.
La figure suivante affiche la connectivité partielle d'un cluster dans son état final.
Nouvelles tentatives de connexion
Chaque opération de cluster a une valeur de délai d'attente, qui est de 60 secondes par défaut et est configurable dans le NCache Centre de gestion. Chaque cluster a des tentatives de connexion (valeur par défaut 2) et un intervalle de nouvelle tentative (valeur par défaut 2). Ces deux valeurs sont également configurables dans le NCache Centre de gestion.
Chaque fois qu'une connexion de nœud est interrompue à partir d'un cluster, le nœud coordinateur dominant tente d'abord de rétablir la connexion. Si la nouvelle tentative aboutit à une connexion réussie et qu'aucun délai d'attente ne se produit, le cluster passe à un état normal et entièrement connecté. Cependant, si la connexion ne peut pas être rétablie pour une raison quelconque, alors tous les nœuds du cluster forment plusieurs sous-clusters, ce qui entraîne une connectivité partielle.
Rejoindre un nouveau nœud
Si un cluster est dans un état partiellement connecté, tout ajout d'un nouveau nœud sera effectué dans la partie du sous-cluster qui détient la connectivité appropriée dans le réseau. S'il est connecté aux deux sous-clusters, il rejoindra le sous-cluster de plus grande taille, c'est-à-dire le sous-cluster qui a le plus grand nombre de nœuds. Si un nombre de nœuds est égal, il comparera les IP avec le nœud Coordinateur et rejoindra le Coordinateur avec une IP plus grande.
Connectivité client
En cas de connectivité partielle, le cluster étant dans un environnement instable, les applications clientes peuvent subir des comportements brusques et incertains. Si un ordinateur client est connecté aux deux sous-clusters, certains clients peuvent se connecter au sous-cluster 1 et d'autres au sous-cluster 2. Il est possible que la connectivité réseau soit telle que tous les clients se connectent à un sous-cluster. cluster uniquement. Il n’y aura pas non plus de cohérence des données dans le cluster.
Correction d'un problème de connectivité partielle
Pour résoudre le problème de Split-Brain, NCache offre des options de récupération manuelle et automatique, comme expliqué ci-dessous.
Résolution manuelle
Lorsqu'un cluster passe dans un état partiellement connecté, il doit être redémarré. La première recommandation est de tenter d’identifier et de résoudre le problème qui l’a amené à se trouver dans cet état. Si cela est dû à des problèmes de réseau, essayez de stabiliser le réseau. Après avoir résolu les problèmes, fermez les nœuds créant un seul cluster et démarrez-les un par un.
Par exemple, considérons le cluster de la figure 3. On peut voir que le nœud 1, le nœud 2 et le nœud 4 sont entièrement connectés dans le sous-cluster1, tandis que le nœud 3 et le nœud 5 sont entièrement connectés dans le sous-cluster 2. Puisqu'un réseau Un problème a entraîné la création du sous-cluster 2, vous devez arrêter le nœud 3 et le nœud 5. Essayez de résoudre le problème à l'origine du problème du réseau. Une fois terminé, démarrez chaque nœud un par un. Les nœuds démarrés feront partie du sous-cluster1, qui se transformera ensuite en un cluster entièrement connecté.
Récupération automatique Split-Brain
Pour répondre aux besoins de Split-Brain, NCache fournit également une méthode automatique, qui est l'option Split-Brain Auto Recovery via le NCache Centre de gestion. Étant donné que les données peuvent être de différents types et avoir différents niveaux de sensibilité, cette option est désactivée par défaut. Il dépend entièrement de l'administrateur du NCache Centre de gestion s'il doit l'activer ou non selon ce qu'ils jugent nécessaire en fonction de la situation. Pour activer la récupération automatique Split-Brain pour les clusters, veuillez consulter Activation de la récupération automatique Split-Brain à l'aide de NCache Centre de gestion.
Voir aussi
Activer la récupération automatique Split-Brain à l'aide de NCache Centre de gestion
Configuration des paramètres du cluster de cache