====== HA-CLUSTER ====== //**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 //cluster// en **mode //actif/passif//**. ===== 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 : apt install heartbeat ===== Configuration du service ===== ==== 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/ **//). Ces fichiers peuvent être à créer. * //**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 ==== Procédure ==== La configuration doit être identique sur tous les membres du cluster. On pourra configurer une machine et recopier les fichiers sur l'autre. La démarche est la suivante : - Installer le service - Créer et configurer le fichier **//ha.cf//** - Enregistrer les associations [nom des nœuds / IP] dans le fichier **// /etc/hosts//** - 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//** ==== Syntaxe du fichier ha.cf ==== # 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 # 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 Aide Paramétrage: [[http://www.foulquier.info/tutoriaux/mise-en-place-dun-cluster-heartbeat-apache]] ==== Fichier /etc/hosts ==== Le nom des noeuds à enregistrer dans la clause //node// est celui de la machine que l'on peut consulter en tapant la commande sur chaque nœud : hostname 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. On ne supprimera pas les informations existantes dans ce fichier. La syntaxe ressemblera à cela .... # à ajouter après les lignes existantes #*******Penser à adapter les valeurs exemple ******** 172.30.0.199 srvMaitre 172.30.0.200 srvSecondaire ==== Syntaxe du fichier haresources ==== IPaddr:://: Le fichier //**haresources**// définit les éléments suivants : * **** : 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**// * **/** : 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 * **** : nom de la carte réseau qui possèdera l'adresse virtuelle (par exemple //eth0//) * **** : numéro de l'interface virtuelle qui possèdera l'IP virtuelle du //cluster// qui apparaîtra sous la forme //eth0:1// par exemple * **** : //**heartbeat**// peut gérer de multiples services ; on les notera à la suite, séparés par des espaces __Exemple__ (valeurs à adapter) : srvMaitre IPaddr::172.30.0.201/24/eth0:0 apache2 mysql ==== 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__ auth L' pourra être //**md5**// (mal sécurisé) ou //**sha1**//. Exemple : auth 2 2 sha1 textCQr1T3 __Paramétrage des droits sur le fichier authkeys__ On modifiera les droits d'accès pour limiter la lecture du contenu au compte //root//. chmod 600 /etc/ha.d/authkeys