Le cluster NSX Controller représente un système distribué évolutif, dans lequel un ensemble de rôles est attribué à chaque nœud de contrôleur pour définir le type de tâches que le nœud peut implémenter. Pour des raisons de résilience et de performance, les déploiements de VM de contrôleur doivent se faire sur trois hôtes distincts.
Le partitionnement est utilisé pour répartir les charges de travail entre les nœuds du cluster NSX Controller. Le partitionnement est l'action de diviser les charges de travail de NSX Controller en différentes partitions pour que chaque instance de NSX Controller possède une portion égale de travail.
Cela démontre comment des nœuds de contrôleur distincts agissent en tant que maître pour des entités données comme la commutation logique, le routage logique et d'autres services. Après qu'une instance maître du dispositif NSX Controller soit choisie pour un rôle, ce dispositif NSX Controller divise les différents routeurs et commutateurs logiques sur toutes les instances de NSX Controller disponibles dans un cluster.
Chaque case numérotée sur une partition représente des partitions que le maître utilise pour diviser les charges de travail. Le commutateur logique maître divise les commutateurs logiques en partitions et attribue ces partitions aux différentes instances du dispositif NSX Controller. Le maître des routeurs logiques divise aussi les routeurs logiques en partitions et attribue ces partitions aux différentes instances du dispositif NSX Controller.
Ces partitions sont attribuées aux différentes instances du dispositif NSX Controllerdans ce cluster. Le maître pour un rôle décide quelles instances du dispositif NSX Controller sont attribuées à quelle partition. Si une requête arrive sur la partition du routeur 3, il est indiqué à la partition de se connecter à la troisième instance du dispositif NSX Controller. Si une requête arrive sur la partition du commutateur logique 2, cette requête est traitée par la deuxième instance du dispositif NSX Controller.
Lorsqu'une des instances du dispositif NSX Controller dans un cluster échoue, les maîtres pour les rôles redistribuent les partitions aux clusters disponibles restants. Un des nœuds de contrôleur est choisi comme maître pour chaque rôle. Le maître est responsable d'allouer les partitions aux nœuds de contrôleur individuels, de déterminer lorsqu'un nœud échoue et de réattribuer les partitions aux autres nœuds. Le maître informe aussi les hôtes ESXi de l'échec du nœud du cluster.
L'élection du maître pour chaque rôle requiert un vote majoritaire de tous les nœuds actifs et inactifs dans le cluster. C'est la raison principale pour laquelle un cluster de contrôleurs doit toujours être déployé avec un nombre impair de nœuds.
ZooKeeper
ZooKeeper est une architecture client/serveur qui est responsable du mécanisme de cluster NSX Controller. Le cluster de contrôleur est découvert et créé à l'aide de Zookeeper. Lorsque le cluster se présente, cela signifie littéralement que ZooKeeper arrive entre tous les nœuds. Les nœuds de ZooKeeper passent par un processus d'élection pour former le cluster de contrôle. Le cluster doit comporter un nœud maître ZooKeeper. Pour ce faire, il faut procéder à une élection inter-nœud.
Lorsqu'un nouveau nœud de contrôleur est créé, le dispositif NSX Manager propage les informations sur le nœud au cluster actif, avec l'IP et l'ID du nœud. En tant que tel, chaque nœud connaît le nombre total de nœuds disponibles pour la mise en cluster. Pendant l'élection maître ZooKeeper, chaque nœud diffuse un vote pour choisir un nœud maître. L'élection est redéclenchée jusqu'à ce qu'un nœud obtienne la majorité des votes. Par exemple, dans un cluster à trois nœuds, le maître doit avoir reçu au moins deux des votes.
- Lorsque le premier contrôleur est déployé, c'est un cas spécial et le premier contrôleur devient le maître. À ce titre, lors du déploiement des contrôleurs, le premier nœud doit achever son déploiement avant que d'autres nœuds soient ajoutés.
- Lors de l'ajout du deuxième contrôleur, c'est aussi un cas spécial, car le nombre de nœuds est pair à ce moment.
- Lorsque le troisième nœud est ajouté, le cluster atteint un état stable pris en charge.
ZooKeeper peut supporter une seule défaillance à la fois. Cela signifie que si un nœud de contrôleur tombe en panne, cela doit être récupéré avant tout autre échec. Sinon, il peut y avoir des problèmes avec le fractionnement du cluster.
Gestionnaire de domaine du plan de contrôle central (CCP)
C'est la couche au-dessus de ZooKeeper qui fournit la configuration pour ZooKeeper sur tous les nœuds pour démarrer. Le gestionnaire de domaine met à jour la configuration entre tous les nœuds dans le cluster, puis lance un appel de procédure à distance pour démarrer le processus ZooKeeper.
Le gestionnaire de domaine est responsable du démarrage de tous les domaines. Pour rejoindre le cluster, le domaine CCP communique avec le domaine CCP sur d'autres machines. Le composant du domaine CCP qui aide à l'initialisation du cluster est zk-cluster-bootstrap.
Relation du contrôleur avec les autres composants
Le cluster de contrôleurs est chargé d'entretenir et de fournir des informations sur les commutateurs logiques, les routeurs logiques et les VTEP aux hôtes ESXi.
Lorsqu'un commutateur logique est créé, les nœuds du contrôleur à l'intérieur du cluster déterminent quel nœud sera maître ou propriétaire pour ce commutateur logique. Il en est de même lorsqu'un routeur logique est ajouté.
Une fois que la propriété est définie pour un commutateur logique ou un routeur logique, le nœud envoie cette propriété aux hôtes ESXi qui appartiennent à cette zone de transport du commutateur ou du routeur. L'intégralité de l'élection de la propriété et la propagation des informations sur la propriété aux hôtes s'appellent le « partitionnement ». Remarquez que la propriété implique que le nœud est responsable de toutes les opérations liées à NSX pour ce commutateur logique ou ce routeur logique. Les autres nœuds n'effectueront pas d'opération pour ce commutateur logique.
Comme seul un propriétaire doit être la source de vérité pour un commutateur et un routeur logiques, à chaque fois que le cluster de contrôleurs est fractionné de sorte qu'au moins deux nœuds sont élus comme propriétaires pour un commutateur ou un routeur logiques, chaque hôte du réseau peut avoir des informations différentes concernant la source de vérité de ce commutateur ou routeur logique. Si cela se produit, il y aura une indisponibilité du réseau car les opérations de contrôle réseau et de plan de données peuvent avoir uniquement qu'une source de vérité.
Si un nœud de contrôleur est défaillant, les nœuds restants dans le cluster réexécuteront le partitionnement pour déterminer la propriété du commutateur logique et du routage logique.