Professional Documents
Culture Documents
Balancing Le Load
Willy Tarreau
Concepteur dHAProxy
Le Load Balancing
Rpartition de charge et haute disponibilit des services Web
POUR
LES NULS
Willy Tarreau Concepteur d'HAProxy Wilfried Train Chef de produit ALOHA
Sommaire
Introduction ....................................................................................................... 5
Contexte, problmatiques et enjeux ..................................................................................5 Objectifs de louvrage ..........................................................................................................6 Les icnes utilises dans ce livre .......................................................................................6
Introduction
otre entreprise dispose dun site Web ? Dun Intranet ou dun Extranet ? Dapplications ou services en ligne ? Alors cet ouvrage est fait pour vous. Bienvenue dans lunivers du Load Balancing !
Objectifs de louvrage
Du client au serveur, le parcours est parfois long et trs souvent sem dembuches. Tout lenjeu de ce livre est de vous apporter les cls de comprhension dune dmarche de rpartition de charge des ux dinformation des services Web. Il napporte pas de rponse universelle (chaque cas est unique) mais guidera les responsables dapplications, DSI et autres chefs dentreprises dans leurs choix en matire darchitecture applicative et rseau. Dans ce livre, vous retrouverez notamment les outils et les mthodes de rpartition de charge mais aussi les bonnes pratiques dune dmarche de load balancing, en fonction de vos besoins et de vos contraintes.
Chapitre 1
Chaque composant participe, sa manire, au bon droulement des oprations de circulation des informations. Une solution de load balancing peut intervenir g deux niveaux : Niveaux 3/4 : Rseau et transport (protocole TCP/ IP) ; Niveau 7 : Applications (protocole HTTP, RDP). Nous dtaillerons plus loin les leviers daction manuvrer chaque niveau pour amliorer les performances et assurer la disponibilit des services qui sappuient sur cette architecture.
Dnitions et concepts
Avant de plonger dans le vif du sujet, quelques rappels de base. Paquet : an de circuler plus facilement, les infort mations changes sont segmentes en "paquets". La couche 4-Transport soccupe de cette segmentation et de leur transmission, en sappuyant la couche 3-Rseau. Application : ce sont les logiciels utiliss pour lchange des donnes, tels que les navigateurs, les clients de messagerie, les outils de CRM ou encore dchange FTP. Load balancing : littralement "rpartition de g charge" ou "quilibrage de charge". Haute disponibilit : fait de garantir l'utilisateur une continuit de service, la bonne marche et/ou l'accessibilit aux applications.
Chapitre 2
a mthode la plus simple doprer une rpartition de charge consiste ddier des serveurs des groupes dutilisateurs prdnis. Si cette mthode est simple mettre en uvre pour un Intranet, elle est trs complexe, voire impossible, pour des serveurs Internet. Dans ce cas, un paramtrage spcique du DNS (Domain Name Server) au niveau rseau et/ou loptimisation applicative (niveau 7) sont un premier pas vers une dmarche de rpartition de charge sans rpartiteur.
10
ralement la rpartition par DNS pour des moteurs de recherche, des serveurs POP (messagerie) ou des sites proposant du contenu statique.
Loptimisation applicative
Il sagit le plus souvent de recettes simples mais particulirement efcaces, mme en prsence dun rpartiteur.
11
Une tche qui incombe trs simplement un serveur HTTP lger (lighttpd ou thttpd par exemple), et qui ne ncessite pas forcment linstallation de serveurs ddis.
Chapitre 3
Le rpartiteur de charge
ogiquement, la mise en uvre dun rpartiteur de charge est la mthode la plus pertinente et efcace lorsquil sagit dengager une dmarche de rpartition de charge de la population des utilisateurs sur plusieurs serveurs, voire plusieurs sites. Le rpartiteur peut indiffremment prendre la forme dun matriel spcique, dun logiciel install sur un serveur ddi ou sur les serveurs dapplication. Cette dernire solution tant la plus risque, en raison notamment du risque de dysfonctionnent lors du dploiement de nouveaux composants. En fonction des besoins, un rpartiteur agira au niveau rseau (couche 3/4) et/ou au niveau applicatif (couche 7).
14
15
La translation dadresses IP (NAT) Dans ce cas, le rpartiteur centralise tous les ux : les requtes (comme dans le cas du routage direct, il les rpartit entre les serveurs), mais aussi les rponses. Il "masque" ainsi lensemble de la ferme de serveurs, qui ne ncessitent aucun paramtrage particulier. En revanche, cette mthode implique une conguration applicative trs stricte an notamment que les serveurs vitent de retourner leurs adresses internes dans les rponses. En outre, cette mthode augmente considrablement la charge du rpartiteur qui doit convertir les adresses dans les deux sens, maintenir lui-mme une table de sessions et supporter la charge de trac retour.
Le reverse proxy
Dans son rle de transmission du trac, le rpartiteur y de niveau 7 agit comme un reverse proxy et prtend tre le serveur. Il a alors pour rle d'accepter les connexions destination du client et d'tablir des connexions avec les serveurs pour faire transiter les donnes (requtes et rponses). Cette mthode implique que les serveurs ne puissent pas tre joints directement par les utilisateurs et ne ncessite aucune conguration particulire ct serveur.
16
Dans ce cas, le rpartiteur de niveau 7 ncessite plus de puissance que les solutions matrielles agissant au niveau du rseau. Ils fournissent cependant un premier niveau de scurit en ne transmettant au serveur que ce quils comprennent.
17
18
19
20
Les contrles de vitalit des serveurs ncessitent un paramtrage trs n, an de trouver le meilleur quilibre entre performances ddies aux applications et surveillance des serveurs.
En matire de surveillance des serveurs, les rpartiteurs logiciels sont de loin les plus exibles. Ils permettent en effet de crer des scnarios automatiss qui pourront tre rapidement modis et corrigs en trs peu de temps.
21
La persistance
La persistance rpond au cas o toutes les requtes dun mme utilisateur doivent imprativement tre adresses un mme serveur sur une session donne, an de conserver en mmoire les informations relatives cette session (le "contexte" de lutilisateur), telles que le contenu du panier sur un site de e-commerce par exemple. On parle alors de sessions persistantes ou "collantes" ( (sticky sessions) et de rpartition de charge avec afnit de serveur. Diffrentes mthodes permettent la mise en uvre de la persistance : La redirection : c'est lune des solutions les plus conomiques. Elle consiste faire en sorte que l'application redirige la demande vers l'adresse locale du serveur concern (en cas de panne du serveur, l'utilisateur sera tout de mme redirig vers ce dernier). L'afnit de sessions : le rpartiteur associe un utilisateur un serveur. La manire la plus simple tant didentier le serveur sur lequel s'est connecte l'adresse IP de l'utilisateur lors de la dernire connexion. Lapprentissage de cookie : larrive dune requte utilisateur, le rpartiteur vrie la prsence du cookie de lapplication dans len-tte de la requte et compare les valeurs de ce dernier sa table de
22
sessions, pour rediriger ensuite l'utilisateur vers le bon serveur. Sil ny a pas de correspondance, la requte sera dirige vers nimporte quel serveur, via lalgorithme choisi. Lors de la rponse du serveur la requte du client, le rpartiteur collectera l'information d'identication du serveur (par apprentissage) pour ensuite l'enregistrer dans sa table de sessions. A la seconde requte du client, l'enregistrement alors effectu permettra de rediriger le client vers le bon serveur. Linsertion de cookie : sur le fond, le principe est le mme que prcdemment, ceci prs que le cookie est insr directement sur la machine utilisateur
23
par le rpartiteur (qui n'a plus alors maintenir une table de sessions), lors de la rponse du serveur. A partir de la seconde requte, le cookie est lu par le rpartiteur et les requtes sont alors immdiatement rediriges vers le mme serveur tout au long de la session.
24
Liste des contrles daccs IP : ractif, un rpartiteur de niveau 7 peut faciliter le reprage dadresses IP responsables dune attaque, permettant ainsi la cration et/ou la modication automatique de rgles, de faon bloquer lattaque.
Chapitre 4
ous lavons constat, il existe de nombreuses solutions de rpartition de charge. Toutes ne sappuient pas sur les mmes outils et ne rpondent pas aux mmes besoins.
26
Frquemment les diteurs annoncent pouvoir tout faire d'un point de vue fonctionnel grce l'usage de scripts, qui s'apparentent plus du dveloppement spcique.
27
Il est noter que dans la majorit des cas, les architectures et plateformes Web restent peu sollicites par rapport aux capacits techniques des solutions actuelles. Dans ce cas, la gestion combine des niveaux 3/4 et 7 peut parfaitement tre assure par le mme produit, rduisant d'autant le cot global de la solution.
Conclusion
ne dgradation des temps de rponse ou une indisponibilit du service, lie un serveur satur (en cas de pic de charge) ou momentanment indisponible (en cas de panne ou de maintenance) ? Limpossibilit darrter la production en pleine journe ? Avec la mise en place dune solution de rpartition de charge, ces problmatiques ne sont plus que de lointains souvenirs, le rpartiteur redirigeant automatiquement les requtes sur dautres serveurs pour absorber la hausse de trac ou procder la maintenance. Le dploiement de load balancer permet en outre un pir lotage plus sain et plus serein du systme d'informations (connaissance et matrise du SI, anticipation des besoins, etc.) et une optimisation des ressources en place. Nanmoins, la rpartition de charge n'accomplira pas de miracle et ne comblera pas les carences et les points de blocage dune application mal crite (lente, coteuse en ressources systmes, etc.) ni dune architecture mal pense, qui crera invariablement des problmes dans les ux rseau. En rsum, larchitecture idale peut ressembler au schma de la page suivante.
30
Ainsi "segmente", larchitecture gagne en agilit et en scalabilit. Elle volue alors facilement au gr des besoins additifs de lentreprise.
A propos dExceliance
xceliance propose une gamme dappliances de rpartition de charge et de haute disponibilit pour amliorer les performances, assurer la disponibilit et optimiser linfrastructure des plateformes applicatives critiques dentreprise (Web, SGBD, messagerie, Terminal Server, ERP...). Initialement dveloppes partir du logiciel de load balancing open source HAProxy, les solutions ALOHA g permettent doptimiser les ux rseaux et applicatifs. Reconnues pour leurs performances de traitement, leur abilit et leur richesse fonctionnelle, elles sont proposes sous trois formats (logiciel embarqu sur une plateforme matrielle ddie, sur un disque SSD ou dans une machine virtuelle) des prix plus abordables que les autres solutions du march, pour mettre la rpartition de charge et la haute disponibilit des applications et services Web la porte de toutes les entreprises. Base Jouy en Josas (78), Exceliance est labellise jeune entreprise innovante depuis 2005. www.exceliance.fr
DCOUVREZ
Les dfinitions et concepts
Tout ce que vous avez toujours voulu savoir sur le load balancing !
Votre entreprise dispose dun site Web ? Dun Intranet ou dun Extranet ? Dapplications ou services en ligne ? Alors cet ouvrage est fait pour vous ! Tout, ou presque, se fait aujourdhui partir dun navigateur Internet. Un arbre de services Web qui cache la fort de linfrastructure indispensable pour absorber les pics de charge, garantir des performances optimales et viter les coupures de service
La rpartition de charge sans rpartiteur Les niveaux daction dun rpartiteur Les fonctions principales dun rpartiteur Comment choisir son load balancer ?
SUIVEZ LE GUIDE
Cette icne prvient d'un danger et vous indique gnralement ce qu'il ne faut pas faire. Dans ces encadrs, stop aux ides prconues. Aprs, vous ne pourrez pas dire que vous ne saviez pas ! Pour approfondir vos connaissances sur l'un des thmes abords. Ce quil faut retenir