You are on page 1of 13

Mise en place d'une solution haute disponibilit sous Linux

Jol CHEVALLIER Elve-Ingnieur Supinfo Paris Promotion SUPINFO 2008

Table of Contents
ntrodu tion!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2 " Installation des logi iels #$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!% "!" Pr-re&uis!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!% "!2 Installation de '()'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!% "!% Installation de #eart*eat!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+ "!+ Installation de ,on!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2 .onfiguration de '()'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/ 2!" Prparation du s0stme!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/ 2!2 'r*d! onf!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/ 2!% S0n 1ronisation des noeuds!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8 % .onfiguration de #eart*eat!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2 %!" 1a! f!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2 %!2! 1aresour es !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2 %!%! aut13e0s!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"0 + .onfiguration de ,on!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"" +!" S ript de dmarrage!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"" +!2 ,on! f!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"" +!% 4ests!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"2 .on lusion!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"%

ntroduction
$ssurer la 1aute disponi*ilit d5un servi e et des donnes est au6ourd51ui devenu le prin ipal sou i des 'SI dans le monde de l5entreprise! $ tuellement7 plusieurs solutions sont disponi*les! - 85&uipement S$N 9Storage area net:or3; trs o<teu= et dont la maintenan e s5avre trs fastidieuse en as de panne! - 8a s0n 1ronisation rgulire 9t0pe rs0n ; entre les serveurs! In onvnient > en as de ras1 les donnes r upres dateront de la dernire s0n 1ronisation! 8e pro6et Linux High A ailabilit! a t dvelopp dans le *ut de fournir une solution au= pro*lmes ren ontrs pr demment! .ette solution rpond ? plusieurs impratifs > fai*le o<t7 fa ilit de maintenan e et donnes parfaitement ? 6our en as de *as ule serveur! $ travers et arti le7 nous allons voir omment installer et onfigurer simplement une telle solution!

" Installation des logiciels HA


"#" $r%re&uis
Pour la ralisation d5une infrastru ture 1aute disponi*ilit7 nous utiliserons une distri*ution 8inu= 'E)I$N Sarge! .ette distri*ution7 relativement simple ? prendre en main7 est *ase sur le s0stme de pa&uets 'E)! Par ailleurs7 la ommande apt-get nous permettra une installation simplifie de tous les programmes n essaires ? la mise en pla e de ette solution! Par sou is de ommodit nous emploierons le terme #$ 9#ig1 $vaila*ilit0; dans la suite de l5arti le! @oi i un r apitulatif du matriel et des logi iels utiliss pour notre infrastru ure #$> ,atriel > - 2 ma 1ines au= performan es ompara*les mais pas for ment identi&ues munies de 2 artes rseau= 1a une 9"="00*ase4 A "="000*ase4;! S0stme> 8inu= 8ogi iels> - #eart*eat v"!2 - ,on v0!22 'e*ian Sarge *ase '()' sur un 3ernel 2!+! v0!/

Remarques: La debian tant base sur un systme de package de type DEB, nous utiliserons les versions pr-compiles pour i !"# Les dpendances sont satis$aites automatiquement lors de l%installation avec apt-get &sau$ pour mon qui n%est pas dans l%arbre de packages de Debian et doit donc 'tre install manuellement(# $vant toutes 1oses7 metteB ? 6our votre liste de pa 3ages afin d5Ctre s<r de r uprer la dernire version sta*le des logi iels!
# apt-get update

1.2 Installation de DRBD DRBD permet de faire du RAID 1 (rplication ou mirroring de disque) par le rseau. Cest en partie grce mirroring que !eart"eat pourra mettre disposition des ser#ices $aute disponi"ilit. ce

