====== 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 **mode //actif/passif//**.
Le **cluster** Heartbeat assure une tolérance de panne 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 :
apt install heartbeat
===== Configuration du service =====
==== 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 -
- 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//**
==== 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
===== Interventions dans les fichiers =====
==== Fichier /etc/hosts ====
Le nom des noeuds à enregistrer dans la clause //node// et dans le fichier **hosts** 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.
nano /etc/hosts
On ne supprimera pas les informations existantes dans ce fichier.
La syntaxe ressemblera à cela
....
# à ajouter après les lignes existantes
__Exemple__
#*******Penser à adapter les valeurs exemple ********
172.28.10.110 B3-WEB110
172.28.10.111 B3-WEB111
Pour la suite, on se placera dans le dossier de Heartbeat où tous les fichiers doivent être créés.
cd /etc/heartbeat
==== Syntaxe du fichier ha.cf ====
Aide Paramétrage:
[[https://blog.foulquier.info/tutoriels/systeme/mise-en-place-dun-cluster-heartbeat-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
# 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
__Exemple pour la ligne **node** :__
node B3-WEB110 B3-WEB111
==== 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) :
B3-WEB110 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 (changer le mot de passe) :
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