You are on page 1of 73

LicenceProfessionnelleASRALL

quilibragedechargessousLinux
dansuncontextedeconnexionscurise

Rapport

Auteurs: Michal Jose Nassim Thierry

Tuteur: DOSCHPhilippe

Sommaire
1tude.............................................................................................................................................4 1.1Problmatique.........................................................................................................................4 1.2Hautedisponibilit.................................................................................................................5 1.2.1Dfinition........................................................................................................................6 1.2.2Algorithmes....................................................................................................................7 a)Algorithmesdterministes.............................................................................................7 b)Algorithmesnondterministes.....................................................................................8 1.2.3Topologiesrseau...........................................................................................................9 1.3Connexionscurise.............................................................................................................14 1.4Persistance............................................................................................................................16 1.5Solutionsexistantespourl'quilibragedecharge.................................................................19 1.5.1LVS...............................................................................................................................19 1.5.2Nginx............................................................................................................................19 1.5.3Pen................................................................................................................................20 1.5.4HAproxy.......................................................................................................................20 1.5.5Logicielscomplmentairesauxquilibreursdecharges..............................................23 2Miseenpratique........................................................................................................................26 2.1Scnarios..............................................................................................................................27 2.2Configurationsmatriellesetlogicielles.............................................................................28 2.3Rseau..................................................................................................................................29 2.3.1Lesrpartiteursdecharge.............................................................................................31 2.3.2ServeursdebasededonnesMysql.............................................................................43 2.3.3ConfigurationduNFS..................................................................................................47 2.3.4MiseenplaceduSSL...................................................................................................51 3Analyse........................................................................................................................................52 3.1Benchmark/Graphiques......................................................................................................52 3.2Analysedesgraphiques........................................................................................................53 3.3Analysedesalgorithmesderpartitiondecharge...............................................................56 3.4SinglePointOfFailure........................................................................................................58 4Conclusion..................................................................................................................................59 5Bibliographie..............................................................................................................................60 6Annexes.......................................................................................................................................61

1 tude
1.1 Problmatique
Noussommesadministrateurssystmesetrseauxdansuneentreprisepossdantuneboutiqueen ligne. Fortdesonsuccs,lenombredeconnexionsenregistresestenconstantecroissance.Ainsi,ilnous estdemandlamiseenuvred'uneinfrastructuredehautedisponibilitcapabledesupporterde fortesmontesenchargeetapterpondreauxdiffrentsbesoinslisl'activitdusite:

GestionduprotocoleHTTPSindispensableauxtransactionsfinancires. Supportdespagesdynamiques,notammentlagestiondessessions. Scurisationdesdonnes.

Nousallonsdonc,traverscerapport,tudierlesdiffrentessolutionspossiblespuisdployeret testercellesquisemblentlesmieuxadaptesauxexigencesexprimesprcdemment.

1.2 Hautedisponibilit
La haute disponibilit est le fait de maintenir l'accessibilit un service suivant un taux de disponibilitlev.Afindegarantircela,ilestindispensabledemettreenplaceunearchitecture matrielleddie.Ilfaudrajouernotammentsurla redondancedesmatriels,la scurisationdes donnesafindegarantirleursintgrits(RAID,Backup,...),larpartitiondechargepourfaireface despicsd'activits. Principederedondance: Laredondanceapourbutd'augmenterlesperformanceset/oudiminuerlesrisquesdepannes.Pour sefaireonpeutmettreenplaceplusieursconfigurationsmatriellesetlogiciellesidentiquesou diffrentes(plusrarement)afinderelayerdesserveursdfaillantsoudepartagerlesdiffrentes tches.Laredondanceimpliquedoncuninvestissementconsquentpourlesentreprises. Principedescurisationdesdonnes: Par scurisation des donnes on entend tre capable de pouvoir rimplanter des donnes rapidement et sans corruptions de cellesci . Pour cela des technologies sur les disques durs comme le RAID permettent de gagner en performances ou en scurit. D'autres solutions sont possiblescommelestockagedescopiesdesdonnessurunserveurdesauvegardeouunNAS. Principederpartitiondecharge: Lebutdelarpartitiondechargeestdepouvoirdistribueruntravailentreplusieursressourcesafin d'obtenirungaindeperformances.Leloadbalancingquenousexpliqueronsplusloinestune solutionpossiblederpartitiondecharge. Tauxdedisponibilit 99,9% 99,99% 99,999% 99,9999% 99,99999% Tempsd'indisponibilitparan 8heures45minutes 52minutes 5,2minutes 54,8secondes 3,1secondes

Tableau1:Estimationdutempsd'indisponibilitannuelleenfonctiondutauxdedisponibilit. Concrtement,lahautedisponibilitpouruneentrepriseestdevenueunechoseindispensablecarles utilisateursexternesl'entreprisejugentsouventlesentreprisesleurssitesinternetetnetolrent pluslespannesoulestempsd'attentetropconsquents. Demmepourunserviceinternel'entreprisequineseraitpasdisponiblecertainsmoments,il pourraityavoiruneparalysiependantplusieursminutes,heuresouplusencorecequientraneune gnedetravail. Ainsilahautedisponibilitestunrelsoucisconomiquepourlesentreprisescarelleinfluesurleur crdibilitetleurimagedemarque.Lapertepotentielledeclientsestaussiprendreencompteet parconsquentlaperted'argentaussi. C'est pour ces raisons que nous allons tudier diffrentes solutions de haute disponibilit, notammentleloadbalancingafindepermettreunecontinuitdesservicesentoutescirconstances. 2

1.2.1 Dfinition
Larpartitiondecharge(enanglaisloadbalancing)consisteenl'intgrationd'unsystmeentre lesclients(demandeursderessources)etlesressources.Cesystmesechargeradedsignerle fournisseurlemoinsoccupaumomentdelademandepourservirleclient.Ainsilesdemandes serontalorsrpartiessurplusieursfournisseursderessourcesaulieud'unseul. Surunearchitectureclassique,c'estdireuneconnexiondirecteentrelesclientsetlesressources, lesressourcessontstockessurunseulserveur.Encasdeforteactivit,ceserveurnepeutpas servirtoutlemondeetl'accsauxressourcesestalorscompromise,c'estcequel'onappellednide service(DoS:DenyofService).Larpartitiondechargepermetd'optimiserletraficetderpartir leschargessurunpooldeserveurspermettantl'accsauxressources,lacapacittotaledetraitement estalorsplusimportante. Lacapacitdeconnexionetdetraitementestproportionnelleaunombredemachinesprsentesdans lepool1(oucluster2).Ainsi,ilestpossiblededimensionnerconvenablementlepoolenfonctiondes besoins,ilsuffitd'augmenterlenombredemachinesdupoolpouraugmenterlescapacits.Surune architectureclassique,l'augmentationdecapacitncessiteunchangementmatrielsurleserveur (augmentationdelaRAM,changementduCPU,...)ouunremplacementcompletdemachine,cequi entraneunarrtduservice.

Illustration1:Schmasimpledeloadbalancing.

1 Pool : un pool dsigne un ensemble de ressources rutilisables gres de faon commune pour un ensemble d'usagers(processusinformatique,utilisateurs,ordinateur,etc). 2 Cluster:enrseauetsystme,letermeclusterpeutdsignerunegrappedeserveurs(oufermedecalcul)constitue dedeuxserveursauminimum(appelaussinuds)etpartageantunebaiededisquescommune,pourassurerune continuitdeserviceet/ourpartirlachargedecalculet/oulachargerseau. Encalculdistribu,leclusterdcritunsystmeinformatiquecomposd'unitsdecalcul(microprocesseurs,curs, units centrales) autonomes qui sont relies entre elles l'aide d'un rseau de communication. Un systme d'exploitationspcialis(parexempleMosix),exploitealorsleslmentsdu cluster pourgrerlarpartitiondu calculoudutraitementraliser.

1.2.2 Algorithmes
Lesloadbalancersutilisentdesalgorithmesafindedterminercommentrpartirlachargesurles pools de ressources. Il en existe deux catgories, les algorithmes dterministes et les non dterministes.
a) Algorithmesdterministes

Unalgorithmedterministetraitentlesdemandesdefaonlinaireetensuivanttoujourslemme schmaderpartition.Cetyped'algorithmesassurelapersistance,c'estdirelefaitqueleclient soittoujoursredirigverslemmeserveur. Les applications Web dynamiques utilisent souvent des mcanismes de sessions, comme les sessionsPHP,quinepeuventfonctionnersanscettepersistance.Nanmoins,departleurprincipede fonctionnement,cesalgorithmesnegarantissentpasunerpartitionoptimaledelacharge. TablesdeHash:Cetalgorithmeconstruitunetabledecorrespondancepartirdel'adresseIPdu clientpourredirigerceluiciverslemmeserveurchaquenouvellerequte,cecidurantunlapsde tempsprdtermin.Cettefaondefairepeutposerdesproblmeslorsquelesclientspassentviaun mme proxy,cesderniersserontredirigsverslemmeserveurdgradantainsilaqualitdela rpartitiondecharge. IllustrationdetablesdeHash: Serveur Serveur1 Serveur2 Serveur3 Serveurn ServeursetIP: IP 129.168.10.3 129.168.10.4 129.168.10.5 129.168.10.n

TableIPHash,onprendl'IPduclientcommecletl'IPduserveurcommevaleur: Cl(client) Valeur(serveur) 194.153.205.26 194.28.12.1 178.12.77.1 194.28.12.4 194.28.15.7 178.12.73.1 194.28.13.5 178.12.78.2 129.168.10.3 129.168.10.4 129.168.10.n 129.168.10.3 129.168.10.n 129.168.10.4 129.168.10.3 129.168.10.5

Redirection:Lesclientssontenvoysversunserveurderedirection,celuicilesredirigeantsvers unserveurselonunalgorithmequiluipeutnepastredterministe.Unepertedeconnexionpeut alorssurvenirsileserveurverslequelleclientatredirigestindisponible.Cettemthodene corresponddoncpascequel'onattend,unehautedisponibilit. 4

b) Algorithmesnondterministes

Lesalgorithmesnondterministesnepermettentpaslapersistanceeuxseulscarilsnedonnent paslammesortiechaqueexcutiondel'algorithmeetncessitentunmcanismeauxiliairepour assurercettetche.Parcontreilsoffrentlarpartitiondechargelaplushomogneetoffrentles meilleuresperformancessurlesconnexionspermanentes(ftp,smtp,...). RoundRobin Leroundrobinoutourniquetestunalgorithmepourslectionnertousleslmentsd'ungroupe quitablementetrationnellement,encommenantparlepremierlmentdelalistejusqu'arriver lafinetrecommencenouveaudepuislepremierlmentfrachementarrivenliste. Leastconnection Leserveurrenvoieversleserveurlemoinscharg.Sienthorieilsembleleplusadapt,enralit dans le cadre du Web dynamique, un serveur peut tre considr comme charg alors que les processussontenattented'unerequteversunebasededonnes. FirstResponse Lesrequtesclientssontenvoyessimultanmenttouslesserveursetlepremierquirpondsera chargdelaconnexion.Difficilemettreenuvreetrarementemploy.

1.2.3 Topologiesrseau
Notiondeserveurvirtuel: Unserveur virtuelestunserveurdehautedisponibilitethautevolutivitimplmentsur un cluster reldeserveurs,ilesttransparentpourlesutilisateursfinaux,lesutilisateursinteragissent avec le cluster comme si c'tait un seul serveur de haute performance. Pour une meilleure explicationonpeutvoirleschmasuivant:

Illustration2:Reprsentationd'unearchitecturesimple avecloadbalancertransparentpourlesclients.