DRBD sinstalle en tant que module. %ous aurons donc "esoin de rcuprer les sources puis de les compiler. &oici la liste des commandes pour raliser cette procdure. Remarques : il est bien entendu indispensable que votre machine dispose dun accs internet. La procdure suivante est raliser sur les 2 serveurs ' ' ' ' ' ' ' apt(get install )ernel(image(*(uname (r) )ernel($eaders(*(uname (r) "uild(essential apt(get install dr"d+.,(utils dr"d+.,(module(source apt(get install dp)g(de# )ernel(pac)age ncurses(de# patc$utils cd -usr-src tar .f/# dr"d+.,(tar.g/ apt(get install gcc(0.1 cd -usr-src-)ernel($eaders(2.1.2,(2(034

' module(assistant

5ne fois module(assistant lanc6 alle/ dans 7898C:6 puis slectionne/ le module dr"d+.,. :ermine/ en faisant un B5I9D puis un I%7:A99.

9e module est pr;t ' modpro"e dr"d

;tre lanc. 5tilise/ la commande modpro"e pour le c$arger.

drbd:initialised. Version: 0.7.11 (api:77/proto:74) drbd: SVN Revision: 1 07 build b! lars"bar#eeper1$ %00&-0'-07 1(:)):)0 drbd: registered as blo*# devi*e +a,or 147 8nfin6 utilise/ la commande lsmod pour #erifier que le module est "ien c$arg. ' lsmod < grep dr"d dr"d 111==2 +

1.3 Installation de Heartbeat !eart"eat est situ au c>ur du processus de fonctionnement dune solution de $aute disponi"ilit. Il constitue le lien permettant au. 2 ser#eurs de se prendre mutuellement le pouls.

Etat normal du cluster

9orsque lun des deu. ser#eurs cesse de rpondre6 le second prend immdiatement le relais et ce6 de fa?on totalement transparente pour lutilisateur grce un s@stAme dIB flottante. Cest le principe dun cluster.

!eart"eat #a nous permettre de former un cluster cluster.

partir des 2 mac$ines. C$aque mac$ine est appele n>ud du

9installation de !eart"eat sur un s@stAme De"ian est relati#ement simple6 le paquet se trou#ant dans les dpCts

standards. 9a commande sui#ante doit ;tre lance sur les 2 mac$ines. # apt-get install -eartbeat !eart"eat sinstalle en tant que ser#ice. &ous o"tiende/ une erreur la fin de cette installation #ous informant que le fic$ier $a.cf nest pas prsent. Ceci est normal et sera corrig plus loin dans larticle. 1.4 Installation de Mon !eart"eat sur#eille ltat du s@stAme mais pas celui des ser#ices. Cest ici quinter#ient Don. Don nest pas dans lar"re de paquets De"ian. Il nous faudra donc linstaller manuellement. 9es tapes sui#antes sont effectuer sur le ser#eur primaire et le secondaire. Rcupre/ le pac)age Don ladresse sui#ante E $ttpE--FFF.)ernel.org-softFare-mon-.

:lc$arge/ le dans -etc-$a.d puis e.cute/ les commandes sui#antes pour linstaller. # *d /et*/-a.d # tar ./v0 +on-0.((.%.tar.g/ # +v +on-0.((.%.tar.g/ +on De plus6 Don requiert quelques modules Berl e.ternes. &ous pou#e/ utiliser #otre CBA% $a"ituel pour rcuprer ces modules oG utiliser la liste de liens ci(dessous.

:imeEEBeriod :imeEE!iRes Con#ertEEB8R DonEEH

Dcompresse/ les arc$i#es a#ec la commande tar .#/f puis installe/ les modules en sui#ant la procdure sui#ante dans c$acun des dossiers cres. # perl 1a#e0ile.pl # +a#e 22 +a#e install 9es dpendances de Don sont maintenant installes. %ous allons maintenant nous intresser la configuration de ces ser#ices.

' Con(iguration de )R*)


2.1 Prparation du systme Il nous faut maintenant c$oisir quelle partition sera mirrore sur les 2 mac$ines. Dans notre e.emple6 nous ferons le mirroring de -$ome. A#ant de commencer6 #rifie/ le.istence de la partition dans -etc-fsta" afin didentifier le #olume correspondant -$ome. # *at /et*/0stab -- a00i*-age tron3u4 -# /dev/-da' /-o+e /e.t) -- a00i*-age tron3u4 --

de0aults

9e #olume correspondant -$ome est donc -de#-$da4. %ous en aurons "esoin plus tard. Il nous faut maintenant dmonter cette partition et #rifier quelle est "ien dmonte. # u+ount /-o+e # +ount

2.2 Drbd.con Il e.iste 2 mt$odes pour configurer DRBD. Directement en ligne de commande6 ou par lintermdiaire dun fic$ier de configuration. Bar soucis de commodit nous utiliserons la 2Ame mt$ode. Cre/ le fic$ier -etc-dr"d.conf si celui(ci ne.iste pas encore. &oici le contenu du fic$ier de configuration de dr"d utilis dans notre e.emple. # d4*laration du *luster resour*e drbd 5 # proto*ole utilis4 (voir plus bas) proto*ol 67 # vitesse de trans0ert des donn4es s!n*er 5 rate 10017 group 17 8 on sig+a 5 # perip-eri3ue drbd devi*e /dev/drbd07

#volu+e 9 s!n*-roniser dis# /dev/-da'7

# adresse ip du noeud et port address 1(%.1' .0.%:77 7

# e+pla*e+ent des +4ta-donn4es +eta-dis# 8 # +:+e pro*4dure on #appa 5 devi*e /dev/drbd07 internal7

dis# address 8 8

/dev/-da'7 1(%.1' .0.):77 7

+eta-dis# internal7

Il e.iste 0 protocoles E A E lcriture est termine lorsque les donnes sont inscrites sur le disque local et en#o@es sur le rseau. B E lcriture est termine lorsque les donnes sont inscrites sur le disque local et laccus de rception de l$Cte distant est re?u. C E lcriture est termine lorsque les donnes sont inscrites sur le disque local et la confirmation dcriture sur le disque distant est rceptionne. 9e protocole C est donc le plus sIr parmi les 0 mais aussi le plus lent. Dans notre cas6 nous utilisons une liaison giga"it ddie entre les 2 ser#eurs6 le protocole B est donc amplement suffisant. Remarque : le fichier de configuration doit tre identique sur les 2 n!uds. 2.3 !ync"ronisation des noeuds %ous allons maintenant dfinir )appa comme tant le n>ud primaire de notre cluster. Ceci seffectue a#ec la commande dr"dadm. # drbdad+ pri+ar! all drbd0: ;reating state blo*# drbd0: res!n* bit+ap: bits<(4)17% =ords<%(47' drbd0: si/e < )' 4 16 ()77%' drbd0: )77%' >6) drbd0: ?ssu+ing t-at all blo*#s are out o0 s!n* >6 no= +ar#ed out-o0-s!n* b! on dis# bit-+ap. drbd0: drbdsetup 10 7%: *state @n*on0igured --A Stand?lone 9a s@nc$ronisation d"ute. Bour sui#re l#olution de la s@nc$ronisation #ous pou#e/ utiliser la commande sui#ante. # =at*- Bn & *at /pro*/drbd 9tat de la s@nc$ronisation sera affic$ toutes les J secondes. 5ne fois la s@nc$ronisation termine6 le n>ud primaire doit apparaKtre comme Brimar@ et Consistent. Il faut ensuite formater le prip$rique dr"d puis le monter. # +#e%0s B, /dev/drbd0 # +ount /dev/drbd0 /-o+e Remarque : dans le cas o" lon voudrait accder au# donnes partir du serveur secondaire$ la partition mirrore doit avant tout tre dmonte et le serveur primaire pass ltat secondaire %ous verrons par la suite comment automatiser cette procdure avec &eartbeat.

+ Con(iguration de Heartbeat
!eat"eat agit comme init pour lancer et arr;ter les ser#ices. %ous a#ons rele# la fin de linstallation de !eart"eat une erreur. Bar dfaut6 les fic$iers de configuration de !eart"eat ne.istent pas6 il faut les crer dans le dossier -etc-$a.d et sont au nom"re de 0 et doi#ent ;tre identi#ues sur les 2 ser#eurs. $a.cf E configuration gnrale $aresources E les ressources que !eart"eat de#ra grer aut$.)e@s E mt$ode dencr@ption utilise pour la communication

+#"

"a.c

Ce fic$ier dfinit les paramAtres gnrau. de !eart"eat.

# C+pla*e+ent des +essages de debug debug0ile /var/log/-a-debug # ?utres +essages log0ile /var/log/-a-log # No+bre de se*ondes entre *-a3ue batte+ents #eepalive % # De+ps avant 3uEun noeud soit de*lare +ort deadti+e 10 # Fort utilise pour la *o++uni*ation en @GF udpport '(4 # Hnter0a*e utilis4e b*ast et-0 # R4*uperation auto+ati3ue des resour*es si les % serveurs # sont 9 nouveau op4rationnels autoI0ailba*# on # Jes noeuds de notre *luster node sig+a node #appa 3.2. "aresources Ce fic$ier dfinit les ser#ices dont $eart"eat de#ra grer les ressources. 9e contenu de ce fic$ier est de la forme Ainsi dans notre e.emple6 nous aurions E sig+a 1(%.1' .0.4 apa*-e% +!s3l Bour que $eart"eat sac$e quil tra#aille sur un en#ironnement mirror a#ec DRBD6 nous de#ons le lui indiquer dans le fic$ier $aresources afin quen cas de panne le ser#eur secondaire de#ienne primaire et puisse monter le #olume dr"d. %otre fic$ier de#ient donc E sig+a 1(%.1' .0.4 Kiles!ste+::/dev/drbd0::/-o+e::e.t) apa*-e% +!s3l 9aLout de 'iles(stem::)dev)drbd*::)home::e#t+ prcise quel est son s@stAme de fic$ier. !eart"eat oG est situe la partition DRBD6 oG la monter et

+.3. aut"$eys
Ce fic$ier permet de scuriser les c$anges entre les 2 mac$ines. Il dfinit la mt$ode dencr@ption utilise. :rois modes daut$entification sont disponi"les E crc mdJ s$a1 # aut- identi0iant aut- 1 # identi0iant +4t-ode utilis4e 1 *r* Dans notre e.emple6 une aut$entification crc est suffisante du fait dune liaison ddie. &eille/ appliquer les permissions adquates sur ce fic$ier de sorte que seul lutilisateur root puisse @ accder (un umas) de +4++ est fortement recommand). Il ne reste plus qu dmarrer !eart"eat a#ec la commande /et*/init.d/-eartbeat start

, Con(iguration de Mon
4.1 !cript de dmarra%e %ous allons maintenant #oir comment configurer la sur#eillance des ser#ices sur les ser#eurs a#ec Don. :out da"ord6 nous allons a#oir "esoin dun script permettant Don de grer ltat de !eart"eat6 permettant ainsi un passage des ressources en cas de non rponse dun ser#ice. 9e dossier mon.alert contient un ensem"le de scripts permettant Don de gnrer des alertes en cas de dfaillance des ser#ices. Cre/ le fic$ier $a(up(doFn.alert dans -etc-$a.d-mon-mon.alert. #L/bin/bas# arr:t/d4+arrage du servi*e -eartbeat MC?RD6C?D<N/et*/r*.d/init.d/-eartbeatN i0 O NP(N < N-uN Q7 t-en PMC?RD6C?D start else PMC?RD6C?D stop Ki # envoi dEun +ail au. ad+inistrateurs (argu+ent pass4 par +on.*0) /et*/-a.d/+on/alert.d/+ail.alert PR

4.2 Mon.c 8nsuite6 cre/ le fic$ier mon.cf dans -etc-$a.d-mon. Ce fic$ier contient la liste des ser#ices que mon doit sur#eiller et les actions rsultantes de di#ers #Anements. 9e.emple sui#ant montre comment sur#eiller ltat dun ser#eur $ttp et "asculer les ressources en cas de non rponse. # e+pla*e+ent des 0i*-iers de *on0iguration/dEalerte/logs *0basedir < /et*/-a.d/+on/et* alertdir < /et*/-a.d/+on/alert.d +ondir < /et*/-a.d/+on/+on.d statedir < /et*/-a.d/+on/state.d logdir < /var/log/ # t!pe dEaut-enti0i*ation aut-t!pe < getp=na+ # le serveur 9 surveiller -ostgroup server 1%7.0.0.1 # les servi*es 9 surveiller sur le serveur =at*- server servi*e -ttp interval )0s +onitor -ttp.+onitor period =d 51on-Sun8 # les a*tions en *as de panne/retour 9 la nor+ale alert -a-up-do=n.alert -S Nservi*e -ttpd do=n LN S ad+inistrateur"do+aine.*o+ upalert +ail.alert -S Nservi*e -ttpd up LN S ad+inistrateur"do+aine.*o+ # d4lai entre *-a3ue alerte alertever! '00s

4.3 &ests 8nfin6 dmarre/ mon a#ec la commande sui#ante E /et*/-a.d/+on/+on Remarque : ,l sagit ici dun test. ,l est bien entendu possible et recommand de spcifier dautres scripts la place de celui que nous avons cre. Le passage des ressources tant la mthode la plus radicale$ un rechargement ou un redmarrage du)des service-s. posant problme peut savrer appropri avant deffectuer une bascule %otre infrastructure $aute disponi"ilit est maintenant pr;te. Bour tester celle(ci6 il nous suffira de d"ranc$er le c"le rseau reliant les 2 ser#eurs ou "ien dteindre le ser#eur primaire. Au "out de quelques secondes6 le fic$ier $a.log du ser#eur secondaire affic$era des alertes et la prise de relai seffectuera. # tail B0 /var/log/-a.log -- a00i*-age tron3u4 --eartbeat: ... T?RN: node +aster: is dead -eartbeat: ... in0o: Jin# +aster:et-0 dead. -eartbeat: ... in0o: Running /et*/-a.d/r*.d/status status -eartbeat: ... in0o: Running /et*/-a.d/r*.d/i0stat i0stat -eartbeat: ... in0o: Running /et*/-a.d/r*.d/i0stat i0stat -eartbeat: ... in0o: Da#ing over resour*e group 17%.17.10.)0 -eartbeat: ... in0o: ?*3uiring resour*e group: +aster 1(%.1' .0.% apa*-e% +on -- a00i*-age tron3u4 -9e m;me test peut ;tre effectu en arr;tant le ser#eur Fe" apac$e.

Conclusion
9e trio DRBD ( !eart"eat M Don est parfait pour assurer la redondance de deu. mac$ines p$@siquement proc$es. Assurant la fois la sur#eillance des dfaillances des s@stAmes mais aussi celle des ser#ices6 cette solution met un terme au pro"lAme de redondance et dinterruption de ser#ice. Cette tec$nique est dL utilise depuis longtemps dans les grandes entreprises6 c$e/ les $"ergeurs et autres prestataires. 9a $aute disponi"ilit est de#enue un standard incontourna"le pour toute entreprise dsirant faire face la concurrence. 9e proLet Npen source !A est en constante #olution depuis son lancement en 1=== et la limitation initiale des 2 n>uds est dsormais r#olue. 5ne entreprise au. re#enus limits ne dsirant pas in#estir dans un 7A% coIteu. et la maintenance ardue peut maintenant disposer dune solution complAte6 fia"le6 facile administrer et totalement li"re. 7ources E $ttpE--FFF.linu.($a.org$ttpE--FFF.crium.uni#(met/.fr$ttpE--FFF.regit.org$ttpE--Fi)i.u"untu(fr.org-

You might also like