TODO : Ajouter la section sur les virtualhost
Le load balancing va permettre à un serveur Apache de répartir la charge de requêtes entre différents serveurs applicatifs Tomcat.
La mise en place de ce système est assez similaire à la configuration d'un serveur frontal Apache.
| Remarque |
|---|
Attention : la configuration d'un frontal Apache et de load balancing ne peuvent pas être actives en même temps, le load balancing gérant déjà la redirection des requêtes vers un autre serveur. Si un serveur frontal Apache à déjà été configuré, il convient donc de commenter ou de supprimer les lignes décrites sur la page Apache frontal (esup 4) |
Serveurs Tomcat
Chacun des serveurs Tomcat devra être configuré en effectuant les modifications suivantes dans le fichier server.xml.
...
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
#Configuration du mod_proxy_ajp pour le load-balancing ProxyPass /uPortal balancer://127.0.0.1 stickysession=JSESSIONID <VirtualHost *:80> ProxyRequests Off <Proxy balancer://127.0.0.1> portal> BalancerMember ajp://ip-du-tomcat1tomcat1.ent.fr:8009/uPortal route=tomcat1 loadfactor=1 BalancerMember ajp://ip-du-tomcat2:8009/uPortaltomcat2.ent.fr:8010 route=tomcat2 loadfactor=1 ProxySet lbmethod=byrequests </Proxy> bytraffic ProxySet stickysession=ROUTEID </Proxy> ProxyPass / balancer://portal/ <Location /balancer-manager> SetHandler balancer-manager </Location> </VirtualHost> |
La ligne ProxyPass définit :
- /uPortal : la racine du contexte à balancer
- balancer://127.0.0.1 : l'adresse à balancer
La ligne <Proxy balancer> rappelle l'adresse du proxy défini dans le ProxyPass<Proxy balancer> définit un cluster de balancement identifié par le nom situé après Proxy balancer:// . Chaque BalanceMember contenu dans cette balise définit un serveur vers lequel rediriger des requêtes. Ils sont définis via le protocole AJP par l'adresse vers laquelle renvoyer les requêtes et le nom de route défini dans la configuration de chaque serveur. On trouve également le paramètre route qui reprend la route JVM définie pour chaque serveur, et un paramètre loadfactor qui définit le seuil de balancement.
...
lbmethod=byrequests : Les requêtes sont réparties entre chaque serveur en fonction du loadfactor. Si les deux serveurs ont le même loadfactor, les requêtes seront réparties également entre les deux. Si le deuxième serveur à un loadfactor deux fois plus importants, alors il traitera deux fois plus de requêtes.
lbmethod=bytraffic : Cette fois, ce n'est plus le nombre de requêtes qui est réparti entre le serveurs, mais le nombre de bytes échangés. Selon le même principe, si deux serveurs ont le même loadfactor, le traffic sera réparti également entre les deux. Si un des serveurs à un loadfactor deux fois supérieur à l'autre, il traitera deux fois plus de bytes.
- lbmethod=bybusyness : Cette méthode prend en compte le nombre de requêtes en attente. Chaque nouvelle requête sera automatiquement assignée au serveur ayant le moins de requêtes à traiter à cet instant.
La ligne ProxyPass définit :
- / : le contexte Apache à balancer
- balancer://portal : le nom du balancer défini
| Info |
|---|
Le code : définit une interface graphique permettant de visualiser la répartition des charges. Elle est accessible via l'url http://localhost/balancer-manager . |
...