- Frontal : héberge
le site www.monsite.com et a pour IP : 192.168.0.1
- Data1 : hébergera
le contenu du répertoire Videos du site www.monsite.com et
a pour IP : 192.168.0.2
- Data2 : hébergera
le contenu du répertoire Intranet du site www.monsite.com et
a pour IP : 192.168.0.3
- Data1bis : sera
la copie conforme de Data1 et aura pour IP : 192.168.0.20
- Data2bis : sera
la copie conforme du Data2 et aura pour IP : 192.168.0.30
Après l'installation
de Debian il faut installer apache2 de façon
traditionnelle. Afin de pouvoir utiliser le mode load balancer
vous devez installer également ce paquet : libapache2-mod-proxy-html
( apt-get install libapache2-mod-proxy-html )
Il faut ensuite
configurer un module qui se trouve dans le répertoire /etc/apache2/mods-available
: proxy.conf
Dans un shell
lancez, vi /etc/apache2/mods-available/proxy.conf
Vous devez modifier
la ligne : Deny from all et mettre All from all
Vous devez obtenir
un fichier proxy.conf semblable à celui-ci
<IfModule
mod_proxy.c>
#turning ProxyRequests on and allowing proxying from all may
allow
#spammers to use your proxy to send email.
ProxyRequests Off
<Proxy
*>
AddDefaultCharset off
Order deny,allow
Allow from all
#Allow from .example.com
</Proxy>
# Enable/disable the handling of HTTP/1.1 "Via:"
headers.
# ("Full" adds the server version; "Block"
removes all outgoing Via: headers)
# Set to one of: Off | On | Full | Block
ProxyVia On
</IfModule>
|
Je concidère
ici que le site internet est installé sur le fichier default
et qu'il a été activé (voir
configuration de apache2)
Vous devez ensuite
activer les diffèrents modules nécessaires au fonctionnement
du load balancer :
Frontal:
# a2enmod proxy
Frontal: # a2enmod proxy_http |
Il faut ensuite
ajouter quleques lignes au fichier de conf de votre site : vi /etc/apache2/sites-available/default
<VirtualHost
*:80>
ServerAdmin webmaster@localhost
ProxyRequests
off
ProxyPass / http://192.168.0.1/
ProxyPass /videos/ http://192.168.0.2/
ProxyPass /intranet/ http://192.168.0.20/
../..
|
On relance Apache
(/etc/init.d/apache2 restart)
Lorsque vous lancez
dans votre navigateur http://www.monsite.com vous vous trouvez bien
sur Frontal. Quand vous lancez http://www.monsite.com/vidéos
vous vous trouvez sur Data1 et quand vous tapez http://www.monsite.com/intranet.
vous vous trouvez sur Data2.
Cette étape
de répartition en fonction des URL finie, il faut maintenant
implémenté la répartition de charge (load balancer)
proprement dite.
Il faut activer
un nouveau module :
| Frontal:
# a2enmod proxy_balancer |
En tout premier
lieu on va activer l'interface d'administration du load balancer dans
le fichier de conf du site (default).
<Location
/balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from 192.168.0.0/24
</Location> |
Ce
bloc doit être placé avant les lignes "ProxyPass"
mais après la ligne "ProxyRequest"
Notez
que le allow from peut être adapté à votre
utilisation. J'ai ici autorisé tout le réseau
192.168.0.x a accèder à l'interface d'administration.
|
Il faut ensuite
modifier quelques peu les règles de renvois et ajouter les
"pools" de serveurs. Ici deux pools distincts seront configurés
: celui de l'intranet et celui des vidéos.
Editez le fichier
default et ajouter et modifier comme suit :
|
<Proxy balancer://my-pool-videos>
BalancerMember http://192.168.0.2:80
BalancerMember http://192.168.0.20:80
</Proxy>
<Proxy balancer://my-pool-intranet>
BalancerMember http://192.168.0.3:80
BalancerMember http://192.168.0.30:80
</Proxy>
ProxyPass /videos/ balancer://my-pool-videos/
ProxyPass /intranet/ balancer://my-pool-intranet/
ProxyPass
/ http://192.168.0.1/
|
Pour
une raison obscure que je ne me m'explique pas, il faut placer
le ProxyPass de la racine du site à la fin, sinon elle
prends le pas sur les autres. Je n'ai pas testé sur toutes
les version d'apache ni de linux, en tout cas les deux configurations
que j'ai testé (sous Lenny et sous Etch) m'ont fait ce
coup là.
Les
noms "my-pool-videos" et "my-pool-intranet"
sont complètement arbitraires, vous pouvez les appeler
comme vous voulez (toto, titi, etc...). La seule contrainte
se trouve dans la ligne du ProxyPass ou vous devez avoir :
/repertoire_balancer/
balancer://nom_du_pool
|
Il faut relancer
apache de nouveau (apache2ctl restart) et tout est ok.
Le balancer est
maintenant opérationnel. Afin d'accèder à l'interface
d'administration, ouvrez l'URL : http://www.monsite.com/balancer-manager/
Vous arrivez à
une page semblable à celle-ci :
 |
Vous
m'excuserez si certaines parties ont été effacé,
mais le screenshit a été réalisé sur
un balancer en production et pour des raisons de sécurité
évidentes, j'ai retiré les IP ainsi que le nom du
balancer et des polls qui avait des noms trop "explicites" |
Pour administrer
un pool, il suffit de cliquer sur le lien ; balancer://pool-name
Ceci donne :
 |
Vous pouvez
choisir le seuil de failover (nombre d'echec avant désactivation)
ici 3 ; le time out, et la méthode de répartition
de charge, deux choix :
- byrequest
: 1 accès par serveur
- bytraffic
: en fonction du nombre d'utilisateurs par serveur
|
En cliquant sur
l'un des Serveurs (colonne Worker URL) vous pouvez désactiver
un des serveur :
 |
Pour désactiver
un serveur il suffit de cliquer sur le bouton radio "Disabled"
et de faire "Submit" |
Voilà vous
n'avez plus qu'à mettre en pratique.