Les serveurs rels etle loadbalancer peuventtreconnects suruneLANouuneWAN. Les balancers peuventdlguerlesrequtes auxdiffrentsserveursetfairedesservicesenparallle pourqueleclusterpuisseapparatrecommeunserviceavecuneseuleadresseIP,pourrpondreaux requtes le loadbalancer peut utiliser les technologies IPLevel ou ApplicationLevel. L'volutivitdusystmeestobtenuesoitenajoutantouensupprimantdemaniretransparenteles nudsducluster.Lahautedisponibilitestprvueparladtectiondeschecsdesnudsoudela configuration.Pourcombattrelasurchargedetravaildesserveurs,ilyadeuxsolutions. L'uneconsistefairevoluerunemachineenunserveurdehauteperformance,maisonrisque encoreunefoisdesurchargerleserveursilesrequtess'incrmentent,leprocessusdemisejour duserveurestaussicomplexequelecotesthaut. L'autrepossibilitestd'utiliserunesolutiondeserveursmultiples,pourpasserd'unsystmevolutif de services rseau un cluster de serveurs. Quand la charge s'incrmente, on peut ajouter un nouveauserveurouplusauclusterpourrpondreaunombrecroissantderequtesetobtenirdecette manireunbnficeperformance/cot.Parconsquent,ilestplusfacileetmoinscoteuxdelefaire voluer. Pourconstruirelesclustersondisposedeplusieursmthodes,onaborderalespluscommunes.

Clusterd'quilibragedechargebasenDNS. LeDNS balancingestprobablementlamthodelaplussimplepourconstruireun cluster de service rseau. Il utilisele nomdomaine pour distribuer les requtes auxdiffrents serveurs traverslarsolutiondenomdomainepourlesadressesIPdesserveurs.Lorsqu'unerequtearriveau serveurDNSpourrsoudrelenom,leserveurDNSdonneunedesadressesIPensebasantsurune planification de stratgies (comme le mode roundrobin par exemple). Ensuite les requtes subsquentesquiviennentdesclientsenutilisantlemmenomduserveurdanslecachelocalseront envoyesverslemmeserveurpourunepriodedonne(timetoliveouTTL). Cependant,dlanaturedesclientsetlestockageencacheduDNShirarchique,celapeutposer desproblmesdedsquilibredechargeentrelesserveursetconduireunesurchargeden'importe quelserveur.Unemauvaiselectiondelavaleurdeduredevie(TTL)del'enregistrementdansla configurationduDNSpeutdevenirunproblme.Avecunetroppetiteouunetropgrandevaleurle serveurDNSpeutmontersaturation.MmesilavaleurduTTLestmisezro,lafinessede l'ordonnancement est diffrente pour chaque hte, le comportement de chaque utilisateur est diffrent, car il yades clients quisurfent surquelques pages pendantquelques minutes, mais d'autresontl'habitudedesurfersur despagesdusitependantuntempsindtermin.Deplusle DNSbalancingn'estpasfiablecarlorsqu'unnudtombeenpanne,lesclientsquisontdirigs versl'IPd'unserveurenparticuliernetrouverontpasleserveuretleproblmeaugmentequandles clientsappuientsurleboutonactualiserdunavigateur.

Rpartiteurdechargebassurunclusterd'quilibrage. Lerpartiteur,galementconnucommeloadbalancer,peuttreutilispourrpartirlachargeentre les diffrents serveurs du cluster afin que les services parallles du cluster puissent apparatre commeunseulserveuravecuneIPunique.Lesclientsfinauxinteragissentcommes'ils'agissait d'unseulserveursansconnatrelavraieinfrastructurequ'ilyaderrire.Parrapportl'quilibrage dechargebasenDNS,lerpartiteurpeutplanifierlesdemandesdefaonprcisepourchaque connexionafind'obtenirunmeilleurquilibrageentrelesserveurs.L'undesavantagesestquela panned'unserveurn'entranepasl'arrtdutravailpourl'utilisateurfinalcarunautreserveurprend lerelaisetl'checesttransparentpourleclient.Autreavantagelagestionduserveurdevientplus facile,l'administrateurpeutretirerunserveurouplusdupoolchaudn'importequelmoment sansinterromprelesservicespourlesutilisateursfinaux. L'quilibragedechargepeutsefaireendeuxniveaux,auniveaudelogicielouauniveaud'IP. Lesserveursvirtuelspeuventtremisenplacedetroismanirespourl'quilibragedecharges: 1. VirtualserverviaNAT. 2. VirtualserverviaTunneling. 3. VirtualserverviaRoutagedirect.

ServeurVirtuelviaNAT UnserveurvirtuelviaNATfonctionnesurleprinciped'adressesIPvirtuelles,ainsilaseule"vraie" adresseIPestpourleloadbalancer.Leloadbalancerreoitunerequtequ'ilvatraiteretdistribuer unserveurrelselondescritresprcisdfinisdansl'algorithmedeslection. Avantages: Peuttremisenplaceavecn'importequelsystmed'exploitationavecsupportTCP/IP. LesserveurspeuventutiliserdesIPprives. UneseuleIPestrequiseparleloadbalancer. Inconvnients: Evolutivitlimite,ungoulotd'tranglementpeutexisterquandlesserveurssonttropnombreux, puisque lesrequtesetlesrponsesdoiventpassertraversle loadbalancer etlasortie d'une interfaceestventuellementlimite.

Illustration3:SchmarseaupourlatopologieNAT.

ServeurvirtuelviaIPTunneling

AvecleserveurvirtuelviaIPTunneling,leloadbalancergreseulementlesrequtesversles serveursrelsetchaqueserveurenvoielarponsedirectementauclient.Doncleloadbalancerpeut grerunenormequantitdedemandesetn'estplusunpointdedfaillancepossible. Lafonctiond'IPTunnelingpeuttreutilisepourconstruireunbonserveurvirtueldehaute performance, puisqu'au moment ou le serveur proxy reoit une requte, celuici peut accder directementinternetpourrcuprerdesobjetsetlesretournerdirectementauxclients.

Illustration4:SchmarseaupourlatopologieIPTunneling.

ServeurvirtuelviaDirectRouting. Tout comme le tunneling, le directeur des processus de Linux, ne traite que la moiti d'une connexionsurleserveurvirtuelviaroutagedirect,decettemanirelespaquetspeuventsuivre diffrentesroutessurlerseau,cequipeutaugmenterl'evolutivitduserveur.

Illustration5:SchmarseaupourlatopologieDirectRouting.

Leschmasuivantaidecomparerlestroismthodes. VS/NAT VS/Tunneling Serveur Serveurrseau Nombredeserveurs Serveurpasserelle N'importelequel LAN 1020serveurs Loadbalancer Tunneling LAN/WAN Nombreux RouteurduLAN

VS/Routagedirect SansdispositifARP LAN Nombreux RouteurduLAN

10

