Le logiciel de la grappe doit être configuré pour enregistrer chaque noeud en tant que membre de la grappe. Dans le cadre de cette configuration, vous pouvez également configurer des ressources d'isolement et STONITH (Shoot The Other Node In The Head) pour garantir la cohérence de la grappe.
IMPORTANT :Les procédures dans cette section utilisent les commandes rcopenais et openais, qui fonctionnent uniquement avec SLES 11 SP4. Pour une version SLES 12 SP2 ou ultérieure, utilisez la commande systemctl pacemaker.service.
Par exemple, pour la commande /etc/rc.d/openais start , utilisez la commande systemctl start pacemaker.service.
Utilisez la procédure suivante pour la configuration de la grappe :
Pour cette solution, vous devez utiliser des adresses IP privées pour les communications de grappe internes et appliquer la monodiffusion pour ne pas devoir demander d'adresse de multidiffusion à l'administrateur réseau. Vous devez également utiliser une cible iSCSI configurée sur la machine virtuelle SLES qui héberge déjà l'espace de stockage partagé pour servir de périphérique SBD (Split Brain Detection) à des fins d'isolement.
Configuration du périphérique SBD
Connectez-vous à storage03 et démarrez une session de console. Exécutez la commande suivante pour créer un fichier vide de la taille de votre choix :
dd if=/dev/zero of=/sbd count=<taille fichier> bs=<taille bit>
Par exemple, exécutez la commande suivante pour créer un fichier de 1 Mo rempli de zéros copiés à partir du pseudo-périphérique /dev/zero :
dd if=/dev/zero of=/sbd count=1024 bs=1024
Exécutez YaST à partir de la ligne de commande ou utilisez l'interface graphique : /sbin/yast
Sélectionnez Network Services (Services réseau) > iSCSI Target (Cible iSCSI).
Cliquez sur Cibles, puis sélectionnez la cible existante.
Sélectionnez Modifier. L'interface utilisateur propose une liste des numéros d'unité logique disponibles.
Cliquez sur Ajouter pour ajouter un numéro d'unité logique.
Laissez 2 comme numéro d'unité logique. Accédez à la boîte de dialogue Chemin d'accès, puis sélectionnez le fichier /sbd que vous avez créé.
Conservez les valeurs par défaut des autres options, puis cliquez sur OK, sur Suivant et une fois encore sur Suivant pour sélectionner les options d'authentification par défaut.
Cliquez sur Terminer pour quitter la configuration. Redémarrez les services si nécessaire. Quittez YaST.
REMARQUE :la procédure suivante nécessite que chaque noeud de grappe puisse résoudre le nom d'hôte de l'ensemble des noeuds de grappe (faute de quoi le fichier csync2 de synchronisation des services échouera). Si le DNS n'est pas configuré ou est indisponible, ajoutez des entrées pour chaque hôte au fichier /etc/hosts qui répertorie chaque adresse IP et son nom d'hôte (telles qu'elles sont signalées par la commande hostname). Veillez également à ne pas assigner de nom d'hôte à une adresse IP en boucle.
Procédez comme suit pour exposer une cible iSCSI pour le périphérique SBD sur le serveur à l'adresse IP 10.0.0.3 (storage03).
Configuration du noeud
Connectez-vous à un noeud de grappe (node01) et ouvrez une console :
Exécutez YaST.
Cliquez sur Network Services (Services réseau) > iSCSI Initiator (Initiateur iSCSI).
Sélectionnez Connected Targets (Cibles connectées), puis choisissez la cible iSCSI configurée ci-dessus.
Sélectionnez l'option Se déconnecter, puis déconnectez-vous de la cible.
Basculez vers l'onglet Discovered Targets (Cibles découvertes), sélectionnez Target (Cible), puis reconnectez-vous pour rafraîchir la liste des périphériques. Ne modifiez pas l'option de démarrage automatic (Automatique), et désélectionnez No Authentication (Pas d'authentification).
Sélectionnez OK pour quitter l'outil de l'initiateur iSCSI.
Ouvrez System (Système) > Partitioner (Partitionneur) et identifiez le périphérique SBD comme suit : 1MB IET-VIRTUAL-DISK. Il sera répertorié en tant que /dev/sdd ou une forme similaire (prenez-en note).
Quittez YaST.
Exécutez la commande ls -l /dev/disk/by-id/ et notez l'ID de périphérique lié au nom de périphérique situé ci-dessus.
(Conditionnel) Exécutez l'une des commandes suivantes :
Si vous utilisez SLES 11 SP4 :
sleha-init
Avec une version SLES 12 SP1 ou ultérieure :
ha-cluster-init
À l'invite de saisie de l'adresse réseau vers laquelle effectuer la liaison, spécifiez l'adresse IP de la carte réseau externe (172.16.0.1).
Acceptez le port et l'adresse de multidiffusion par défaut. Nous modifierons ces paramètres par la suite.
Entrez y pour activer SBD, puis spécifiez /dev/disk/by-id/<ID_périphérique>, sachant que <ID_périphérique> est l'ID situé ci-dessus (vous pouvez utiliser la touche Tab pour que le chemin soit fourni automatiquement).
(Conditionnel) Entrez N lorsque l'invite suivante s'affiche :
Do you wish to configure an administration IP? [y/N]
Pour configurer une adresse IP d'administration, indiquez l'adresse IP virtuelle pendant la Configuration des ressources
Suivez les étapes de l'assistant et veillez à ce qu'aucune erreur ne soit signalée.
Démarrez YaST.
Sélectionnez High Availability (Haute disponibilité) > Cluster (ou simplement Cluster sur certains systèmes).
Dans la zone à gauche, veillez à ce que l'option Communication Channels (Canaux de communication) soit sélectionnée.
Accédez à la première ligne de la configuration à l'aide de la touche Tab, puis modifiez la sélection udp en udpu (cette opération désactive la multidiffusion au profit de la monodiffusion).
Sélectionnez Add a Member Address (Ajouter une adresse de membre), spécifiez ce noeud (172.16.0.1), puis répétez l'opération pour ajouter les autres noeuds de grappe : 172.16.0.2.
Cliquez sur Terminer pour achever la configuration.
Quittez YaST.
Exécutez la commande /etc/rc.d/openais restart pour redémarrer les services de grappe avec le nouveau protocole de synchronisation.
Connectez-vous à chaque noeud de grappe supplémentaire (node02) et ouvrez une console :
Exécutez YaST.
Cliquez sur Network Services (Services réseau) > iSCSI Initiator (Initiateur iSCSI).
Sélectionnez Connected Targets (Cibles connectées), puis choisissez la cible iSCSI configurée ci-dessus.
Sélectionnez l'option Se déconnecter, puis déconnectez-vous de la cible.
Basculez vers l'onglet Discovered Targets (Cibles découvertes), sélectionnez Target (Cible), puis reconnectez-vous pour rafraîchir la liste des périphériques. Ne modifiez pas l'option de démarrage automatic (Automatique), et désélectionnez No Authentication (Pas d'authentification).
Sélectionnez OK pour quitter l'outil de l'initiateur iSCSI.
(Conditionnel) Exécutez l'une des commandes suivantes :
Si vous utilisez SLES 11 SP4 :
sleha-join
Avec une version SLES 12 SP1 ou ultérieure :
ha-cluster-join
Entrez l'adresse IP du premier noeud de grappe.
(Conditionnel) Si la grappe ne démarre pas correctement, procédez comme suit :
Exécutez la commande crm status pour vérifier si les nœuds sont reliés. Si les nœuds ne sont pas connectés, redémarrez tous les nœuds de la grappe.
Copiez manuellement le fichier /etc/corosync/corosync.conf de node01 vers node02 ou exécutez csync2 -x -v sur node01. Vous pouvez également paramétrer manuellement la grappe sur node02 à l'aide de YaST.
(Conditionnel) Si la commande csync2 -x -v que vous avez exécutée à l'étape 1 ne parvient pas à synchroniser l'ensemble des fichiers, procédez comme suit :
Effacez la base de données csync2 dans le répertoire/var/lib/csync2 de tous les nœuds.
Sur tous les nœuds, mettez à jour la base de données csync2 afin de la faire correspondre au système de fichiers, mais sans marquer aucun élément en vue de leur synchronisation avec d'autres serveurs :
csync2 -cIr /
Sur le nœud actif, procédez comme suit :
Trouvez toutes les différences entre les nœuds actifs et passifs, et marquez ces différences pour la synchronisation :
csync2 -TUXI
Réinitialisez la base de données pour forcer le nœud actif à ignorer les conflits :
csync2 -fr /
Démarrez la synchronisation sur tous les autres nœuds :
csync2 -xr /
Sur tous les nœuds, vérifiez que tous les fichiers sont synchronisés :
csync2 -T
Cette commande répertorie uniquement les fichiers qui ne sont pas synchronisés.
Exécutez la commande suivante sur node02 :
Pour SLES 11 SP4 :
/etc/rc.d/openais start
Pour une version SLES 12 SP1 ou ultérieure :
systemctl start pacemaker.service
(Conditionnel) Si le service xinetd n'ajoute pas correctement le nouveau service csync2, le script ne fonctionne pas correctement. Le service xinetd est nécessaire pour que l'autre noeud puisse synchroniser les fichiers de configuration de la grappe sur ce noeud. En cas d'erreurs du type csync2 run failed (échec de l'exécution de csync2), ce problème risque de vous concerner.
Pour résoudre ce problème, exécutez la commande kill -HUP `cat /var/run/xinetd.init.pid, puis réexécutez le script sleha-join.
Exécutez crm_mon sur chaque noeud de grappe afin de vérifier que la grappe s'exécute correctement. Vous pouvez également utiliser la console Web « hawk » pour vérifier la grappe. Le nom de connexion par défaut est hacluster et le mot de passe est linux.
(Conditionnel) En fonction de votre environnement, procédez comme suit pour modifier des paramètres supplémentaires :
Pour vous assurer qu'une défaillance sur un noeud d'une grappe à deux noeuds n'entraîne pas l'arrêt inopiné de l'ensemble de la grappe, définissez l'option de grappe globale no-quorum-policy sur ignore :
crm configure property no-quorum-policy=ignore
REMARQUE :si votre grappe comporte plusieurs noeuds, ne définissez pas cette option.
Pour être sûr que le gestionnaire des ressources autorise l'exécution des ressources et leur déplacement, définissez l'option de grappe globale default-resource-stickiness sur 1 :
crm configure property default-resource-stickiness=1.