Professional Documents
Culture Documents
Joël CHEVALLIER
Elève-Ingénieur Supinfo Paris
Promotion SUPINFO 2008
Table of Contents
ntroduction............................................................................................................................................2
1 Installation des logiciels HA.............................................................................................................3
1.1 Pré-requis...................................................................................................................................3
1.2 Installation de DRBD.................................................................................................................3
1.3 Installation de Heartbeat............................................................................................................4
1.4 Installation de Mon...................................................................................................................6
2 Configuration de DRBD....................................................................................................................7
2.1 Préparation du système..............................................................................................................7
2.2 Drbd.conf...................................................................................................................................7
2.3 Synchronisation des noeuds.......................................................................................................8
3 Configuration de Heartbeat...............................................................................................................9
3.1 ha.cf.........................................................................................................................................9
3.2. haresources ............................................................................................................................9
3.3. authkeys..................................................................................................................................10
4 Configuration de Mon......................................................................................................................11
4.1 Script de démarrage.................................................................................................................11
4.2 Mon.cf......................................................................................................................................11
4.3 Tests.........................................................................................................................................12
Conclusion..........................................................................................................................................13
ntroduction
Assurer la haute disponibilité d’un service et des données est aujourd’hui devenu le principal souci
des DSI dans le monde de l’entreprise. Actuellement, plusieurs solutions sont disponibles.
- L’équipement SAN (Storage area network) très coûteux et dont la maintenance s’avère très
fastidieuse en cas de panne.
- La synchronisation régulière (type rsync) entre les serveurs. Inconvénient : en cas de crash les
données récupérées dateront de la dernière synchronisation.
Le projet Linux High Availability a été développé dans le but de fournir une solution aux
problèmes rencontrés précédemment. Cette solution répond à plusieurs impératifs : faible coût,
facilité de maintenance et données parfaitement à jour en cas de bascule serveur.
A travers cet article, nous allons voir comment installer et configurer simplement une telle solution.
1 Installation des logiciels HA
1.1 Pré-requis
Pour la réalisation d’une infrastructure haute disponibilité, nous utiliserons une distribution Linux
DEBIAN Sarge. Cette distribution, relativement simple à prendre en main, est basée sur le système
de paquets DEB. Par ailleurs, la commande apt-get nous permettra une installation simplifiée de
tous les programmes nécessaires à la mise en place de cette solution. Par soucis de commodité nous
emploierons le terme HA (High Availability) dans la suite de l’article.
Voici un récapitulatif du matériel et des logiciels utilisés pour notre infrastrucure HA:
Matériel :
- 2 machines aux performances comparables mais pas forcément identiques munies de 2 cartes
réseaux chacune (1x100baseT + 1x1000baseT).
Système:
- Linux Debian Sarge basée sur un kernel 2.4.
Logiciels:
- DRBD v0.7
- Heartbeat v1.2
- Mon v0.99
Remarques:
- La debian étant basée sur un système de package de type DEB, nous utiliserons les
versions pré-compilées pour i386.
- Les dépendances sont satisfaites automatiquement lors de l’installation avec apt-get
(sauf pour mon qui n’est pas dans l’arbre de packages de Debian et doit donc être installé
manuellement).
Avant toutes choses, mettez à jour votre liste de packages afin d’être sûr de récupérer la dernière
version stable des logiciels.
# apt-get update
DRBD permet de faire du RAID 1 (réplication ou mirroring de disque) par le réseau. C’est en partie grâce à ce
mirroring que Heartbeat pourra mettre à disposition des services haute disponibilité.
DRBD s’installe en tant que module. Nous aurons donc besoin de récupérer les sources puis de les compiler. Voici la
liste des commandes pour réaliser cette procédure.
Remarques :
- il est bien entendu indispensable que votre machine dispose d’un accès à internet.
- La procédure suivante est à réaliser sur les 2 serveurs
Une fois module-assistant lancé, allez dans SELECT, puis sélectionnez le module drbd0.7. Terminez en faisant un
BUILD puis un INSTALL.
Le module est prêt à être lancé. Utilisez la commande modprobe pour le charger.
# modprobe drbd
drbd:initialised. Version: 0.7.11 (api:77/proto:74)
drbd: SVN Revision: 1807 build by lars@barkeeper1, 2005-06-07 19:33:30
drbd: registered as block device major 147
Enfin, utilisez la commande lsmod pour verifier que le module est bien chargé.
drbd 144992 0
Lorsque l’un des deux serveurs cesse de répondre, le second prend immédiatement le relais et ce, de façon totalement
transparente pour l’utilisateur grâce à un système d’IP flottante. C’est le principe d’un cluster.
Heartbeat va nous permettre de former un cluster à partir des 2 machines. Chaque machine est appelée nœud du
cluster.
L’installation de Heartbeat sur un système Debian est relativement simple, le paquet se trouvant dans les dépôts
standards. La commande suivante doit être lancée sur les 2 machines.
Heartbeat s’installe en tant que service. Vous obtiendez une erreur à la fin de cette installation vous informant que le
fichier ha.cf n’est pas présent. Ceci est normal et sera corrigé plus loin dans l’article.
Heartbeat surveille l’état du système mais pas celui des services. C’est ici qu’intervient Mon.
Mon n’est pas dans l’arbre de paquets Debian. Il nous faudra donc l’installer manuellement.
Les étapes suivantes sont à effectuer sur le serveur primaire et le secondaire.
Téléchargez le dans /etc/ha.d puis exécutez les commandes suivantes pour l’installer.
# cd /etc/ha.d
# tar xzvf mon-0.99.2.tar.gz
# mv mon-0.99.2.tar.gz mon
De plus, Mon requiert quelques modules Perl externes. Vous pouvez utiliser votre CPAN habituel pour récupérer ces
modules où utiliser la liste de liens ci-dessous.
• Time::Period
• Time::HiRes
• Convert::BER
• Mon::*
Décompressez les archives avec la commande tar xvzf puis installez les modules en suivant la procédure suivante dans
chacun des dossiers crées.
# perl Makefile.pl
# make && make install
Il nous faut maintenant choisir quelle partition sera mirrorée sur les 2 machines. Dans notre exemple, nous ferons le
mirroring de /home.
Avant de commencer, vérifiez l’existence de la partition dans /etc/fstab afin d’identifier le volume correspondant à
/home.
# cat /etc/fstab
-- affichage tronqué --
# /dev/hda6 /home /ext3 defaults
-- affichage tronqué --
Le volume correspondant à /home est donc /dev/hda6. Nous en aurons besoin plus tard.
Il nous faut maintenant démonter cette partition et vérifier qu’elle est bien démontée.
# umount /home
# mount
2.2 Drbd.conf
Il existe 2 méthodes pour configurer DRBD. Directement en ligne de commande, ou par l’intermédiaire d’un fichier de
configuration. Par soucis de commodité nous utiliserons la 2ème méthode.
Créez le fichier /etc/drbd.conf si celui-ci n’existe pas encore. Voici le contenu du fichier de configuration de drbd utilisé
dans notre exemple.
# déclaration du cluster
resource drbd {
# peripherique drbd
device /dev/drbd0;
#volume à synchroniser
disk /dev/hda6;
# même procédure
on kappa {
device /dev/drbd0;
disk /dev/hda6;
address 192.168.0.3:7788;
meta-disk internal;
}
}
Il existe 3 protocoles :
• A : l’écriture est terminée lorsque les données sont inscrites sur le disque local et envoyées sur le
réseau.
• B : l’écriture est terminée lorsque les données sont inscrites sur le disque local et l’accusé de réception
de l’hôte distant est reçu.
• C : l’écriture est terminée lorsque les données sont inscrites sur le disque local et la confirmation
d’écriture sur le disque distant est réceptionnée.
Le protocole C est donc le plus sûr parmi les 3 mais aussi le plus lent. Dans notre cas, nous utilisons une liaison gigabit
dédiée entre les 2 serveurs, le protocole B est donc amplement suffisant.
Nous allons maintenant définir kappa comme étant le nœud primaire de notre cluster. Ceci s’effectue avec la
commande drbdadm.
La synchronisation débute. Pour suivre l’évolution de la synchronisation vous pouvez utiliser la commande suivante.
# mke2fs –j /dev/drbd0
# mount /dev/drbd0 /home
Remarque : dans le cas où l’on voudrait accéder aux données à partir du serveur secondaire, la partition mirrorée doit
avant tout être démontée et le serveur primaire passé à l’état secondaire
Nous verrons par la suite comment automatiser cette procédure avec Heartbeat.
3 Configuration de Heartbeat
Heatbeat agit comme init pour lancer et arrêter les services.
Nous avons relevé à la fin de l’installation de Heartbeat une erreur. Par défaut, les fichiers de configuration de
Heartbeat n’existent pas, il faut les créer dans le dossier /etc/ha.d et sont au nombre de 3 et doivent être identiques
sur les 2 serveurs.
3.1 ha.cf
# Autres messages
logfile /var/log/ha-log
# Interface utilisée
bcast eth0
3.2. haresources
Ce fichier définit les services dont heartbeat devra gérer les ressources.
Le contenu de ce fichier est de la forme
Ainsi dans notre exemple, nous aurions :
Pour que heartbeat sache qu’il travaille sur un environnement mirroré avec DRBD, nous devons le lui indiquer dans le
fichier haresources afin qu’en cas de panne le serveur secondaire devienne primaire et puisse monter le volume drbd.
Notre fichier devient donc :
# auth identifiant
auth 1
Dans notre exemple, une authentification crc est suffisante du fait d’une liaison dédiée.
Veillez à appliquer les permissions adéquates sur ce fichier de sorte que seul l’utilisateur root puisse y accéder (un
umask de 0600 est fortement recommandé).
/etc/init.d/heartbeat start
4 Configuration de Mon
4.1 Script de démarrage
Nous allons maintenant voir comment configurer la surveillance des services sur les serveurs avec Mon.
Tout d’abord, nous allons avoir besoin d’un script permettant à Mon de gérer l’état de Heartbeat, permettant ainsi un
passage des ressources en cas de non réponse d’un service.
Le dossier mon.alert contient un ensemble de scripts permettant à Mon de générer des alertes en cas de défaillance
des services.
Créez le fichier ha-up-down.alert dans /etc/ha.d/mon/mon.alert.
#!/bin/bash
4.2 Mon.cf
Ensuite, créez le fichier mon.cf dans /etc/ha.d/mon. Ce fichier contient la liste des services que mon doit surveiller et
les actions résultantes de divers évènements. L’exemple suivant montre comment surveiller l’état d’un serveur http et
basculer les ressources en cas de non réponse.
# type d’authentification
authtype = getpwnam
# le serveur à surveiller
hostgroup server 127.0.0.1
/etc/ha.d/mon/mon
Remarque :
Il s’agit ici d’un test. Il est bien entendu possible et recommandé de spécifier d’autres scripts à la place de celui que
nous avons crée. Le passage des ressources étant la méthode la plus radicale, un rechargement ou un redémarrage
du/des service(s) posant problème peut s’avérer approprié avant d’effectuer une bascule
Notre infrastructure haute disponibilité est maintenant prête. Pour tester celle-ci, il nous suffira de débrancher le câble
réseau reliant les 2 serveurs ou bien d’éteindre le serveur primaire. Au bout de quelques secondes, le fichier ha.log du
serveur secondaire affichera des alertes et la prise de relai s’effectuera.
# tail –f /var/log/ha.log
-- affichage tronqué --
heartbeat: ... WARN: node master: is dead
heartbeat: ... info: Link master:eth0 dead.
heartbeat: ... info: Running /etc/ha.d/rc.d/status status
heartbeat: ... info: Running /etc/ha.d/rc.d/ifstat ifstat
heartbeat: ... info: Running /etc/ha.d/rc.d/ifstat ifstat
heartbeat: ... info: Taking over resource group 172.17.10.30
heartbeat: ... info: Acquiring resource group: master 192.168.0.2 apache2 mon
-- affichage tronqué --
Cette technique est déjà utilisée depuis longtemps dans les grandes entreprises, chez les hébergeurs et autres
prestataires. La haute disponibilité est devenue un standard incontournable pour toute entreprise désirant faire face à
la concurrence.
Le projet Open source HA est en constante évolution depuis son lancement en 1999 et la limitation initiale des 2
nœuds est désormais révolue. Une entreprise aux revenus limités ne désirant pas investir dans un SAN coûteux et à la
maintenance ardue peut maintenant disposer d’une solution complète, fiable, facile à administrer et totalement libre.
Sources :
http://www.linux-ha.org/
http://www.crium.univ-metz.fr/
http://www.regit.org/
http://wiki.ubuntu-fr.org/