1.3 Connexionscurise
Lesservicesdisponiblesdepuislerseauinternetsontaujourd'huideplusenplusnombreux.Dece fait,lesentreprisessontdeplusenplusvulnrablesauxattaques.Ilestdoncprimordiald'appliquer des politiques de scurit autour de ces systmes, comme par exemple la mise en place d'une connexionscurise. Uneconnexionscuriseestuneliaisonquipermetd'changerdesdonnesdemanirecrypte, d'tresrdecommuniqueravecleboninterlocuteur(authentification)etdeconserverl'intgritdes donnes(pasd'interceptionparunpirate). Afind'tablircegenredeconnexionentreunserveurWebetuninternaute,ilexisteunprotocole nommSSLpourSecureSocketsLayer.

Principedefonctionnement: 1 Le client demandeauserveurdes'authentifier.Il envoiegalementlalistedessystmes de cryptagequ'ilsupporte(triparordredcroissantselonlalongueurdescls).

Illustration6:Demanded'authentificationdelapartdel'internaute.

2 Le serveur envoie son certificat, contenant sa cl publique signe par une autorit de certification.Ilenvoiegalementlenomducryptageleplusscurisparmilalistereueaveclequel ilestcompatible.

Illustration7:Envoiduserveurdesapropreclpublique.

11

3Leclientvrifielecertificatdepuisuneautoritdecertification.Puiscreetenvoieunecl cryptel'aidedelaclpubliqueduserveur.Elleseravalabledurantlasession3.

Illustration8:Crationd'uneclcrypteaprscertification.

4 Le serveur va dcrypter la cl du client l'aide de sa cl prive. La connexion scurise commencealorsutilisantuneclsymtriqueunique.

Illustration 9 : Dcryptage de la cl publique du client par le serveur.

Ceprotocolepermetdemaniretransparentepourl'utilisateurd'obteniruneconnexionscurise. L'utilisationd'uncryptageasymtriquepuissymtriquepermetdesimplifierlecryptage(uneseule cl)etdegagnerenperformance,lecryptagesymtriquetantnettementplusrapide. Toutefois par rapport notre sujet concernant l'quilibrage de charge et la scurisation des connexions,unnouveausoucissedvoile,celuidelapersistance.Eneffetlorsquel'onmetenplace unesolutionutilisantle loadbalancing,ilsetrouvequelaconnexionpeuttreperduesiundes serveursdupoolvientneplusfonctionnercorrectement.Nousabordonscetteproblmatiqueplus endtaildanslapartiesuivante.

3 Unesession,dansnotrecas,estlefaitd'accderauserveurWeb.Lasessionestdoncinitielorsquel'internautea tablituneconnexionversleserveurWeb. L'ouverturedesessionesticiimplicite,c'estdirequ'ellenencessitepasunloginet unmotdepassepourtre initialise,sinononparled'authentification.Lasessionimpliciteestengnralutiliselorsquedesdroitsetdoncdes effetssontlimits. Lafermeturedelasessions'effectuelorsqu'onfermesonnavigateur,ledemandeexplicitement(dconnexionaprs unephased'authentification)ouencorelorsquel'internauten'interagitplusavecleserveurWebdepuisuntemps dfini.

12

1.4 Persistance
Ondfinitlapersistancecommelemcanismeresponsabledelasauvegardeetlarestaurationde donnes,afinqu'unprogrammepuisseseterminersansquesesdonnesnisontatnesoientperdus. Danscecontexteonprendlapersistancecommelacapacitduloadbalancerpourmaintenirune connexionvirtuelleentreleclientetunservicespcifique(HTTP/HTTPS).

Exempleconcret: Si un utilisateur dmarre une session sur un des serveurs du pool et que celuici vient tre dfaillant, il faut imprativement tre capable d'assurer qu'un autre serveur puisse continuer fournirlasessiondecetutilisateur.

Illustration10:Ouverturedesessionparleclientsurunserveurdsignparleloadbalancer.

Illustration11:Dfaillanceduserveursurlequelestconnectl'utilisateur.

13

Pourrsoudrecegenredeproblmes,desmthodesdepersistancesurlesquilibreursdecharges existent:

Cookies Leserveurciblemetuncookiecontenantunidentifiantversleclient.L'quilibreurdecharge pourraensuiteretrouverleserveurinitiallorsqueleclientluiprsenteralecookie,sicette mthodeprsentel'avantaged'tresimplemettreenuvre,ellen'estpasfiableenpratiquepuisque riennegarantitqueleclientacceptelescookiesetquelesrglesdebonneconduiteinterdisent deforcerl'utilisateurlesaccepterpourpouvoiraccderausite.

Tracking LerpartiteurdechargeaffecteunserveurparRoundRobinoutoutautrealgorithmequel'onapu citerprcdemment,etmmoriseleliendansunetable.laconnexionsuivante,sileclientest reconnu(parsonadresseIPparexemple)leserveurlereconnecteauserveurprcdemmentaccd. Toutcommel'algorithmedterministedehashage,seuleunesessionlimitedansletempspeuttre gre.

Espacedisquecommunenrseau Danslecasdeloadbalacing,commeplusieursserveurscohabitentsurlemmerseaulocalilpeut treavantageuxdeleurpermettredepartagerdesfichiers.C'estcequepermettentlessystmesde fichiersenrseau,dontleprincipalreprsentantestNFS(NetworkFileSystem)pourlessystmes Unix. Lesystmedefichiersdistantestprsentunutilisateurdurseaucommes'iltravaillaitsursa machine,etceluicimetdesappelssystmehabituelspouryeffectuerdesoprationsd'entre sortie. Il utilise un appel de procdure distance, ou Remote Procedure Call. Le rsultat de l'oprationestretournl'expditeurparlemmeprocd. Onconcevraaismentqueceprocessus,quiconsistecommanderl'excutiond'unprogrammesur unautreordinateur,peuttreunefaillebantedescurit.Ilestrecommanddelimiterl'usagedes systmesdefichierenrseaudesenvironnementssoigneusementcontrls.Ilestdoncimportant descuriserlesaccsmmesidansuncasde loadbalancing cesystmeneseraitouvertqu'aux serveursdelasolutiondehautedisponibilit. Cettesolutionpermettraitauxserveursdansunsystmedeloadbalancingdepartagerentreeuxdes fichierscontenantlessessionsetainsiassurerlapersistance.

14

Stockagedessessionsenbasededonnes Uneautresolutionestdegarderlesdonnesdesessiondansunebasededonnes.Engnral,cela estmauvaispourlaperformance,carlachargesurlabasededonnesaugmente.Onutilisede prfrencelesbasesdedonnespourstockerdesinformationsmoinsphmresquelesdonnesde session. Pour viter une base de donnes de devenir un point de dfaillance unique et d'amliorer l'volutivit,labasededonnesestsouventreproduitesurplusieursmachinesetl'quilibragede chargeestutilispourrpartirlachargederequtestraverscesrpliques.

Illustration12:quilibragedechargesurlesserveursdebasesdedonnes.

15

1.5 Solutionsexistantespourl'quilibragedecharge
L'quilibrage de charge utilise essentiellement deux techniques qui sont le DNS et le load balancing.Pourraliserdel'quilibragedechargeplusieurssolutionssontpossibles,leplussimple restantl'utilisationdeDNS.DanslecasduDNS,iln'yapasdeloadbalancer,c'estleserveurDNS quivaredirigerleclientversuneadressediffrenteappartenantaummenomdedomainequele sitedsirchaquerequte.Ainsivial'algorithmederoundrobinlesserveursrpondenttourde rleauxdemandes. L'utilisation de DNS ne permet malheureusement pas de prendre en compte les capacits ou disponibilitsdesmachines,ainsiuneautresolutionutiliseestcelleduloadbalancing.

1.5.1 LVS
LinuxVirtualServer (LVS)estunesolutionavancederpartitiondechargepour GNU/Linux. C'estunlogiciellibrecommencparWensonZhangenmai1998.Lamissiondeceprojettaitde construireunserveurdehauteperformancepourLinuxquipuisseavoirbonnevolutivit,fiabilit etrobustessetoutenutilisantlatechnologieducluster. L'objectifprincipalduprojet LVS consistedvelopperunsystmeIPavancderpartitionde chargeparlogiciel(IPVS),rpartitiondechargeparlogicielauniveaud'applicationetcomposants pourl'administrationdeclusters.

1.5.2 Nginx
Nginx(prononcengineX)estunserveurHTTPlibre,opensourceethauteperformanceainsi qu'unreverseproxy4.Ilintgregalementduproxypourl'IMAPetlePOP3. IlatdveloppparIgorSysoeven2005.ActuellementNginxhbergeentre1%et4%detousles nomsdedomaineaumonde.Nginxestreconnupourseshautesperformances,sastabilit,son ensemble de fonctionnalits, sa configuration simple ainsi que sa faible consommation de ressources. Contrairementauxserveurstraditionnels,Nginxnereliepasunprocessusunerequteclient.la place,ilutiliseunsystmevolutifetunearchitectureasynchrone.Cettearchitecturelgre,mais trsimportante,luipermetd'utiliserlammoiredefaonprdictive. Nginxpropulseplusieurssitesforteinfluence:WordPress,Hulu,OhlohetTorrentReactor.

4 Lereverseproxyestunserveurproxymontl'envers.Contrairementauserveurmandataireclassique,leproxy inverseestorientductdesserveursWeb.LaconnexionentreinternautesetserveursWebs'effectueparson intermdiaire.Cettetechniquepermetnotammentdeseprmunircontrelesattaquesprovenantdel'extrieuren ajoutantunecouchedescuritsupplmentaire,lamiseencachedespagesstatiques,unerpartitiondelacharge.

16

Fonctionnalits: OnpeututiliserNginxcommeunloadbalancersimple,pardeuxmthodes,soitviaIPHashsoit parroundrobin. AveclamthodeparIPHash,Nginxgarantitquelesrequtesduclientvonttreenvoyesaumme serveur.Sileserveurtombeenpanne,lesrequtesserontenvoyesversautreserveur.Enutilisantla mthodeparIPHash,lepoidsduserveurnepeutpastrespcifi,siunserveurdoittresupprim unmomentdonn,ildoittreenlevlamaindelaconfigurationaveclafinalitdeconserverla granularit. L'autremthodequ'utiliseNginx,estleroundrobin,onpeutspcifierlepoidsdechaqueserveur ainsiquelenombremaximald'checsetletempsaprslequelleserveurestconsidrcomme inoprant. Les requtes sontdistribues par roundrobin en fonction dupoids des serveurs (on considrelepoidsduserveurcommelachargemaximaledetravailqueleserveurpeutmaintenir), sileclientessaiedetravailleravecunserveurquiesttombenpanne,larequteseraenvoyeau serveursuivant.

1.5.3 Pen
PEN est un loadbalancer simple agissant sur les protocoles de la couche TCP (http, snmp, pop3,...), ilutilisele tracking pourassurerlapersistance.PENpossdeunetablepermettantde stockerlesconnexionseffectues.Lorsd'uneconnexionparunclient,PENvrifiedanslatables'il adjralisuneconnexioncorrespondantl'IPduclient.Sic'estlecas,ilappelleserveurayant djtraitcetteconnexionassurantainsilemaintientdelasession.Sinon,ileffectueunroundrobin classiqueetaffecteunserveurlaconnexionentrante. Latabledesconnexionsestunefiletournante,cequisignifiedoncquelorsquecelleciestpleine, PENcrasel'entrelaplusancienne. PENestaussicapablededtectersiunserveurestindisponible,ilcherchealorsunautreserveur danslalisteenomettantleserveurleplusrcemmentutilis.

1.5.4 HAproxy
HAproxyestunserveurHTTPsimplequiatdveloppparlefranaisWillyTarreauen2002.Il s'agit d'un serveur haute performance, lger et consommation de ressources minimale, son architecturemonoprocessusluipermetdegrerplusieursmilliersdeconnexionssimultanessur plusieursrelaissanseffondrerlesystme. Ilestgalementcapabledes'arrterendouceursanspertebrutaledeservice.Autreparticularit,ila lacapacitdemodifier/ajouter/supprimerdesenttesdanslarequteetlarponse. PourtravailleravecHAproxyenmodeloadbalancer,ilfautsavoirqu'ilutilisel'algorithmeround robinpourlarpartitiondechargeetlescookiespourassurerlapersistancedesessionentrele clientetleserveur. 17

PrincipedefonctionnementdeHAproxy:

Illustration13:L'internauteveutinterrogerl'URL1,HAProxyagitenloadbalanceretledirigeversle ServeurA.

Illustration14:LeserveurArpond,HAProxytransmetlapagel'internauteetmetenplaceuncookie identifiantsurleserveur.

Illustration15:L'internauteinterrogel'URL2,HAProxyrechercheunventuelcookieetleredirige.

Illustration16:Leserveurrpond,HAProxytransmetmaisnerajoutepasdenouveauuncookie.

18

LVS Type Licence SSL/TLS Se s sions Cache CoucheOSI Protocoles Portabilit M aintenu Algorithm es Rseau/Transport TCP Unix 2004 Nombreux LoadBalancer GPL

Nginx ServeurWebetReverseProxy typeBSD

Pen LoadBalancer GPL

HAProxy LoadBalancer GPL

Application HTTP/HTTPS Unix Nov.2009(versionstable) RoundRobin

Application TCP(toutprotocoles) Unix/Window s Mai2008 RoundRobin

Application HTTP/HTTPS Unix 28janv.2010 Nombreux

Lgende

Nonprisencharge Prisencharge

Illustration17:Tableaucomparatifdequelquessolutionsdehautedisponibilitexistantes.

19

1.5.5 Logicielscomplmentairesauxquilibreursdecharges

Heartbeat

Heartbeat(ouPulse)estunsystmedegestiondelahautedisponibilitsouslicenceGPL. Ilmetenplaceunsystmeclassiquedeclusteringenhautedisponibilitbassurdesbattements decur.Ilexcutedesscriptsd'initialisationslorsqu'unemachinetombe(plusdeperceptiondu battementdecur)ouestnouveaudisponible(battementdecurretrouv).Ilpermetausside changerd'adresseIPentrelesmachinesl'aidedemcanismesARPavancs. Pourfonctionner,Heartbeatdoittrecombinavecungestionnairederessourcesdecluster(CRM), quipermetledmarrageetl'arrtdesservices(adressesIP,serveursWeb,etc). Heartbeatestlivravecungestionnairederessourcesprimitives,maisilnedtectepasleschecsau niveaudesressources. PourrsumerHeartbeatpermetlepartaged'uneadresseIPvirtuelleauxdiffrentesmachinesdu cluster.Lanotiondematreetd'esclaveestutiliseici;unedesmachinesestdclarematrequi rpond au trafic sur l'IP virtuelle, les autres sont esclaves et selon la priorit qui leur est attribueprennentlamainencasdedfaillancedumatre. CestermesdematreetesclavefontpartiedelanotiondeFailOverService,quiconsisteen unbasculementautomatiqued'unquipementinformatiquedfaillantversunquipementalternatif ouenveille.

Mon

Ledmonmoninstallsurl'quilibreurdechargepermetdesurveillerlesservicesetnudsde serveurdanslecluster. Ilpermetdesurveillerdefaongnrale: lesserviceslancs(cequenefaitpasHeartbeat) lesressources(rseau,locales) Onpeutluidfinirdesalertesetagirenfonction,ainsiencasdeproblmeonpeutexcuterdes scripts,envoyerunmailpournotifierunadministrateurladfaillancerencontre... Ainsiencasdedtectiond'unedfaillance,ilestpossiblededemanderHeartbeatd'agirsurun hteetdeleretirertemporairementdunudafindenepaslaisserunemachinemortedans lenud: lematreseradclarmortparl'esclave l'esclaveprendralamainetlesressourcesdudfuntmatre

20

Ldirectord

Ldirectord(appelNannysousRedHat)fonctionnesousLinux,avecousansLVS,etapourbutde surveiller la sant des serveurs rels en faisant priodiquement une demande eten vrifiant la rponseattendue.PourlesserveursHTTP,celacorrespondunerequted'URLconnueainsiqu'une vrification de la rponse qui doit contenir la chane attendue. Ldirectord fonctionne pour les servicesHTTP,HTTPS,FTP,IMAP,POP,SMTP,LDAP,NNTPetlesserveursMySQL. SiunserveurrelchoueunerequtemiseparLdirectord,alorsleserveurdoittreretirdupool deressourceetdevratrerinsrunefoisrpar.

Piranha

OutildeconfigurationLVSdisponibleavecRedHatClusterSuitePiranhaConfigurationTool. Piranha(ConfigurationTool)estuneinterfaceutilisateurgraphique(GUI)quifournituneapproche structuredelacrationdufichierdeconfigurationpourLVS/etc/sysconfig/ha/lvs.cf. Laconnexionlapaged'accueildonneaccsauxquatreprincipauxcrans(cf.Annexe1): contrle/commande Paramtresglobaux laredondance serveursvirtuels

Keepalived

KeepalivedgreuneIPvirtuelleetlarpartitiondechargedepuiscetteIPversdesserveursrels hbergeantlesservicesrpartis.IlutiliselacoucheIPVSdunoyauetlarpartitionestpilotedepuis lebinaireipvsadmin. Keepalivedmonitorelesserviceshbergssurlesserveursetretirelesmachinesduclusterencas de dfaillance. Lorsqu'il dtecte que le service est de nouveau oprationnel, le serveur correspondantestrintgraucluster.LaredondancedurpartiteurduchargeestassureparVRRP quisynchroniseunserveurmatreetunserveuresclaveenmontantlesIPvirtuellessurl'unou l'autredesserveursenfonctiondeladisponibilit. Ilexistedeuxtypesdeconfiguration: l'uneutilisantdeuxrseauxetlarcrituredespaquets(LVSNAT), l'autreutilisantunseulrseauetledispatchdespaquets(LVSDR). Danslesdeuxcas,deuxserveurssontutilisspourlarpartitiondecharge(unMASTERetun BACKUP)afind'assurerlaredondance.

21

DRBD

DRBDDistributed Replicated Block DeviceestunmoduledunoyauLinuxquiconstitueun systmedestockagedistribu.OnpeututiliserDRBDpourpartagerdespriphriquesentreles serveursLinux(disquesdurs,partitionsdesvolumeslogiques,etc). DRBDmetenuvreunpriphrique(blockdevice5)quipeuttreutilispourlestockageetquiest reproduitpartird'unserveurprincipalunouplusieursserveurssecondaires.Lepriphriquede distributionestgrparleserviceDRBD. Surleserveurprimaire,lesdonnessontcritessurlepriphriquephysiqueetdistribuesversles servicessecondairesdeDRBD.Surleserveursecondaire,lesdonnessontreuesetcritessur le priphrique physique. L'information est partage entre le serveur principal et le serveur secondairedemaniresynchrone,celasignifiequeDRBDpeuttreutilisdanslessolutionsde hautedisponibilit.

DRBD utilise des priphriques logiques (normalement appels /dev/drbdX o la X est le nombre de priphrique)sur des priphriques physiques existants de chacun des serveurs du cluster. Les critures sont transfres du priphrique logique (/dev/drbdX) au priphrique physiqueetsimultanmentversleserveursecondaire.Leserveursecondairetransfrelesdonnes verssonpriphrique. Quand le serveur primaire tombe en panne, le processus d'administration du cluster fait la promotion du serveur secondaire au serveur primaire. Pour faire cette transition requiert une vrificationsubsquentdel'intgralitdusystmedefichiers,quandleserveurprimairequiavait tombenpanneretourneau cluster,unesynchronisationestfaiteetleserveurpeuttreounon retournersonstatutdeserveurprimaire.

5 Un BlockDevice: Fichiersenmodeblocoupriphriques debloccorrespondent des dispositifspar lesquelslesystmedplacelesdonnessouslaformedeblocs.Cespriphriquesnudsreprsententsouventdes dispositifs adressables tels que les disques durs, lecteurs de CDROM, ou des zones mmoire. Lesystmed'exploitationalloueuntampondedonnespourmaintenirunseulblocpourchaqueentreetsortie. Lorsqu'unprogrammeenvoieunedemandedelectureoud'criturededonnessurlepriphrique,lesystmestocke chaquecaractredecesdonnesdansletamponappropri.Lorsquelebufferseremplit,l'oprationappropriea lieu(transfertdedonnes)etlesystmeeffacelammoiretampon.

22

2 Miseenpratique
Pour l'laboration d'une architecture de loadbalancing, nous avons choisi de tester la suite de clusteringdeRHEL/CentOSbaseLVS.

Pourquoicechoix? Pour plusieurs raisons, LVS tout d'abord est toujours la solution la plus utilise parmi celle existantes.Unautrelmentquinousafaitchoisircettesolutionestlefaitqu'ilestactivement soutenupardesentreprises(Teuto.net,Voxel.net,...)poursondveloppementetnotammentpar RedHatquiareprislasolutionLVSenl'amliorantpoursonsystmed'exploitation.Lesoutilsde l'diteurRedHatsonttrsrpandusdanslemondeprofessionneletsontrputspourleurfiabilit, leurflexibilitetleursperformances. A cela, s'ajoute le fait que ce rpartiteur de charge supporte le protocole HTTPS ainsi que la persistance. ToutesnosmachinesfonctionnementsousCentOSquiestunclonedeladistributionprofessionnelle RHEL(RedHatEntrepriseLinux).Ellebnficiedel'ensembledesesoutilsethritedesafiabilit. Outresesqualits,celanouspermettrademieuxnousfamiliariseravecunsystmebassurRPM.

Pourinformations,lasolutiondeclusteringRedHatcomprend: LVS(ipvsadm) Nanny Pulse Piranha

23

2.1 Scnarios
Afind'avoirunpaneldetestesreprsentatif,ilestncessairededfinirquelquessituationsquel'on rencontrefrquemmentensurfantsurleWeb.Ainsinouspouvonsdistinguertroiscasprincipaux:

Toutd'abord,lapagestatique,possdantunpoidsfaiblede16ko(moyennedespagesstockes dansunserveurmandatairecommeSquid). Ensuite,lapagestatiquelourde,agrmented'unemultituded'imagesoubiend'unephotohaute rsolutionpourunpoidstotaldpassantles1024ko. Pourfinir,unsitecommercial.Icilesenjeuxctserveursontbienplusimportants,cesite requireunmoteurPHP,unebasededonnes,ainsiqu'unescurisationdestransactions(SSL).

Afin demieuxcomprendrel'interactiond'uninternauteaveclesite,nouspouvons imaginer un enchanementdeliensverslesquelsilpourraitsediriger.

Illustration18:Comportementpossibled'uninternautesur unsitecommercial.

Cependant,ilestimpossibledesavoirquelcomportementvaavoirl'internautepuisqu'ilpeuttrs bientreunhabitudusiteetconnatrelesproduitsqu'ildsireetdoncnepaspasserautantde tempsqu'unautre.Ainsi,nousnetestonspasplusieurschemins,maisbienunepagefrquemment utiliseparlesinternautescommelapaged'accueil. EnHTTPetenHTTPS RoundRobin


Pagestatique Pagestatiquelourde PagedynamiqueOSCommerce

RoundRobinWeight
Pagestatique Pagestatiquelourde PagedynamiqueOSCommerce

LeastConnection
Pagestatique Pagestatiquelourde PagedynamiqueOSCommerce

Tableau2:Rcapitulatifdesscnariosquenousavonschoisisdesuivre.

24

2.2 Configurationsmatriellesetlogicielles
Machine Routeur HARDWARE CPU IntelP4@2.80GHz RAM 512Mo DD 40Go SOFTWARE OS logiciels CentOS5.4 Openssh IPTables CentOS5.4 Pulse Openssh Piranha Pulse Openssh Zabbix Openssh Apache Openssh Apache Openssh Apache Openssh Apache Openssh MySQL DRDB Openssh MySQL DRDB Openssh NFS

LVS1

IntelP4@2.80GHz

512Mo

40Go

LVS2

IntelP4@2.80GHz

512Mo

40Go

CentOS5.4

Sweb1

IntelP4@2.80GHz

768Mo

40Go

CentOS5.4

Sweb2

IntelP4@2.80GHz

768Mo

80Go

CentOS5.4

Sweb3

IntelP4@2.80GHz

1024Mo

40Go

CentOS5.4

Sweb4

IntelP4@2.80GHz

512Mo

40Go

CentOS5.4

MySQL

IntelP4@2.80GHz

512Mo

40Go

CentOS5.4

MySQL

IntelP4@2,00GHz

512Mo

40Go

CentOS5.4

NFS

IntelP4@2.40GHz

768Mo

80Go

CentOS5.4

2.3 Rseau

Illustration19:Schmadel'architecturerseaumiseenplace.

26

Sur le schma prcdent, nous pouvons voir que notre rseau prive comporte l'ensemble des serveursquiretournentdesinformationsauxclients.Ainsinousavons: lesserveursWeb(4serveursApache)quipermettentd'interprterlessitesetderetournerune pageunclient. lesserveursdebasededonnes(2serveursMysql)quicontiennentlesdonnesdesutilisateurs enregistrssurlesite(login,motdepasse,informationspersonnelles,contenudupanier,...). unserveurNFSquicontienttouteslesinformationscommunesauxserveursWeb(sitesinternet, sessionsd'authentifications,certificatspourleSSL).

Nousallonsdoncexpliquerendtailcequiatfaitpourconfigurercesmachines: installationdesrpartiteursdecharge rplicationdesbasededonnesMySQL configurationduSSL(HTTPSaveccertificat) configurationduserveurNFS

27

2.3.1 Lesrpartiteursdecharge
LeclusterLVSestcomposdedeuxgroupesdebase:lesrouteursLVSetlesserveursrels.Pour viterlespointsindividuelsdedfaillance,chacundecesdeuxgroupesdoitcomporteraumoins deuxmachines. C'estpourquoinotrearchitectureestcomposededeuxserveursLVS:unserveuractifquisecharge delarpartitiondechargeentrelesdiffrentsserveursrelsetunserveurdesecoursquiresteen veilleprtreprendrelerelaisencasdepanne.

ComposantsdelasolutionLVSdeCentOS:

Illustration20:CommunicationdesservicesdeLVS.

28

LasolutionLVSdeCentOSestlammequecelledeladistributionRHELdeRedHat,elleest composedeslmentssuivants: Pulse: Ilestlancaudmarragesurleserveuractifetceluidesecours.Surleserveuractif,le daemonpulselancel'ensembledesautresdaemonsrelatifsLVS. Sur le serveur de secours, le daemon pulse se charge de dterminer l'tat du serveur actif en excutant un simple heartbeat un intervalle paramtrable, s'il constate la dfaillance de son homologue,ilsechargeradeprendrelerelaisenusantdel'outilsend_arp.

LVS:LedaemonLVSestlancparpulsesurlerpartiteurdechargeprincipal.Illitlefichierde conguration /etc/sysconfig/ha/lvs.cf puisappellel'utilitaire ipvsadm pourgnreretmaintenirles tablesderoutage. SiNannyluiindiqueladfaillanced'undesserveursrels,LVSs'occupededemanderipvsadm deleretirerdelatablederoutage.

Ipvsadm:Cetutilitairesechargedemettrejourlestablesderoutagedanslekernel(noyau).Il permetd'ajouter,modifierousupprimerdesentres.

Nanny: Nannyestledaemonde monitoring quipermetdevrifierlebonfonctionnementdes diffrentsserveursrels.Optionnellement,ilpeutaussicontrlerleurtauxdecharge. Ilyaunprocessusnannydiffrentpourchaqueservice(HTTP,FTP,...)surveillsurlesserveurs rels.

send_arp:CetoutilpermetaurpartiteurdechargedesecoursdeprendrelesadressesIPvirtuelles durpartiteurdechargeprincipallorsquecedernierdysfonctionne.

PiranhaConfigurationTool:C'estuneapplicationwebpermettantlemonitoring,laconfiguration etl'administrationdesclustersLVS.C'estl'outilpardfautdisponiblesousRHEL/CentOS.

29

SupportduprotocoleHTTPSsousLVS: IlyadeuxapprochesdiffrentespourgrerleprotocoleHTTPSavecLVS: 1.Leserveurvirtuelmultiports: Cetteapprocheconsisteutiliserununiqueserveurvirtuelgrantlafoisleport80(HTTP)etle port443(HTTPS).

Celaestpossibleenutilisantlamthodedesfirewallmarksquiestunmoyensimpleetefficacede regrouperlesportsdesprotocolesmultiportstelqueleFTPouceuxdesprotocolesconnexestels queleHTTPetleHTTPS. CettemthodesebasesurlemarquageenPREROUTINGdespaquetsentrantssurlesports80 (HTTP)et443(HTTPS)pourqueLVSpuisselesredirigerverslemmeserveurrel. Ilestimportantdenoterquec'estiptablesquisechargedemarquerlespaquetsetnonLVS,ce derniernefaitquelirelemarquage. Lesfirewallmarkspeuventtrecouplesavecunemthodedepersistance,cequiestutiledansle casolesserveursrelsnepartagentpaslemmecertificatSSLoulessessions. 30

2.Leserveurvirtuelddi: Cetteapprocheconsisteutiliserunserveurvirtuelsupplmentairespcialementddilagestion duprotocoleHTTPS.Onseretrouveainsiavecdeuxserveursvirtuels:unpourleHTTPetunautre pourleHTTPS.

Sicesdeuxserveursvirtuelsexploitentlesmmesmachines,cesderniresdevrontavoiruneIP spcifiquepourchaqueserveurvirtuelpourvitercertainsbogues.Onpeututiliserpourcelades interfacesrseauxvirtuelles. Cettefaondefairecomportelesavantagesetinconvnientssuivants: +Possibilitd'avoirunpooldemachinesdiffrentpourleHTTPetleHTTPS. +Possibilitd'utiliserdeuxalgorithmesderpartitiondechargediffrentspourleHTTPetpourle HTTPS. +Possibilitd'avoirunmonitoringspcifiquepourchacundesdeuxprotocoles. +Possibilitdedsactiverunemachinesurunservicetoutenlalaissantfonctionnellesurl'autre. Ncessitededployeruneinterfacerseauvirtuellesurlesserveursrelsdanscertainscas. Configurationpluslonguequelamthodedesfirewallmarks. Consommationderessourcesplusleve,celas'expliqueparlefaitqueLVSgreunetablede routageplusimportanteetqu'ilyaplusdeprocessusnannypourmonitorerlesserveursrels. 31

InstallationdeLVS: L'installationdesoutilsLVSsefaitsimplementl'aidedelacommande: yumgroupinstallClustering Ilestncessaired'activerlefowardingdepaquetsenditantlefichier/etc/sysctl.conf: #ControlsIPpacketforwarding net.ipv4.ip_forward=1 Puisd'diterlesrglesdefirewallingl'aidedesoutilssystemcongsecurityleveltuietiptablespour ouvrirleport 3636 exploitparl'interfacewebdeconfigurationPiranha etpourpermettrele forwardingdepaquets.

ConfigurationdeLVS: LaconfigurationdeLVSsousCentOSsefaitvial'interfacewebdePiranha. AvantdelancerPiranhailfautconfigurerlemotdepassed'accsl'aidedelacommande: piranhapasswd Onpeuxmaintenantlancerledaemonpiranhagui: servicepiranhaguistart Maintenantilestpossibled'accderl'interfacewebPiranhavial'URL:http://192.168.0.1:3636 L'authentification se fait l'aide du login piranha ainsi que le mot de passe dfinit prcdemment.

32

Voici la description des diffrents crans de Piranha, des captures d'crans plus propres sont disponiblesenannexe. a)OngletCONTROL/MONITORING: Commesonnoml'indique,cettesectionpermetlecontrledel'tatduserveurLVS,iln'yarieny configurer.

b)OngletGLOBALSETTINGS:

PrimaryserverpublicIP: adresseIPpubliquerelleduserveurLVS.Danscasils'agitd'une adresseIPprivecarnotrerpartiteurdechargeestderrireunrouteur/parefeu. PrimaryserverprivateIP: adresseIPd'uneinterfacerseaualternativeduserveurLVS,celleci sertfaireunlienheartbeatsupplmentaire.Onpeutlaissercechampvide. Usenetworktype:topologiedurseau,dansnotrecass'ils'agitd'unrseauenNAT. NATRouterIP:adresseIPflottantedelapasserelleNAT,lesserveursrelsdevrontavoircetteIP commepasserellepardfaut. NATRouternetmask:masquesousrseauduNAT. NATRouterdevice:interfacerseauduLVSquidoitprendrel'IPdelapasserelleNAT.

33

c)REDUNDANCY:

RedundantserverpublicIP:adresseIPpubliqueduserveurLVSdesecours,lenotreauneadresse IPprivecarilestdernireunrouteur/parefeu. HeartbeatInterval(seconds):intervalleensecondesentrechaquevrificationdel'tatduserveur LVSprincipal,6secondespardfaut. Assume dead after (seconds) : temps d'attente avant la prise de relais lorsque le serveur LVS principalnerpondplus,18secondespardfaut. Heartbeatrunsonport:portdecommunicationavecleserveurLVSprincipal,leportpardfaut estle539.

d)VIRTUALSERVERS:

