Archive — page conservée pour mémoire, non maintenue. Voir : Cluster haute disponibilité Linux avec Heartbeat
Heartbeat (anciennement connu sous le nom de LinuxHA et traduit par « battement cardiaque ») est un logiciel de haute disponibilité tournant sur n’importe quelle distribution Linux. Ce logiciel permet de gérer un cluster de haute disponibilité contenant au moins deux serveurs avec une configuration matérielle et logicielle identique du fait si un des deux serveurs présente un dysfonctionnement de son système, le second serveur prendra le relais du serveur primaire. Les entreprises de grande envergure ayant des serveurs tournant sous Linux adoptent cette solution réputée pour être fiable, performante et simple d’utilisation.
Le fonctionnement de Heartbeat est simple : Il repose sur un ou plusieurs clusters de haute disponibilité où il y a des serveurs appelés « Nœuds » (ou « nodes » en anglais). Il est obligatoire de désigner un nœud actif qui sera en fait le serveur maitre du cluster et au moins un nœud passif qui sera le serveur secondaire du cluster.
Les serveurs se « prennent le pouls » entre eux pour s’assurer que l’un répond à l’autre et vice-versa.
Si le nœud (ou serveur) passif remarque qu’il n’a plus le pouls du serveur actif, il prend illico le relais du serveur actif selon les services à exécuter en attendant qu’il « ressent de nouveau le pouls ».Une fois que le pouls du nœud actif a été ressenti de nouveau, il redonne le relais au sein du serveur primaire (si l’option est activée, voir plus bas dans la partie « Configuration de Heartbeat »).

