====== 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