Cettesectionpermetdecrer,supprimer,modifier,activeroudsactiverdesserveursvirtuels. Pourcrerunserveurvirtuel,ilfautcliquersurleboutonADD.

34

e)VIRTUALSERVER:

Name:nomduserveurvirtuel,onpeutparexemplemettrelenomduservicequ'ilgre. Application:portd'couteduserveurvirtuel,parexemple80pourleprotocoleHTTP. Protocol:choixentrelesprotocolesTCPouUDP,pourleHTTP/HTTPSilfautslectionnerTCP.

VirtualIPAddress:adresseIPflottanteduserveurvirtuel. VirtualIPNetworkMask:Masquesousrseauduserveurvirtuel. Firewall Mark : marquage utilis pour grouper les ports de protocoles multiports ou ceux de protocolesconnexescommeleHTTPetleHTTPS. Si on dsire utiliser les firewall marks pour grer le protocole HTTPS (approche serveur virtuel multiports), on mettra la valeur 80 par exemple, puis il faudra appliquer les rglesiptablessuivantessurleserveurLVS: /sbin/iptablestmangleAPREROUTINGptcpdn.n.n.n/32dport80jMARKsetmark80 /sbin/iptablestmangleAPREROUTINGptcpdn.n.n.n/32dport443jMARKsetmark80 n.n.n.n tant l'adresse ip flottante de notre serveur virtuel, dans notre cas par exemple : 192.168.0.100.

