Mise en place d'une solution haute disponibilité sous Linux
Joël CHEVALLIER Elève-Ingénieur Supinfo Paris Promotion SUPINFO 2008
Table of Contents ntroduction...................................... ntroduction............................................................. .............................................. .............................................. .............................................. .................................2 ..........2 1 Installation des logiciels HA.................................................... HA........................................................................... ......................................... ............................... ................3 ...3 1.1 Pré-requis...................... Pré-requis............................................. .............................................. .............................................. .............................................. ...................................... .................3 ..3 1.2 Installation de DRBD.................................. DRBD......................................................... .............................................. .............................................. .................................3 ..........3 1.3 Installation de Heartbeat.................. Heartbea t......................................... .............................................. .............................................. ...................................... .....................4 ......4 1.4 Installation de Mon................................ Mon....................................................... .............................................. ............................................................6 .....................................6 2 Configuration de DRBD..................................... DRBD............................................................ .............................................. .............................................. .................................7 ..........7 2.1 Préparation du système................ s ystème....................................... .............................................. .............................................. ............................................ .........................7 ....7 2.2 Drbd.conf.................................... Drbd.conf........................................................... .............................................. .............................................. ............................................... ........................ ..7 2.3 Synchronisation des noeuds..................................... noeuds............................................................ .............................................. ...........................................8 ....................8 3 Configuration de Heartbeat........................................................... Heartbeat.................................................................................. ...................................... ........................... ..............9 ..9 3.1 ha.cf.........................................................................................................................................9 3.2. haresources ............................................. .................................................................... .............................................. .............................................. .................................9 ..........9 3.3. authkeys..................................... authkeys............................................................ .............................................. .............................................. ...................................... ........................10 .........10 4 Configuration de Mon.................................... Mon........................................................... .............................................. .............................................. ....................................1 .............11 1 4.1 Script de démarrage.................... démarrage........................................... .............................................. ................................................................... ............................................ ...11 4.2 Mon.cf....................................... Mon.cf.............................................................. .............................................. ............................................... .................................................11 .........................11 4.3 Tests............................................ ests................................................................... .............................................. ................................................................... ............................................ ...12 Conclusion..................................... Conclusion............................................................ .............................................. .............................................. .......................................................13 ................................13
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
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. vailability a été développé dans le but de fournir une solution aux Le projet projet Linux High Availability 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.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
1 Installation des logiciels HA 1.1 Pré-requis Pour la réalisation réalisation d’une infrastructu infrastructure re haute disponibilité, disponibilité, nous utiliserons utiliserons une distribution distribution Linux DEBIAN Sarge. Cette distribution, relativement simple à prendre en main, est basée sur le système système de paquets DEB. Par ailleurs, la commande commande apt-get nous permettra permettra une installation 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é Ma téri riel el : - 2 machines aux performances comparables mais pas forcément identiques munies de 2 cartes réseaux chacune (1x100baseT + 1x1000baseT). Système: Linux
Debian
Logiciels: - Heartbeat v1.2 - Mon v0.99
Sarge
basée
sur
un
DRBD
kernel
2.4.
v0.7
Remarques: La debia debian n étant basée sur un système de packa package ge de type DEB, nou nouss utilise utiliseron ronss les versions pré-compilées pour i386. Les dépen dépendance dancess sont satisf satisfaites aites auto automatiq matiquement uement lors de l’inst l’installati allation on avec apt-ge apt-get t (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
1.2 Installation de DRBD 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 -
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
# module-assistant module-assistant
Une fois module-assistant lancé, allez dans SELECT, SELECT, puis sélectionnez le module drbd0.7. Terminez 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é. # lsmod | grep drbd drbd
144992
0
1.3 Installation de Heartbeat Heartbeat est situé au cœur du processus de fonctionnement d’une solution de haute disponibilité. Il constitue le lien permettant aux 2 serveurs de se prendre mutuellement mutuellement le pouls.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Etat normal du cluster
Lorsque l’un des deux serveurs cesse de répondre, le second prend immédiatement 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. cluster.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
standards. La commande suivante doit être lancée sur les 2 machines. # apt-get install heartbeat
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. 1.4 Installation de Mon 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. manuellement. Les étapes suivantes sont à effectuer sur le serveur primaire et le secondaire. Récupérez le package Mon à l’adresse suivante : http://www http://www.kernel.org/softw .kernel.org/software/mon/ are/mon/.. 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 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
Les dépendances de Mon sont maintenant installées. Nous allons maintenant nous intéresser à la configuration de ces services.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
2 Configuration de DRBD 2.1 Préparation du système 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 -- affichage tronqué --
defaults
Le volume correspondant à /home est donc /dev/hda6. Nous en aurons besoin plus tard. Il nous faut maintenant 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 {
# protocole utilisé (voir plus bas) protocol B;
# vitesse de transfert des données syncer { rate 100M; group 1; } on sigma {
# peripherique drbd device
/dev/drbd0;
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
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 d istant 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. Remarque : le fichier de configuration doit être identique sur les 2 nœuds. 2.3 Synchronisation des noeuds Nous allons maintenant maintenant définir définir kappa comme étant le nœud primaire primaire de notre cluster cluster. Ceci s’effectue s’effectue avec la commande drbdadm. # drbdadm primary all drbd0: Creating state block drbd0: resync bitmap: bits=943172 words=29476 drbd0: size = 3684 MB (3772688 KB) drbd0: Assuming that all blocks are out of sync drbd0: 3772688 KB now marked out-of-sync by on disk bit-map. drbd0: drbdsetup 10872 10872: : cstate Unconfigured --> StandAlone
La synchronisation débute. Pour suivre l’évolution de la synchronisation vous pouvez utiliser la commande suivante. # watch –n 5 cat /proc/drbd
L’état de la synchronisation sera affiché toutes les 5 secondes. Une fois la synchronisation terminée, terminée, le nœud primaire doit apparaître comme Primary et Consistent. Il faut ensuite formater le périphérique drbd puis le monter. monter. # mke2fs –j /dev/drbd0 # mount /dev/drbd0 /home
Remarque : dans le cas où l’on voudrait accéder accéder aux données à partir du serveur secondaire, la partition partition mirrorée
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
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 : configuration configuration générale haresources : les ressources que Heartbeat devra gérer auth.keys : méthode d’encryption utilisée pour la communication communication
ha.cf
Ce fichier définit les paramètres généraux de Heartbeat.
# Emplacement des messages de debug debugfile /var/log/ha-debug # Autres messages logfile /var/log/ha-log # Nombre de secondes entre chaque battements keepalive 2 # Temps avant qu’un noeud soit declare mort deadtime 10 # Port utilise pour la communication en UDP udpport 694 # Interface utilisée bcast eth0 # Récuperation automatique des resources si les 2 serveurs # sont à nouveau opérationnels auto_failback on # Les noeuds de notre cluster node sigma node kappa
3.2. haresources
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
3.3. authkeys Ce fichier permet de sécuriser les échanges entre les 2 machines. Il définit la méthode d’encryption utilisée. Trois modes d’authentification sont disponibles : crc md5 sha1 • • •
# auth identifiant auth 1 # identifiant méthode utilisée 1 crc
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é). Il ne reste plus qu’à démarrer Heartbeat avec la commande /etc/init.d/heartbeat start
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
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 # arrêt/démarrage du service heartbeat HEARTBEAT="/etc/rc.d/init.d/heartbeat" if [ "$9" = "-u" ]; then $HEARTBEAT start else $HEARTBEAT stop Fi # envoi d’un mail aux administrateurs (argument passé par mon.cf) /etc/ha.d/mon/alert.d/mail.alert $*
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. évènements. L’exemple L’exemple suivant montre comment surveiller l’état d’un serveur http et basculer les ressources en cas de non réponse. # emplacement des fichiers de configuration/d’alerte/logs cfbasedir = /etc/ha.d/mon/ etc alertdir = /etc/ha.d/mon/ alert.d mondir = /etc/ha.d/mon/ mon.d statedir = /etc/ha.d/mon/s tate.d logdir = /var/log/ # type d’authentification authtype = getpwnam # le serveur à surveiller hostgroup server 127.0.0.1 # les services à surveiller sur le serveur watch server
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
4.3 Tests Enfin, démarrez mon avec la commande suivante : /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 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 affichera des alertes et la prise de relai s’effectuera. 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é --
Le même test peut être effectué en arrêtant le serveur web apache.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Conclusion Le trio DRBD - Heartbeat – Mon est parfait pour assurer la redondance de deux machines physiquement proches. Assurant à la fois la surveillance des défaillances des systèmes mais aussi celle des services, cette solution met un terme au problème de redondance et d’interruption de service. Cette Cette technique technique est déjà utilisée utilisée depuis depuis longtemps longtemps dans les grandes grandes entreprises entreprises,, chez les hébergeu hébergeurs rs et autres 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 maintenant disposer d’une solution complète, fiable, facile à administrer et totalement libre. Sour So urce ces s: http://www.linux-ha.org/ http://www.crium.univ-metz.fr/ http://www.regit.org/ http://wiki.ubuntu-fr.org/