:::: MENU ::::

Apache HTTP Server: Load Balancer

Apache HTTP Server a un module qui nous permet de balançoire la charge. Voyons comment il est utilisé.

Introduction

Apache HTTP Server possède plusieurs modules avec lesquels vous pouvez faire beaucoup de choses, comme écraser l’URL, utiliser la sécurité SSL ou équilibrer la charge entre plusieurs machines. L’équilibrage de charge consiste en ce que nous utilisons une seule adresse URL et en interne le trafic est redirigé vers différentes machines qui contiennent chacune la même page Web.

Remarque: Dans cet exemple, nous utiliserons deux pages Web différentes uniquement à titre de démonstration de le balançant.

Exigences précédentes

Il faut:

  • Avoir un Apache HTTP Server installé et en cours d’exécution.
  • Avoir plusieurs emplacements avec la même page Web.

À propos des emplacements : Il peut s’agir de machines indépendantes, chacune avec sa propre URL. Dans notre cas, nous aurons deux pages Web situées dans les dossiers:

/var/www/html/webpage-1/index.html

et:

/var/www/html/webpage-2/index.html


Il est important que dans ces fichiers le contenu soit différent, car sinon nous ne pourrons pas apprécier le balançant.

Exemple de fichiers:

webpage-1/index.html

<html>
  <head>
    <title>First Web page</title>
  </head>

  <body>
    <h1>This is the first Web page.</h2>
  </body>
</html>

webpage-2/index.html

<html>
  <head>
     <title>Second Web page</title>
  </head>
  <body>
    <h1>This is the second Web page.</h2>
  </body>
</html>

Installation

Le module du balançant s’appelle “proxy_balancer” et pour l’installer vous devez entrer ces commandes:

a2enmod proxy
a2enmod proxy_http
a2enmod lbmethod_bytraffic
a2enmod proxy_balancer

Comme on peut le voir, il est nécessaire d’installer d’autres modules au préalable.

Réglage

En règle générale, presque tout le monde configure Apache dans le fichier suivant:

/etc/apache2/apache2.conf

Personnellement, je préfère configurer les choses séparément car il y a moins de distractions. Pour configurer les modules, on utilise les fichiers spécifiques, qui se trouvent dans le dossier:

/etc/apache2/mods-enabled

Nous éditons le fichier

/etc/apache2/mods-enabled/proxy_balancer.conf

et on laisse comme ça:

<IfModule mod_proxy_balancer.c>

    <Proxy "balancer://myset">
            BalancerMember "http://localhost/webpage-1/index.html"
            BalancerMember "http://localhost/webpage-2/index.html"
            Order deny,allow
            Allow from all
            ProxySet lbmethod=byrequests
    </Proxy>

    ProxyPreserveHost On

    <Location "/">
            ProxyPass "balancer://myset/"
            ProxyPassReverse "balancer://myset/"
    </Location>

</IfModule>

vim: syntax=apache ts=4 sw=4 sts=4 sr noet

De cette manière:

  1. BalanceMember indique les emplacements sur lesquels balançoire.
  2. ProxySet lbmethod indique, dans ce cas, que chaque requête doit être effectuée à un endroit différent.
  3. Location “/” indique que lorsque l’on charge la page http://localhost/ le balançant sera exécuté.

Test

On redémarre le serveur pour qu’il lise la nouvelle configuration avec:

service apache2 restart

Nous chargeons la page initiale de notre Apache HTTP Server:

http://localhost/

Et nous verrons qu’à chaque fois que nous rechargerons la page, le contenu de la page change.


So, what do you think ?