35

Device:interfacerseauduserveurLVSsurlaquelleseradfinitl'adresseIPflottanteduserveur virtuel.Dansnotrecasils'agitdel'interfaceeth0:1 ReentryTime: tempsavantlequelleserveurLVSessaiederintgrerunserveurrelquitait dfaillant. ServiceTimeout:tempsaprslequelunserveurrelquinerpondplusestjugdfaillant. Quiesceserver:cetteoptionpermetd'viterqu'unserveurrelquivientd'treajoutaupoolnesoit surchargparunaffluximportantderequteslorsquel'algorithmeleastconnectionsestutilis. Loadmonitoringtool:cetteoptionactivelecontrledelachargedesserveursrelenutilisantrup ou ruptime. Pourexploiter rup ilfautactiverle daemon rstatd surles serveurs rels et pour ruptimeilfautactiverledaemonrwhod. Scheduling:algorithmeutilispourlarpartitiondecharge. Persistence: priodeensecondedurantlaquelleunmcanismedepersistanceestappliquela rpartitiondecharge,sionneveutpasdepersistanceonlaisselechamplibre,dansnotrecas, l'utiisation d'unserveurNFS pourpartagerles donnes entres les diffrents serveurs web nous permetdes'enpasser. PersistenceNetworkMask: Masquesousrseausurlequels'appliquelapersistance,ilestainsi possiblederedirigerdesplagesd'adressesIPverslemmeserveurrel.

36

f)REALSERVER

Danscettesectiononpeutajouter,supprimer,modifier,activeroudsactiverdesserveursrelsdans notrepool.

Name:nomduserveurrel. Adress:adresseIPduserveurrel. Port:portduserveurrel. Weight: ceparamtrepermetd'affecterdespoidsauxserveursrelsetainsipouvoirjouersurla rpartitiondechargeselonleurpuissance.

37

g)MONITORINGSCRIPTS: Cette section permet de configurer nanny pour le surveillance des diffrents services sur les serveursrels.

Nanny est capable d'effectuer un contrle basique en envoyant une chaine de caractres pr configureauxserveursrels,vrifiantainsilachainedecaractrederetour. Sendingprogramm:chemindel'utilitaireappelparnannypourvrifierl'tatdesserveursrelsdu pool,leparamtrespcial%hestremplacparl'adresseipduserveurrelcontrparnanny. PourtesterlebonfonctionnementduserviceHTTPSnousavonscodnotrepropreutilitaire(cf Annexe3). Send: messageenvoyparnannyauxserveursrels,laisservidesionutiliseunprogramme externeavecnanny. Except:chainederetourattenduedanslecasd'unfonctionnementnormal. LesparamtrespardfautconviennenttrsbienpourmonitorerleprotocoleHTTPsurdesserveurs web.Ilestceladitpossibledefaireappelunprogrammeexternepourvrifierl'tatd'unservice. Unefoisnotreserveurvirtuelparamtr,ilneresteplusqu'dmarrerleservicepulse: servicepulsestart

38

ConfigurationduserveurLVSdesecours: PourconfigurerleserveurLVSdesecoursilsuffitdecopierlesfichiers/etc/sysconfig/ha/lvs.confet /etc/sysctl et /etc/sysconfig/iptables du serveur LVS principal. On peut utiliser pour cela la commandescp. Ilneresteplusqu'dmarrerleservicepulse: servicepulsestart

Configurationdesserveursrels Laderniretapeconsistemettrel'IPdelapasserelleNAT,dansnotrecas192.168.1.200,comme passerellepardfautsurlesserveursrels. Pourpeututiliserpourcelal'utilitaire: systemconfignetwork(ouditermanuellementlefichier /etc/sysconfig/networkscripts/ifcfgeth0)

39

2.3.2 ServeursdebasededonnesMysql
ContrairementauserveurWeb,lesbasesdedonnesnesontpassousloadbalancer,nousn'avons iciqu'unserveurdebasededonnesquirpondtouteslesdemandesetnondeuxserveurssur lesquelssontsontrpartieslesdemandes.Toutefois,ilestpossibledemettreenplaceundeuxime systmedehautedisponibilit(LVS,HAproxy)quipermetdesurveillerl'tatdesserveursetainsi permettreunautreserveurdeprendrelamain(Schmacidessous).Maisparmanquedemachines disponibles,nousnemettronspasenplacecesystme.

Illustration21:Miseenplacepossibled'unsystmed'quilibragedechargepourlesserveursMySQL

Pourcompenserceproblme,nousavonsinstalldeuxserveursMySQL,unprincipaletunsecond quienfaitlarplication.Coupll'utilisationdeDRBD,celanouspermetdoncd'avoirtoujours unserveurjourquiestenpluscapabledeprendrelerelaisencasdedfaillanceduserveur principal.

40

MySQLCluster NousavonsdoncmisenplacelamthodederplicationproposeparMySQL,envoicilestapes: SURLESDEUXSERVEURSMYSQL Installation: Onferauneinstallationnormaleaveclespartitionsqu'onsouhaite,laseulediffrencersidedans lefaitqu'onvalaisserunespacenonpartitionnpourl'utilisationavecDRBD,onrecommande d'utiliserdesmachinesdemmecapacitetdeuxcartesrseaupourchaquemachine. Danscecas,onaconfigurdespartitionscommelessuivantespourundisquedurde40Go: Priphrique Pointdemontage Capacit /dev/hda1 /dev/hda3 / swap 10Go[10240Mo] 1Go[1024Mo]

/dev/hda2 LinuxLVM 26,3Go[26882Mo] Nousavonsjusteinstalllesystmed'exploitation,OpenSSHetMySQLServer.

