LINUX:Pacemaker - ISCSI en Failover
→ retour au menu de la Haute disponibilité
But
Si à la configuration précédente, nous ajoutons un client Initiator, nous pouvons passer à une installation en Failover utilisant des disques ISCSI. Cette configuration peut être facilement étendue au niveau des clients ISCSI de fonctionnalités de services WEB et de messagerie comme exposé dans l'article sur les Serveurs en Failover.
Matériel et adressage IP
Dans notre exemple, nous utilisons deux serveurs ("target") et deux clients ("initiator"). Le schéma ci-dessous nous montre l'adressage IP et le nom de ces quatre machines. En outre pour mettre la fonction Failover, une adresse IP virtuelle est ajoutée. Elle passera d'un client ISCSI à l'autre.
Prérequis
Configurations de base
En premier, les Prérequis doivent être effectués.
Fichier "hosts"
Sur chaque machine du cluster, on ajoute un nom aux différentes adresses réseaux. On le fait en local dans le fichier "/etc/hosts" suivant le schéma ci-dessus. Son contenu devient:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.71 sv1.home.dom 192.168.1.72 sv2.home.dom 192.168.1.73 cl1.home.dom 192.168.1.74 cl2.home.dom 192.168.1.75 cluster.home.dom # serveur mail 192.168.1.110 servermail.home.dom home.dom
ISCSI
Nous nous baserons sur la configuration de l'article sur ISCSI à part qu'on double le client Initiator. Mais les services "tgtd.service" sur les serveurs Target ne sont pas lancés et les services "iscsid.service" ainsi que les montages des disques ISCSI "/datab" et "/datac" (fichier "/etc/fstab") sur les clients Initiator ne sont pas lancés. C'est Pacemaker qui s'en chargera.
Configuration de base
La Configuration de base de Pacemaker doit être effectuée avec quelques modifications car nous avons quatre machines dans le cluster au lieu de deux. Quelques modifications seront apportées ensuite. Nous allons passer rapidement en revue ces opérations.
Opérations locales
Sur chaque machine:
- le mot de passe de l'utilisateur "hacluster" est à implémenter. "Chasse4321Eau" pour mémoire.
- le service "pcsd.service" est à configurer et est lancé.
Initialisation du cluster
Pour initialiser le cluster, on effectue ces opérations sur une seule machine du cluster:
pcs host auth sv1.home.dom sv2.home.dom cl1.home.dom cl2.home.dom -u hacluster -p Chasse4321Eau pcs cluster setup fo_cluster \ sv1.home.dom addr=192.168.1.71 sv2.home.dom addr=192.168.1.72 cl1.home.dom addr=192.168.1.73 cl2.home.dom addr=192.168.1.74 \ transport knet ip_version=ipv4 link transport=udp mcastport=5420
Calcul du quorum
Si un des deux serveurs Target est indisponible, le disque SCSI sur le client Initiator actif doit être arrêté pour éviter tout blocage et si ce disque est indisponible, des fonctions du client sont aussi perturbées. L'ensemble du système est à arrêter. Par contre, si un des clients est arrêté, les services basculent sur l'autre client ISCSI et tout le système continue à fonctionner.
Ce problème se résume au calcul du quorum.
Par défaut, chaque machine a un vote; ce qui nous fait au total, quatre votes disponibles.
Un autre paramètre important est le nombre de votes souhaités ou "expected_votes". Par défaut il correspond au nombre total de votes apportés par les machines du cluster.
Le "quorum" se calcule de la façon suivante. On divise le paramètre "expected_votes" par deux; on en prend la partie entière auquel on ajoute une unité.
Dans notre situation, le quorum:
(4 votes)/2 + 1 = 3
Or nous sommes en présence d'une situation mixte; Si un des serveurs ISCSI s'arrête, les ressources de Pacemaker s'arrêtent et si un des clients ISCSI s'arrête, les ressources de Pacemaker se transfèrent sur l'autre client ISCSI.
Pour y arriver, nous allons passer par deux étapes:
- nous attribuons 2 votes à chaque serveur ISCSI
- nous attribuons 1 vote à chaque client ISCSI
- le nombre de votes souhaités est mis à 8
Le calcul du quorum devient:
(8 votes souhaités)/2 + 1 = 5
Voyons les deux cas de figure:
- Si un client ISCSI s'arrête, le nombre total de votes est de 5 (2*2 votes des serveurs ISCSI + 1 vote de l'autre client ISCSI). Le quorum est maintenu et les ressources de Pacemaker basculent vers l'autre client ISCSI.
- Si par contre un serveur ISCSI s'arrête, le nombre total de votes est de 4 (2 votes de l'autre serveur ISCSI + 2*1 votes des clients ISCSI). Le quorum n'est pas atteint et les ressources de Pacemaker s'arrêtent.
Modification de la configuration de Corosync
Pour atteindre ce quorum, il faut adapter sur chaque machine du cluster, le fichier "/etc/corosync/corosync.conf". La dernière commande a créé ce fichier. Dans la section "quorum", on va ajouter l'option "expected_votes: 8" et dans la sous-section "node" des serveurs ISCSI, on ajoute l'option "quorum_votes: 2".
Ce fichier devient:
totem { version: 2 cluster_name: fo_cluster transport: knet ip_version: ipv4 crypto_cipher: aes256 crypto_hash: sha256 cluster_uuid: 678de5645057479a8b2c99180f3b3133 interface { knet_transport: udp linknumber: 0 mcastport: 5420 } } nodelist { node { ring0_addr: 192.168.1.71 name: sv1.home.dom nodeid: 1 quorum_votes: 2 } node { ring0_addr: 192.168.1.72 name: sv2.home.dom nodeid: 2 quorum_votes: 2 } node { ring0_addr: 192.168.1.73 name: cl1.home.dom nodeid: 3 quorum_votes: 1 } node { ring0_addr: 192.168.1.74 name: cl2.home.dom nodeid: 4 quorum_votes: 1 } } quorum { provider: corosync_votequorum expected_votes: 8 } logging { to_logfile: yes logfile: /var/log/cluster/corosync.log to_syslog: yes timestamp: on }
Lancement du cluster
Pour lancer l'ensemble, on exécute les commandes suivantes à partir d'une seule machine:
pcs cluster enable --all pcs cluster start --all
On n'oublie pas d'activer les trois services sur les quatres machines du cluster:
systemctl enable pcsd.service corosync.service pacemaker.service
Fin de la configuration
Par la même occasion exécutez la fin de la configuration de base:
pcs property set stonith-enabled=false pcs property set no-quorum-policy=stop
La dernière spécifie que si le quorum n'est pas atteint, les ressources de Pacemaker sont arrêtées.
Vérification du quorum
Sur chaque machine, exécutez cette commande:
pcs status corosync
qui donne:
Quorum information ------------------ Date: Wed Mar 1 17:11:22 2023 Quorum provider: corosync_votequorum Nodes: 4 Node ID: 1 Ring ID: 1.7d Quorate: Yes Votequorum information ---------------------- Expected votes: 8 Highest expected: 8 Total votes: 6 Quorum: 5 Flags: Quorate Membership information ---------------------- Nodeid Votes Name 1 2 sv1.home.dom (local) 2 2 sv2.home.dom 3 1 cl1.home.dom 4 1 cl2.home.dom
→ retour au menu de la Haute disponibilité