3
Matériel utilisé
• Ordinateur servant d’hôte pour virtualiser les machines avec vmWare Workstation 7.1
• Deux serveurs tournant sous Ubuntu Server 12.04 avec une configuration matérielle et logicielle
strictement identique
• Un ordinateur client tournant sous Windows XP SP3
Réseau utilisé
• Serveur Ubuntu 1 : ETH0 en DHCP (adresse IP fournie par le routeur du FAI) et ETH1 :
172.16.15.100/16
• Serveur Ubuntu 2 :ETH0 en DHCP (adresse IP fournie par le routeur du FAI) et ETH1 :
172.16.15.150/16
• Client Windows XP : 172.16.15.1/16
• Interface virtuelle Heartbeat : 172.16.15.50 (circule entre les deux serveurs Ubuntu

Pré-requis pour l’installation
• Les serveurs Ubuntu doivent avoir une configuration matérielle et logicielle strictement identique
pour le bon fonctionnement de Heartbeat. Le service WEB Apache2 sera utilisé pour procéder
aux tests.
• Avoir les privilèges super-administrateur sur les serveurs (commande sudo –s pour faciliter les
taches)
• Prévoir plus de 50MO d’espace disque disponible pour l’installation sur les deux serveurs
• Accès à Internet pour les deux serveurs (sauf le client Windows XP)
• Client SSH PuTTy indispensable sur le client Windows XP pour faciliter la configuration du service
• Navigateur WEB à disposition (Internet Explorer suffira pour faire des tests) sur le client Windows
XP.
Installation de Heartbeat
INFO : l’ensemble des commandes et manipulations faites durant ce TP seront à dupliquer sur le
serveur Ubuntu 2. Dans ce document, les commandes seront généralement exécutées sur le serveur
Ubuntu 1.
Avant de procéder à l’installation de Heartbeat, il faut d’abord vérifier les noms d’hôtes des serveurs
(primordial pour l’attribution des nœuds dans le fichier de configuration qu’on évoquera plus bas
dans la documentation). Se connecter à distance sur le serveur Ubuntu 1 avec le logiciel PuTTy, et
renseigner les identifiants ayant les droits super-utilisateur pour faire des modifications dans les
fichiers de configuration et l’exécution de certains scripts (commande sudo –s). On ouvrira le fichier /etc/hosts avec un éditeur de texte en ligne de commande comme VIM ou NANO. Pour
notre cas, on utilisera NANO.
Exécuter la commande suivante : nano /etc/hosts . Le fichier hosts s’ouvre :
127.0.0.1 localhost
127.0.1.1 srv1
192.168.122.148 srv2
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Sur la partie où est indiquée l’adresse IP 127.0.1.1, on renseigne le nom d’hôte NETBIOS de notre serveur Ubuntu 1. On va choisir comme nom « srv1 ». On renseignera par la suite l’adresse IP du serveur de secours (nœud passif) 192.168.122.148 et on mettra comme non « srv2 ». Sauvegarder les modifications et quitter NANO. Faire les mêmes manipulations sur le serveur Ubuntu 2 en renseignant correctement les paramètres.
On peut vérifier par la suite le nom d’hôte complet des serveurs avec la commande hostname –f.
Afin de s’assurer qu’on disposera des dernières versions des paquets d’installation de Heartbeat, il faut exécuter la commande apt-get update.
Une fois que cette commande a été exécutée avec succès, on peut maintenant installer Heartbeat avec la commande apt install heartbeat. La durée de l’installation dépend de la vitesse de connexion Internet et de la puissance des serveurs.
Une fois que Heartbeat a été correctement installé sur les deux serveurs, on pourra procéder à la configuration de ce service.
On va procéder par la suite à la configuration du service de haute disponibilité. Aller dans le répertoire d’installation de Heartbeat avec la commande cd /etc/ha.d/
On vérifie le contenu du répertoire avec la commande ls.

Bien que Heartbeat se soit installé avec succès, trois fichiers manquants seront nécessaires pour le
bon fonctionnement du service. On devra créer les trois fichiers suivants : ha.cf, authkeys et
haresources.
On commence donc par créer le fichier ha.cf avec l’éditeur de texte NANO. On exécute la commande
nano ha.cf .
On renseigne comme indiqué dans les captures d’écran affichées ci-dessous les paramètres suivants
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 5
warntime 4
initdead 15
udpport 694
ucast enp1s0 192.168.122.7
ucast enp1s0 192.168.122.148
auto_failback on
node srv1 srv2
Une fois que ces paramètres ont étés correctement renseignés, sauvegarder et quitter ce fichier. Le contenu doit être strictement identique sur le serveur passif Ubuntu 2. On lui met les droits d’accès
de sorte que le service Heartbeat peut seulement l’exécuter. On exécute donc la commande chmod
600 ha.cf. Si cette commande n’a pas été exécutée, le service ne fonctionnera pas.
On crée par la suite le fichier authkeys toujours avec NANO. Ce fichier permet d’avoir une liaison
sécurisé avec différentes méthodes d’authentification (cryptage sha par exemple) entre les deux
serveurs. On exécute la commande nano authkeys et on renseigne les paramètres suivants
auth 1
1 sha1 <CLE_AUTHKEYS>
Le contenu crypté doit être strictement identique sur le serveur passif Ubuntu 2. Sauvegarder et fermer ce fichier.
On crée par la suite le fichier haresources. Ce fichier permet d’initialiser l’adresse IP virtuelle en fonction du nœud où on souhaite l’initialiser, de savoir sur quelle interface cette adresse IP sera affectée et sur quel service Heartbeat devra être opérationnel. On exécute la commande nano haresources. On renseigne les paramètres suivants :
srv1 IPaddr::192.168.122.209/24/enp1s0 apache2
Renseignons nous un peu plus sur les paramètres de ce fichier :
• La partie ubuntu-server1 permet d’identifier le nœud actif du cluster de haute disponibilité
• La partie IPaddr ::192.168.122.209/24/enp1s0 permet d’assigner au serveur actif l’adresse IP virtuelle 192.168.122.209 ayant la norme CIDR en /24 (soit 255.255.255.0 en masque de sous réseau) sur l’interface enp1s0 du nœud.
• La partie apache2 permet de renseigner à Heartbeat sur quel service il devra être opérationnel. Pour notre cas, on a affaire à un cluster WEB tournant sous apache2. On
renseigne donc ce service.
Le contenu doit être strictement identique sur le serveur passif Ubuntu 2. Sauvegarder et fermer ce
fichier.
La configuration de Heartbeat est quasi finie. Pour que les paramètres soient pris en compte, il faut redémarrer le service. Pour cela, exécuter la commande suivante sur les deux serveurs :
chmod 600 authkeys
systemctl restart heartbeat

Puis un
ip a

Il existe aussi une commande qui s’avère intéressante mais surtout indispensable pour savoir si le nœud distant répond ou pas. Il faut simplement taper
cl_status nodestatus srv1
(je veux me renseigner sur l’état du nœud passif).
Le message active est affiché, le nœud passif est donc opérationnel. Sinon, le message dead s’afficherait comme quoi ce nœud est « mort » (ne répond pas).
Depuis notre client Windows XP, nous allons accéder à la page WEB de notre cluster. On ouvre un navigateur WEB quelconque et on renseigne l’adresse IP virtuelle et NON l’adresse IP d’un des deux serveurs dans la barre d’adresse. On arrive sur la page du serveur actif Ubuntu 1 de notre cluster de haute disponibilité.
On passe au test sur navigateur Web.

Ensuite on tape un
system stop apache2
et on obtient le SRV 2 grace a heartbeat .

Si on vetu que le serveur 2 reste actif apres le rétablissement du SRV 1 on change la ligne
auto_failback on
en Off.