_________________________ Configuration: Pouravoirunemeilleurecomprhensiondutexte,nousallonsutiliserlevocabulairesuivant: Serveur chacune des machines sur lesquels fonctionne DRBD et les services de haute disponibilit(MySQLetHeartbeat). Serveurprimaireleserveurquicontientlesdonneslire/crire,ilestleserveuractif. Serveursecondaireleserveursurlequellesdonnessontrpliques. Cluster ensembledesserveursquipartagentunebaiededisquescommune,pourassurerune continuitdeserviceet/ourepartirlachargedecalculet/oulachargerseau.Onparledecluster actifactifouactifpassif. Laconfigurationrseaupourlesserveursseferadelamaniresuivante: Serveur1 Nomduserveur Ipeth0 Ipeth1 mysql01 192.168.1.201/24 10.1.1.31/24 Serveur2 mysql02 192.168.1.202/24 10.1.1.32/24

Ilestimportantdenommer6lesserveurs,carnousaurontbesoindesnomspourlasuite.

6 Ilestpossiblederenommerunemachinevialacommandehostnameoudevrifierlenomcourantavecunamen.

41

Ilfautaussipermettrelacommunicationentrelesdeuxserveurssurlesportssuivants: Service MySQL DRBD Heartbeat Port 3306 8888 694

IlarrivesouventqueSELinuxquiestunepolitiquedescuritsousLinuxsoitactivpardfaut surCentOScelacredesproblmesavecheartbeat,pourledsactiverilfautraliserdes modifications dans le fichier /etc/selinux/config, et raliser la modification de SELINUX=disabled,leschangementsserontappliqusauprochaindmarrageduserveur. _________________________ InstallationetconfigurationdeDRBD: Nousavonsdcidd'utiliserDRBD,carc'estl'unedesmthodesprconisesurlesiteofficiel deMySQLpourlarplication,lesavantagesdecettesolutionsontlessuivants: Rplication des donns en temps rel La rplication se produit pendant mme que des applicationssontentraindemodifierlesdonnessurlepriphrique. RplicationtransparenteLesapplicationsquistockentleursdonnessurlepriphriquenesont pasconscientesdufaitquelesdonnessoientstockessurplusieursordinateurs. LeprincipalinconvnientdeDRBDestqu'iln'estpascapablededtecterautomatiquementla corruptiondusystmedefichiers. Pour ne pas surchargerlerapport,nous avonsmislerestedelaconfigurationenannexe (cf. Annexe2).

42

Onobtientdoncunerplicationentrelesserveursentempsrel.Ainsilorsqueleserveurmatre reoitunordredemodification,d'ajoutoudesuppression,leserveuresclaveexcuteinstantanment lammeinstructiongrceunsystmedelogsbinairesentretenuparMysql.

Illustration22:Schmadefluxgnrpourlarplicationdelabasededonnes.

NosserveursWebetnosserveursMySQLtantbranchssurlemmeswitch,nousavonsdonceu besoindedeuxcartesrseausurnosserveursMySQLpourpermettrel'utilisationdeDRBD. Ainsiletraficqu'entranelarplicationdelabaseneperturbeenrienlerestedurseau. Deplusgrcecettepratique,nousavonsmaintenantunesolutiondehautedisponibilitpourles serveursdebasededonnes,eneffetDRBDcouplheartbeatpermetd'attribuerl'adresse IPvirtuelleduserveurdfaillantceluiquiestenattente(maistoutdemmejour).

43

2.3.3 ConfigurationduNFS
NousavonsutilisunserveurNFSpourcentraliserlecontenuetlaconfigurationdesserveursWeb. Cettefaondefaireoffreplusieursavantages:
UniformisationdelaconfigurationdesserveursApache. PartagedesfichiersdusiteWebentrelesdiffrentsserveursWeb,cequisimplifielesmisesjour. PartagedessessionsPHPentrelesdiffrentsserveursWeb.

Certainslmentsn'ontpastcentralisssurleserveurNFS,comme: LesfichiersdelogdesserveursApache. LesmodulesApache. Ilestimportantdenoterquenousutilisonsicilaversion4duprotocoleNFScarcetteversion apportedesvolutionsmajeures: Chiffrementetscurisation(supportdeKerberos5,certificatsSPKMetLIPKEY). Support accru de la monte en charge (rduction du trafic par groupement de requtes , dlgation). Systmesdemaintenancesimplifis(migration,rplication). Reprisesurincidents. UtilisationduprotocoleTCPaulieud'UDP. MiseenplaceduserveurNFS OncommenceparinstallerNFSl'aidedelacommande: yuminstallnfsutilsnfsutilslib Parlasuiteoncreunrpertoire/nfsquicontiendralesfichierspartagsavecnosserveursweb.On montecemmerpertoiresurluimmeenajoutantcetteligneaufichier/etc/fstab: /nfs /nfs none bind 0 0 Explicationdesoptions: none:indiquequ'iln'ypasdesystmedegestiondefichier,/nfstantunrpertoirelocal. bind:optiondemontagepermettantdemonterplusieursfoislemmerpertoire. 0 0 :indiquentrespectivementlafrquencedesauvegardedelaparitionetl'odredanslequel l'utilitairefsckvrifielespartitions. etonappliquelemontagel'aidedelacommande: mounta Puis on partage le rpertoire /nfs avec les serveurs web en ajoutant cette ligne dans le fichier /etc/exports:
Pointdemontage /nfs /nfs/www /nfs/httpd /nfs/php IP 192.168.1.0/24 192.168.1.0/24 192.168.1.0/24 192.168.1.0/24 (options) (rw,fsid=0,insecure,no_subtree_check,sync) (rw,fsid=0,insecure,no_subtree_check,sync) (rw,fsid=0,insecure,no_subtree_check,sync) (rw,fsid=0,insecure,no_subtree_check,sync)

Pourfinir,onlanceleservicenfs: servicenfsstart 44

Explication7:

Onvapartagersurlerseau192.168.1.0lesrpertoires/nfs/*enlecturecriture. rw:lecturecriture. fsid=0:identifiel'utilisateurdusystmedefichierentantqueroot. insecure : permet de dsactiver l'obligation de l'utilisation d'un port (infrieur 1024) pour l'missiondelarequte. no_subtree_check : dsactive la vrification des sous rpertoires, ce qui permet de gagner en performanceainsiquelafiabilitdanscertaincas. sync:larponseauxdemandesderessourcesseferaaprsl'applicationdeschangementssurle support (criture sur le disque). Cela permet d'viter la corruption des donnes lors d'un arrt inopinduserveur.

MiseenplaceduNFSsurlesserveursWeb Configurationdunfs Fichier/etc/fstab:


Priphrique Pointde montage SGF nfs4 Optionde montage _netdev,auto Frquencedesauvegardede Ordredevrificationdelapartition lapartition(utilitairedump) (utilisparfsck) 0 0

192.168.1.5:/ /mnt

Explicationdesoptions: Priphrique:onspcifiel'adresseIPduserveurNFS. SGF:ils'agitduprotocolenfsenversion4. Pointdemontage:onvamonterlocalementlesrpertoirespartagsdunfsdans/mnt. Optiondemontage: _netdev:lemontagedelapartitions'effectueseulementsileservicerseauestdmarr. auto:lemontageestautomatiquementeffectuaudmarragedelamachine. Onmontelespartitionsrseausurchaqueserveurrell'aidedelacommande: mounta Aprscettetapeilrestedployerdeslienssymboliquespointantverslesrpertoiresrseaux.

7 Deplusamplesexplicationssontdisponiblessurlesite:http://sylvain.cherrier.free.fr/documentations/exports.5.html

45

Miseenplacedeslienssymboliques: Aprs avoir install les diffrents services ncessaires (httpd, php, php_mysql, mod_ssl) sur le serveur Web, il faut supprimer les rpertoires des configurations et du contenu web. (avec la commandermRf<repertoire>). Ensuiteonremplacelesdossiersetlesfichierssupprimerparunliensymbolique. Commandedesliens: lns /mnt/www /var lns /mnt/httpd /etc lns /mnt/php/config/php.ini /etc/ lns /mnt/php/config/php /etc/ lns /mnt/php/session /etc/lib/php/ Liensymbolique:ils'agitd'unfichierparticulierpointantversunfichierouunrpertoire.

Illustration23:Rcapitulatifdesinteractions entreleserveurNFSetlesserveursWeb

Note: IlfautpenserouvrirlesportsutilissparleprotocoleNFSdanslaconfigurationdufirewalldes diffrentsserveursweb.Pourconfigurerleparefeuonutilisel'utilitairesysconfsecuritylevel.

46

systemconfignetwork Montageetconfigurationde(s)carte(s)rseaux: Modificationdanslefichier:/etc/sysconfig/networkscripts/ifcfgeth0 #Nomdupriphrique DEVICE=eth0 BOOTPROTO=static HDADDR=MAC ONBOOT=yes NETMASK=255.255.255.0 IPADDR=192.168.1.3 Type=Ethernet GATEWAY=192.168.1.254

AjoutdecertificatautosignsurleNFS: Vialacommandeopensslonpeutgnrerdescertificats,voicilescommandeseffectues: Gnrationducertificat: opensslgenrsades3outma_cle.key1024 Avecdes3tantletypedechiffrementchoisiset1024latailleenbitsd'encryptagedelacl. Onobtientdoncunfichierma_cle.keycontenantuneclditeforte. Gnrationdelademandedesignature: opensslreqnewkeyma_cle.keyoutma_demande.csr

Autosignature: opensslx509inma_demande.csroutmon_certif.crtreqsignkeyma_cle.keydays99 l'optiondays99indiquequelecertificatseravalide99jours

NousobtenonsdoncuncertificatautosignplacsurnotreserveurNFS,ainsilesserveursWebqui reoiventdesrequtesdelapartd'internautesrcuprentlescertificatssurleserveurdepartage grcel'architecturemiseenplace. OnobtientdoncuncertificatcommuntoutlesserveursWebquipermetdescuriserlaconnexion desutilisateursaulieud'avoiruncertificatpourchaqueserveur. 47

2.3.4 MiseenplaceduSSL
Pourmettreenplaceuneconnexionscurise,nousavonsactivlemoduleSSLdesserveursWeb (a2enmodmod_ssl).EnactivantcemoduleApachesousCentOSmodifiedirectementlefichierqui configurel'accsnossitesinternetetyajouteunepartiepourleSSL(surleport443). Grcel'utilisationd'unliensymboliqueverslepointdemontageduserveurNFS,onfaitpointerla cletlecertificatcommesiontravaillaitlocalement. Ilneresteplusqu'renseignerlechemindelacletducertificat.
Fichier virtualhosts.conf ServerName www.maboutique.com NameVirtualHost *:443 NameVirtualHost *:80 <VirtualHost *:80> <Directory /var/www/html> AllowOverride All </Directory> DocumentRoot /var/www/html </VirtualHost> <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/httpd/ssl/mon_certif.crt SSLCertificateKeyFile /etc/httpd/ssl/ma_cle.key <Directory /var/www/html> AllowOverride All </Directory> DocumentRoot /var/www/html </VirtualHost>

48

3 Analyse
3.1 Benchmark/Graphiques
Pourtesterlesperformancesdenotreinstallationilnousestncessaired'automatiseretdesimuler denombreusesconnexionssimultanes.Pourcelanousallonsutiliserunlogicieldebenchmarket desimulationderequtesmassives. Ceprogrammeprendencompteleslmentsquel'onvalui passerenparamtresafindemesurerlesperformancesd'unsystmepourensuitelescomparer. PourtesterunserveurWebl'importantn'estpasdesavoirencombiendetempslapageseracharge carceladpendenmajeurepartiedudbitduclient,onnepeutpasprvoirsiunclientseraen 56Kbpsouen10Mbps.L'importantestdesavoirquelestletempsmoyenquevamettreleserveur pourrpondreunnombrelevd'utilisateursconnectssimultanment.Ilestdoncncessairede voirlecomportementduserveurparrapportl'accroissementdunombred'utilisateurs. Letableausuivanttird'unlivresurleloadbalacingcritparTonyBourkenousdonneuneide deslmentsquenousprenonsencomptepournosvaluations: Paramtreleplus Deuximeparamtre Paramtrelemoins Typedetrafic important important important HTTP(statique) FTP/Streaming Nombredeconnexions parseconde Dbit Dbit Nombredeconnexions persistantes

Nombredeconnexions Nombredeconnexions persistantes parseconde Nombredeconnexions parseconde Dbit

Site de vente en Nombredeconnexions persistantes ligne

Parmilesnombreuxoutilsdemesuresexistants,nousavonschoisisSiegequinouspermetde stresser l'adresse vers laquelle se trouvent les sites ; ce logiciel nous donne galement des statistiquessurlenombrederequtesenvoyes,russies,choues,letauxdetransfert,... D'unautrectnousavonsutilisunlogicieldesupervisionrseau:Zabbix. Cetoutilnenoussertpasqu'surveillerlasantdesservicesetdumatrieldesmachines,mais aussiralisernosgraphiquesafind'illustrernossimulations.

49

3.2 Analysedesgraphiques
Afin de ralisernos testes,nous avons donc utilisSiege avec lacommande etles paramtres suivants:sieger1c50t5<URL> r1tantlenombrederequtessimultanes(iciuneseule) c50lenombredeconnexionsdeclientssimultans(50clients) t5letempsdeduredusige(5minutes) Nousavonsdonctesttoutnosscnariosaveccesparamtres.Pourserendrecomptedelacharge gnre,celasignifiequetoutelessecondespendant5minutes,50clientsvontenvoyer1requte, soituntotalde15000connexionsetrequtesenvoyesnosserveurs. Pour illustrer les usages mmoire, de load, rseau, nous avons utilis Zabbix et gnr des graphiquespourchaquescnario.Envoicinosrsultatsetleursinterprtations.

50

HTTPSTATIQUE

HTTPSSTATIQUE

Comparaisondelacharge(Load) HTTPLOURD HTTPSLOURD

HTTPDYNAMIQUE

HTTPSDYNAMIQUE

Analyse: Surcesgraphiques,onpeutvoirquelachargeestinsignifiantepourlapagestatiqueetlapagelourdeenHTTP,enrevancheunepage dynamiquedemandeplusdetraitementetdoncdecharge.Leserveurn4avecsaconfigurationpluttfaiblefaitmonterenflchesonloadaverage. PourlapagestatiqueenHTTPS,onvoitquequelquestraitementsontncessaireetqueleserveurn4encoreunefoisdumalfairerpondreson agentZabbixcausedesacharge.Pourcequiestdelapagedynamique(OSCOMMERCE)enHTTPS,lachargeestmoinslevecarlesserveursWeb rpondentmoinsderequtesdanscemmelapsdetemps(pertedetempscauseducalculdestransactionschiffres).PourlespagesHTTP/S LOURD,labandepassantenousfreine,ils'agiticid'ungoulotd'tranglement.

HTTPSTATIQUE

Comparaisondelaconsommationdemmoirevive(RAM) HTTPSSTATIQUE HTTPLOURD HTTPSLOURD HTTPDYNAMIQUE

HTTPSDYNAMIQUE

Analyse:Commeonpeutlevoirclairementsurlegraphique,laconsommationdemmoireviveestliedirectementlanaturedudocumenttrait.En effet,unepagestatiqueclassiquen'estpastrsgourmandeenRAM,unepagecontenantuneimaged'unpoidslevnonplus.Enrevanche,uncontenu gnrdynamiquementncessitebienplusderessources(nombreusesvariablescalculer).

3.3 Analysedesalgorithmesderpartitiondecharge
Nousnoussommesessentiellementfocalisssurl'analysedesalgorithmeslesplusrpandus:le RoundRobinetleLeastConnectionScheduling. a)RoundRobin: Cetalgorithmerpartitionfonctionnedemanirecyclique,sansseproccuperdelachargedes serveurs.Lapremirerequteseraaffecteau1erserveur,lasecondeausecondserveur,ainside suiteenboucle. Onaainsiremarququesurdestraitementslourds,commeparexempledesrequtesHTTPS.Le serveurlemoinspuissant(icileserveur4)seretrouveavecunnombredeconnexionactivesplus importantquelesautrescarilprendplusdetempsexcuterlesrequtes.

Illustration24:RpartitionderequtesHTTPSavecRoundRobin.

Ce phnomne peut donc causer des disparits de charge entre les serveurs rels selon leurs ressourcesetletypederequtesquechacund'euxagrer. Pourcequiestdesdisparitslieslapuissancedesmachines,ilestpossiblederglerceproblme enutilisantl'algorithmeWeightedRoundRobinSchedulingquipermetd'affecterdespoidsaux diffrentsserveursrels.

Illustration25:RpartitiondechargeavecWeightedRoundRobin.

53

b)LeastConnectionScheduling Cet algorithme de rpartition renvoie toute nouvelle requte au serveur possdant le moins de connexionsactives. LeLeastConnectionSchedulingmontredetrsbonsrsultatsengnralmaispeutmontrerses limiteslorsd'uneaugmentationsubiteetrapidedelachargeavecdesconnexionsnonpersistantes (connexionsHTTPsanskeepalive).

Illustration26:Impacted'unemonteenchargesubiteavec"LeastConnection".

54

3.4 SinglePointOfFailure
Unpointindividueldedfaillance(SinglePointofFailureouSPOFenanglais)estunpointd'un systmeinformatiquedontlerestedusystmeestdpendantetdontunepanneentranel'arrt completdusystme.Lepointindividueldedfaillanceacommeprincipalecaractristiquedenepas treprotg(redondant).Ilestdoncunrisquepourladisponibilitdusystme. Lanotiondepointindividueldedfaillanceestfortementliecelledeservice,danslamesureo unproblmesurlepointconcernentraneuneinterruptiondeservice.LaprsencedeSPOFdans unsystmeaugmentantlaprobabilitd'apparitiond'undnideservice,elleentraneunrisquesurla qualitdeservice. Dans un cadre de haute disponibilit, il est inacceptable de laisser des points individuels de dfaillancedansunsystme.

Ainsiaucoursdenostestes,nousnoussommesrenduscomptequelespointsdedfaillancede notreinstallationtaientleslmentsd'interconnexionrseau(switch)quinesontpasredonds,si nosswitchviennentneplusfonctionner,aucunlmentactifnevaprendrelerelaispourcontinuer routernormalementlesmachines.IlenestdemmepournotreserveurNFSquin'estpasredond quecesoitparduRAIDouparunsystmederpartitiondechargeetquipeutgalementdevenirun goulotd'tranglement.Lafaonlaplusprsentablepourlepartagedefichiersseraitdemettreen placeunSAN8. Pourcorrigercela,nouspouvonsutiliserunlmentderechange(enanglais spare)quiseraun switchdjconfiguretprtremplacerl'ancien.Nouspouvonsgalementpensersurveillertout nosmatrielsgrceunlogicieldesupervisioncommeZabbixouNagiosafindepouvoirrpondre auplusviteauxpannes. Autrefaille,ungoulotd'tranglementsesitueentrelesinternautesquidemandentl'accsausiteet lerouteurquireoitcesrequtes.Onpeutaismentimaginerquedanslecasd'unaffluxmassifde requteslaquantitdedonnessoitsuprieurelacapacitdelabandepassanteetdelacarte rseaudurouteur.Ilexisteunautregoulotd'tranglemententrenotreserveurNFSetnosserveurs Web,eneffetleserveurdepartageestautantsollicitquelerouteur. Contrecegoulotd'tranglement,ilfautdjvrifierlacapacitdescartesrseauxdurouteuret penserinstallerdescartesrseauavecunecapacitdpassantslesclassiques10/100Mbps.La connexiontablieentrelerouteur(comprendrel'entreprise)etlesclients(Internet)doitaussitre d'unecapacitimportante.BienentenducesdcisionsdpendentdutraficInternetverslesserveurs denotreentreprise.

Ilfautdoncprendreencomptecespointsetessayerdelesrsoudre.Parmanquedetempsetde matriels nous ne pourront pas les mettreen place, mais nous allons supposer quedans notre environnementrestreint,celaneserapasncessaire.

8 http://fr.wikipedia.org/wiki/Storage_Area_Network

55

4 Conclusion
Commenousl'avonsdmontrtoutaulongdecerapport,nouspouvonsmaintenantaffirmerquela haute disponibilitpermet ungaindeconfortpourles utilisateurs finauxtoutcommepour les administrateursdusystmes. En effet les utilisateurs finaux ont un accs constant au site, et surtout ils ne voient pas les dfaillancesd'unouplusieursserveursvialesquellessontrpartieslescharges. Quandl'administration,nousavonsvuquelasolutionLVSditeparRedHats'avretrsefficace, permettantundploiementrapideetflexible.Deplus,l'applicationPiranhaapporteunecertaine scurit car elle prmunit des erreurs de syntaxe lies une dition manuelle des fichiers de configuration..Grceausystmede cluster misenplace,ilestgalementplussimplepourun administrateurderajouteroud'enleverdesmachines,puisquelepoolpeutsemanipulerchaud etdoncnerequiertpasl'arrtdesmachinesenproduction. La rpartition de charge permet de rsoudre des problmatiques de gestion des ressources, de performancesetdetolranceauxpannes. L'algorithmeRoundRobins'avrelameilleuresolutionpourdesserveursdefortesvariations de charge, il est donc plus adapt pour des serveurs web. Tandis que l'algorithme Least Connectionsemontreidalpourdessessionslongues(connexionHTTP1.1persistantes)etdes serveursnesubissantpasdefortesvariationsdecharge. Pour garantir une disponibilit maximale, il est ncessaire d'implmenter des mcanismes permettantdesynchroniseroudecentraliserlesdonnesetlessessionsentrelesdiffrentsserveurs relsetdemettreenplaceunerplicationdesbasesdedonnes. Pourfinir,larpartitiondechargeelleseulenepermetpasd'accomplirdesmiraclesetdecombler lescarencesd'uneapplicationmalcrite(lente,coteuseenressource)oud'unearchitecturemal pensequignrerainvariablementdesproblmesdanslesfluxrseaux.

56

5 Bibliographie

Livres:

TonyBourkeServerLoadBalancingO'Reilly2001 WillyTarreau,WilfriedTrainLeLoadBalancingpourlesnulsFirstInteractive2010 SourcesInternet:

http://www.centos.org/docs/5/html/5.1/pdf/Virtual_Server_Administration.pdf

Rcapitulatifdeslogicielsutiliss:

Systmed'exploitation:CentOS(RedHat) Serveurdebasededonnes:MySQL/DRBD ServeurWeb:Apache2 Serveurdestockagededonnes:NFS Logicielsdemonitoringetinterfaced'administration:Zabbix,Piranha Solutionsd'quilibragedecharges:LVS,Heartbeat Administrationdistance:OpenSSH Solutiondeparefeuetderoutage:Iptables Outilsdebenchmarketdegnrationdegraphiques:siege,Zabbix,lovelycharts

57

6 Annexes

Sommairedesannexes
Annexe1:PrsentationdePiranha.................................................................................................. Annexe2:InstallationdeDRBDetMySQLCluster...................................................................... Annexe3:UtilitairepourleHTTPS................................................................................................ Annexe4:Rpartitiondutempsdetravail......................................................................................

58

Annexe1:PrsentationdePiranha

Illustration27:ExempledeconfigurationduloadbalancerviaPiranha

Illustration28:Listedesserveursrelsetleurtat

Illustration29:crandecontrledelaredondanceduserviceHeartbeat

Annexe2:InstallationdeDRBDetMySQLCluster
Touteslesinstructionscidessousdoiventtrefaitessurlesdeuxserveurssaufindicationcontraire. Pourlamiseenplacedelarplication,ilfautinstallerlespaquetsdrbdetkmoddrbdquise trouventdansles dptsdeCentOS.Ilyaaussilapossibilitdefairel'installationmanuelle depuislespaquets.

#yuminstalldrbd #yuminstallkmoddrbd

Une fois les paquets installs, il faut copier le fichier de configuration de DRBD vers le rpertoire /etc,sachantquelaversiondeDRBDpeutchangerenfonctiondelaversion du systmed'exploitation.

#cp/usr/share/doc/drbd8.0.16/drbd.conf/etc/drbd.conf

Aprsavoirdplaclefichierdeconfiguration,ilfautenleverlescommentairesdeslignessuivantes danslefichier/etc/drbd.confetchangersharedstringpourlemotdepassesouhait.

cram-hmac-alg "sha1"; shared-secret "shared-string";

Onutiliseceslignespouravoiruneauthentificationsimpleavecmotdepassecryptparsha1, cequiassurequeseulslesserveursaveclemmemotdepassesoientcapablesdesejoindreau groupe.

LefichierdeconfigurationdeDRBD /etc/drbd.conf doittrelemmesurlesdeuxserveurs, sachantquel'onarespectlescontraintesd'installation.


Onutiliseleport8888surlesIP:10.1.1.31et10.1.1.32pourlacommunicationrseau. lesressourcessontconfigurespourunerplicationsynchrone(ProtocolC). Onautilisuneressourceappeler0laquelleutilise/dev/hda2commepriphriquede stockagedebasniveau,etestconfigurcommemtadonneinterne.

Voustrouverezcidessouslefichierdeconfigurationutilisainsiquesadescription.

62

FichierdeconfigurationDRBD

global { usage-count no; } common { syncer { rate 100M; } } resource r0 { procotcol C; handlers { pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f" pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f" local-io-error "echo o > /proc/sysrq-trigger ; halt -f" outdate-peer "/usr/lib/heartbeat/drbd-peer-outdater"; } startup { degr-wfc-timeout 120; #2 minutes } disk { on-io-error detach; fencing resource-only; } net { cram-hmac-alg "sha1"; shared-secret "shared-string"; after-sb-0pri disconnect; after-sb-1pri disconnect; after-sb-2pri disconnect; rr-conflict disconnect; } syncer { rate 10M; al-extents 257; } on mysql01 { device /dev/drbd0; disk /dev/hda2; address 10.1.1.31:8888; meta-disk internal; } on mysql02 { device /dev/drbd0; disk /dev/hda2; address 10.1.1.32:8888; meta-disk internal; }

63

Les sections principales sont dcrites, pour une description plus approfondie il faut vrifier la documentationdanslapageofficielledeDRBD. Lasectionglobal Cettesectionestpermiseuneseulefoisdanslefichierdeconfiguration,l'option usagecount est utilisepourstockerdesstatistiquessurl'usagedesplusieursversionsdeDRBD,encontactantun serveurHTTPchaquefoisqu'unenouvelleversiondeDRBDestinstallesurlesystme.Onpeutle dsactiverenutilisantusagecountno;,l'utilisationpardfautestusagecountask;lequel vousinvitechaquefoisdemettrejourDRBD.

Lasectioncommon Cettesectionfournitunemthodeplusrapidepourdfiniruneconfigurationtraversdel'hritage, pourchaqueressourceonpeutdfinirn'importequelleoption,maisaussidfinirouredfinirdes ressourcesdebase(remplacerlescommandesstandardpardescommandesprenantdjencompte desoptions). L'utilisationdelasectioncommonn'estpasncessairemaisilestrecommanddel'utilisersion utiliseplusd'uneressource. Dansnotrefichierdeconfigurationonaajoutl'optionsyncer{rate10M;}; Lasectionresource N'importequelleressourcequ'ondfinitdevraittreappeleavecresourcenomdanslefichier de configuration. On peut utiliser un identifiant arbitraire, le nom d'une ressource ne peut pas contenird'espacesetnedoitcontenirquedescaractresUSASCII. Chaqueressourcedoitavoiraumoinsdeuxsoussectionshost(unepourchaqueserveurdu cluster). Commehearbeatprendslecontrleduclusterilestncessairedechangerlespermissionssur lesbinairesdeDRBD: chgrphaclient/sbin/drbdsetup chmodox/sbin/dbrdsetup chmodu+s/sbin/dbrdsetup chgrphaclient/sbin/drbdmeta chmodox/sbin/dbrdmeta chmodu+s/sbin/dbrdmeta Ilfautensuitecrerlesmtadonnespourlespriphriques. #drbdadmcreatemdall AfindefinaliserlaconfigurationdeDRBD,ilfautchargerlemoduledanslenoyau. #modprobedrbd

64

MaintenantonpeutdmarrerleserviceDRBDetdfinirleserveurprimaire. Commandessaisirseulementsurleserveurprimaire: #drbdadmoverwritedataofpeerprimaryall Pourpouvoirutiliserlapartition,ilfautformaterlepriphriqueDRBD(normalementcequ'on autilisdanslaconfiguration),dansnotrecas/dev/drbd0. #mkfs.ext3/dev/drbd0 Unefoislepriphriqueformat,ilfautlemontersurlaroutesouhaite. #mkdir/mnt/drbd #mount/dev/drbd0/mnt/drbd

65

Configurationdemysqlpourutiliserlasynchronisation SurleserveurprimaireonvacrerunrpertoirepourlogerlesdonnesdeMySQLetcopierle fichierdeconfigurationprincipalmy.cnfdanslerpertoirecr. #mkdir/mnt/drbd/mysql #cp/etc/my.cnf/mnt/drbd/mysql

Puis,ilfautcopierlerpertoireosontstockeslesbasesdedonnesversunrpertoiremontdu priphriqueDRBD. #cpR/var/lib/mysql/mnt/drbd/mysql/data

Maintenant il faut configurer notre serveur primaire, pour cela, nous allons diter le fichier /mnt/drbd/mysql/my.cnfpourchangerlerpertoiredesbasededonnes,ilfautaussiactiverle journalbinaire,avecl'optionlogbin.
datadir = /drbd/mysql/data log-bin = mysql-bin

Pour finaliser la configuration, on va crer un lien symbolique vers le nouveau fichier de configuration. #lns/drbd/mysql/my.cnf/etc/my.cnf

Maintenant on peut dmarrer le serveur MySQL et vrifier que la nouvelle configuration marchebien. #/etc/init.d/mysqlstart

Note:Pourleserveursecondaire,ilfautseulementcrerleliensymboliquecarlaconfiguration serarplique,ilestinutiled'essayerd'utiliserlepriphriquesurleserveursecondaireparcequ' iln'estpasdisponiblepourl'utilisation.

66

Installationetconfigurationdeheartbeat PourCentOS,installerlespaquetssuivants: #yuminstallheartbeat #yuminstallheartbeatpils #yuminstallheartbeatstonith

Vrifierquelerpertoire/etc/ha.dsoitcr,sinon,ilfautlecrer: #mkdir/etc/ha.d

Aprsilfautdplacerlesfichiersd'exemplesvers/etc/ha.d: #cp/usr/share/doc/heartbeat2.1.2/authkeys/etc/ha.d/ #cp/usr/share/doc/heartbeat2.1.2/ha.cf/etc/ha.d/ #cp/usr/share/doc/heartbeat2.1.2/haresources/etc/ha.d/

Lefichierdeconfigurationprincipaleha.cfdoitressemblerceluici:
debugfile /var/log/ha-debug logfile /var/log/ha-log logfacility local0 keepalive 500ms deadtime 10 warntime 5 initdead 30 mcast bond0 225.0.0.1 694 2 0 mcast bond1 225.0.0.2 694 1 0 auto_failback on respawn hacluster /usr/lib/heartbeat/dop apiauth dopd gid=haclient uid=hacluster node mysql01 node mysql02

Pour la modification du fichier authkeys, il faut seulement fixer l'autorisation d'accs aux informationsaucluster.Lefichierutiliseunecluniquepouridentifierlesmembresduclusteret pourassurerlacoexistencedeplusieursclustersdanslemmerseau.

67

PourlecontrleautomatiquedesservicesDRBDetMySQLilfautajouterunelignedansle fichier/etc/haresources,cetteligneestformateparlebiaisd'espaces: mysql01drbddiskFilesystem::/dev/drbd0::/mnt/drbd::ext3mysql192.168.1.6


lepremierparamtre(mysql01)estlenomduserveurprimaire,quiestactifetgreleservice, ledeuximeestleserviceDRBD(drbddisk)suividupriphrique,lepointdemontageetle typedesystmedefichiers, suit le service (mysql) qui fait rfrence un script qui se trouve dans le rpertoire /etc/ha.d/resources.d/, finalement on ajoute l'adresse IP virtuelle qui sera automatiquement attribue au serveur lorsqueheartbeatdmarre.

Une fois que la configuration de heartbeat est acheve, il faut copier les fichiers ha.cf, haresourcesetauthkeyversleserveursecondairepours'assurerquelaconfigurationestbienla mme. Attention,lefichierauthkeysdoittreenlecture/criturepourrootseulement: #chmod600/etc/ha.d/authkeys #chownroot/etc/ha.d/authkeys Note: DsactivationdeSELinuxsurlesdeuxmachinesncessaires,carcelacredesproblmes avecheartbeat.Pourceladans/etc/selinux/config,ilncessairederaliserlamodification suivanteSELINUX=disabledetderedmarrerleserveurpourquecelasoiteffectif.

68

Annexe3:UtilitairepourleHTTPS
Voicilecodedel'utilitairequenousavonscrispourvrifierl'tatduserviceHTTPS: #!/usr/bin/python #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# ## #UtilitairedetestduserviceHTTPs# ## #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# importsys importurllib2 url="https://"+sys.argv[1] req=urllib2.Request(url) try: handle=urllib2.urlopen(req) print"OK" except: print"FAIL"

69

Annexe4:Rpartitiondutempsdetravail
Pourpermettreunbonavancementdansceprojet,nousnoussommesrpartislestchesaufuret mesure.Nousavonsdonccommencparunerdactiond'untatdel'artcommenousl'aconseill notretuteurdeprojet. Nousavonsensuiteessayerdevoirnotretuteuraumoinsunefoisparsemaineafindevisualiserles faiblessesdenotrerapportainsiquelesapprochesauxquellesnousn'aurionspasforcementpenser. Chaquefindesemainenousavonsnotcequeatralisetparqui:
Nom Dbutdel'tatdel'art ConceptionSchma InstallationCentOS Recherchedesolution MiseenplaceLVS MiseenplaceserveurWeb CorrectionAjoutRapport MiseenplaceBDD MiseenplaceNFS ReconfigurationLVS ReconfigurationserveursWeb RplicationDRBD RinstallationPosteBDD RapportDRBD ReconfigurationserveurWeb ReconfigurationBDD MiseenplacenouveauxserveursWeb RapportMySQLHauteDispo FinitionRapport valuationdesperformances&Analyses Datededbut 25/01/10 25/01/10 28/01/10 01/02/10 01/02/10 01/02/10 01/02/10 08/02/10 08/02/10 12/02/10 12/02/10 01/03/10 01/03/10 01/03/10 11/03/10 11/03/10 11/03/10 15/03/10 22/03/10 22/03/10 Datedefin 29/01/10 26/03/10 29/01/10 05/02/10 05/02/10 05/02/10 26/03/10 19/02/10 19/02/10 19/02/10 19/02/10 11/03/10 05/03/10 11/03/10 12/03/10 12/03/10 12/03/10 19/03/10 26/03/10 26/03/10 Ressources Michal,Jose,Thierry Thierry Michal,Jose,Thierry,Nassim Michal,Jose,Thierry Nassim Nassim Michal,Thierry Jose Nassim Nassim Nassim Jose Jose,Nassim Jose Jose,Thierry,Nassim Jose Thierry,Nassim Jose Michal,Jose,Thierry,Nassim Michal,Jose,Thierry,Nassim

Illustration30:Tableaurcapitulatifdestcheseffectues.

70

You might also like