mercredi 28 août 2013

Loadbalancing avec Apache

Le loadbalancing

En français : répartition de charge. On peut y avoir recours pour absorber une trop forte charge applicative, faire de la haute disponibilité, etc...

Les modules apache à charger

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so

La configuration 

Dans l'exemple on a 4 serveurs frontaux 3 nominaux (192.168.1.1, 192.168.1.2 et 192.168.1.3) et 1 backup (192.168.1.4) désactivé par défaut.
On aura besoin d'un sticky session pour forcer le client à retourner toujours sur le même serveur. On peut se servir d'un cookie distribué par l'application ou en attribuer un d'office.
Ne pas oublier d'activer  l'interface d'administration qui permet entre autre de sortir un serveur du groupe.

#definition du groupe de serveurs
<Proxy balancer://load_test>
     BalancerMember http://192.168.1.1:8080/test loadfactor=33 route=serveur1  
     BalancerMember http://192.168.1.2:8080/test loadfactor=33 route=serveur2
     BalancerMember http://192.168.1.3:8080/test loadfactor=33 route=serveur3
     BalancerMember http://192.168.1.4:8080/test loadfactor=33 route=serveur4 status=D
</Proxy>

# stickysession
#Si Application java JSESSIONID
#Si application php  phpsessid
#sinon on cree un cookie contenant le nom du serveur
#Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED    

ProxyPass /test balancer://load_test stickysession=JSESSIONID|jsessionid nofailover=Off timeout=45 failonstatus=503

ProxyPassReverse /test http://192.168.1.1:8080/test
ProxyPassReverse /test http://192.168.1.2:8080/test
ProxyPassReverse /test http://192.168.1.3:8080/test
ProxyPassReverse /test http://192.168.1.4:8080/test

# definition de l'interface d'administration
<Location /balancer-manager>
    SetHandler balancer-manager
    Order Deny,Allow
    Allow from 127.0.0.1
</Location>

Aucun commentaire:

Enregistrer un commentaire