Afficher la pageAnciennes révisionsLiens de retourAjouter au livre.Exporter en PDFExportation ODTImport Word DocumentHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== HA-CLUSTER ====== =====Principes===== //**HA-Cluster (high-availability cluster)**// est un gestionnaire de //grappes// sous Linux qui permet d'assurer les messages de synchronisation entre machines participant au **//cluster//** grâce à l'outil //**heartbeat**// et d'offrir des fonctions de partage de ressources grâce à un gestionnaire dédié (comme par exemple l'outil //**[[pacemaker|Pacemaker]]**//, non traité ici). Nous traiterons ici uniquement du paramétrage de l'outil //**heartbeat**// qui permet du **//clustering//** en **<wrap em>mode //actif/passif//</wrap>**. Le **cluster** Heartbeat assure une <wrap em>tolérance de panne</wrap> en assurant la bascule automatique vers un autre serveur disposant des mêmes services et données __**Principe**__ * Deux (ou plusieurs) serveurs participent ensemble au **cluster**. Ils possèdent les mêmes services et données (par exemple une application Web) * Un serveur est **actif** à un instant donné (c'est à dire au contact des utilisateurs), l'autre est en fonction mais pas accessible aux utilisateurs (il est **passif**). * Le **cluster** possède une **IP virtuelle** qui est connue des utilisateurs : elle est présente sur le serveur **actif** * les serveurs s'échangent un signal permanent (par exemple un ping) comme un **battement de coeur / heartbeat ** pour signaler leur activité * Si le signal est perdu, le serveur **passif** active l'**ip virtuelle** du **cluster** sur sa carte réseau (il devient donc **actif**) ===== Installation du service ===== L'outil //**heartbeat**// fait partie des paquetages supportés par //Debian// et //Ubuntu//. Après une mise à jour (//update/upgrade//) de la machine, on procèdera à l'installation comme suit : <code lscript>apt install heartbeat</code> ===== Configuration du service ===== ==== Procédure ==== La <wrap em>configuration doit être identique</wrap> sur tous les membres du cluster. On pourra configurer une machine et recopier les fichiers sur l'autre. La démarche est la suivante : <WRAP left round box 75%> - Installer le service - - Enregistrer les associations [nom des nœuds / IP] dans le fichier **// /etc/hosts//** - se placer dans le dossier de configuration **//cd /etc/heartbeat/ //** - Créer et configurer le fichier **//ha.cf//** - Créer et configurer le fichier **//haresources//** - Créer et configurer le fichier **//authkeys//** et en restreindre l'accès - Répliquer la configuration sur les autres membres (en pensant à adapter le fichier **//hosts//** sur chaque machine) - Relancer le service **//heartbeat//** </WRAP> ==== Les fichiers ==== La configuration de //**heartbeat**// passe par le paramétrage de 3 fichiers (présents dans le dossier //** /etc/heartbeat/** ou **/etc/ha.d/ **//). <wrap em>Ces fichiers peuvent être à créer</wrap>. * //**ha.cf**// : il définit la liste des équipements (on parle de **//nœuds//** ou **//node//**) concernés par le cluster et le mode de gestion de la reprise sur incident * //**haresources**// : il indique **dans l'ordre** : * la machine étant //maître// dans le cluster * l'adresse IP virtuelle active sur le nœud actif avec son masque * le nom de la carte réseau virtuelle * le ou les services activés dans le cluster. * **//authkeys//** : il définit les éléments de sécurité permettant aux membres du cluster d'entrer en communication ===== Interventions dans les fichiers ===== ==== Fichier /etc/hosts ==== <WRAP right round tip 30%> Le <wrap em>nom des noeuds</wrap> à enregistrer dans la clause<wrap em> //node//</wrap> et dans le fichier **hosts** est celui de la machine que l'on peut consulter en tapant la commande sur chaque nœud : <code lscript>hostname</code> </WRAP> Les nœuds participant au cluster doivent tous être renseignés dans le fichier //**/etc/hosts**// avec l'adresse IP de la carte réseau sur laquelle ils seront contactés. <code lscript>nano /etc/hosts</code> <wrap em>On ne supprimera pas les informations existantes dans ce fichier</wrap>. La syntaxe ressemblera à cela <code apache> .... # à ajouter après les lignes existantes <ip maître> <noeudMaître> <ip secondaire> <noeudSecondaire> </code> <WRAP center round info 100%> __Exemple__ <code lscript> #*******Penser à adapter les valeurs exemple ******** 172.28.10.110 B3-WEB110 172.28.10.111 B3-WEB111 </code> </WRAP> <WRAP center round important 100%> Pour la suite, on se placera dans le dossier de Heartbeat où tous les fichiers doivent être créés. <code lscript>cd /etc/heartbeat</code> </WRAP> ==== Syntaxe du fichier ha.cf ==== Aide Paramétrage: [[https://blog.foulquier.info/tutoriels/systeme/mise-en-place-dun-cluster-heartbeat-apache]] <code apache> # mode de gestion des journaux d'activité logfacility local0 # temps entre deux interrogations secondaire/maitre keepalive 2 # temps au bout duquel le maître ou le secondaire est considéré hors jeu deadtime 10 # mode de synchronisation maître/secondaire (ici en broadcast sur la carte eth0) bcast eth0 # liste des noeuds participant au cluster (l'ordre dans lequel on les place définit la hiérarchie) node <noeudMaitre> <noeudSecondaire> # mode de gestion du retour à la normale auto_failback off # commandes pour gérer les actions en cas de défaillance respawn hacluster /usr/libexec/heartbeat/ipfail apiauth ipfail gid=haclient uid=hacluster </code> <WRAP center round info 100%> __Exemple pour la ligne **node** :__ <code lscript>node B3-WEB110 B3-WEB111</code> </WRAP> ==== Syntaxe du fichier haresources ==== <code apache> <noeudMaitre> IPaddr::<ip_virtuelle_cluster>/<masque>/<carte_reseau>:<numVirtuel> <service(s)_à_inclure> </code> Le fichier //**haresources**// définit les éléments suivants : * **<noeudMaitre>** : c'est le nom de la machine qui joue le rôle principal. Le nom doit être celui de la machine et être enregistré dans le fichier //**/etc/hosts**// * **<ip_virtuelle_cluster>/<masque>** : il s'agit d'une adresse IP (et de son masque) active sur l'un des //noeuds// (le maître s'il est opérationnel) par lequel les postes consultent le ou les services du cluster * **<carte_reseau>** : nom de la carte réseau qui possèdera l'adresse virtuelle (par exemple //eth0//) * **<numVirtuel>** : numéro de l'interface virtuelle qui possèdera l'IP virtuelle du //cluster// qui apparaîtra sous la forme //eth0:1// par exemple * **<service(s)_a_inclure>** : //**heartbeat**// peut gérer de multiples services ; on les notera à la suite, séparés par des espaces <WRAP center round info 100%> __Exemple__ (valeurs à adapter) : <code apache> B3-WEB110 IPaddr::172.30.0.201/24/eth0:0 apache2 mysql </code> </WRAP> ==== Syntaxe du fichier authkeys ==== Le fichier //**authkeys**// contient les informations de sécurité permettant aux //noeuds// de se synchroniser. Il doit donc être protégé contre un accès à des utilisateurs autres que //root//. __Contenu du fichier__ <code apache2> auth <num_ligne> <num_ligne> <algorithme> <passphrase> </code> L'<algorithme> pourra être //**md5**// (mal sécurisé) ou //**sha1**//. <WRAP center round info 100%> Exemple (changer le mot de passe) : <code apache2> auth 2 2 sha1 textCQr1T3 </code> </WRAP> __Paramétrage des droits sur le fichier authkeys__ On modifiera les droits d'accès pour limiter la lecture du contenu au compte //root//. <code lscript>chmod 600 /etc/ha.d/authkeys</code> ha.txt Dernière modification : 2025/06/01 12:23de administrateur