Aller au contenu

TP4 : Équilibrage de charge avec Apache


1. Serveur front : Configuration réseau et Routage (NAT)

Exécutez ces commandes en tant que root sur le serveur front.

1.1 Configuration des interfaces réseau

Éditez le fichier /etc/network/interfaces :

auto lo
iface lo inet loopback

# Interface publique
allow-hotplug enp1s0
iface enp1s0 inet dhcp

# Interface privée
auto enp7s0
iface enp7s0 inet static
    address 10.20.1.10
    netmask 255.255.255.0

Puis redémarrez le service réseau :

systemctl restart networking

1.2 Activation de l'IP Forwarding

sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
sysctl -p

1.3 Mise en place du Masquerading (NAT)

iptables -t nat -A POSTROUTING -s 10.20.1.0/24 -o enp1s0 -j MASQUERADE

1.4 Sauvegarde persistante des règles

Répondez "Oui" aux questions de l'installateur.

apt-get update
apt-get install -y iptables-persistent
netfilter-persistent save

2. Serveurs back : Création des sites web

Exécutez chaque bloc sur le serveur correspondant en tant que root.

Sur le serveur back1

Créez le répertoire et la page d'accueil :

mkdir -p /var/www/serveur-a
echo "<h1>Bienvenue sur le Serveur A (back1)</h1><p>Cette page est servie par 10.20.1.11</p>" > /var/www/serveur-a/index.html

Créez le fichier /etc/apache2/sites-available/serveur-a.conf :

<VirtualHost *:80>
    ServerName www.serveur-a.net
    DocumentRoot /var/www/serveur-a
    ErrorLog ${APACHE_LOG_DIR}/serveur-a_error.log
    CustomLog ${APACHE_LOG_DIR}/serveur-a_access.log combined
</VirtualHost>

Activez le site :

a2ensite serveur-a.conf
systemctl reload apache2

Sur le serveur back2

Créez le répertoire et la page d'accueil :

mkdir -p /var/www/serveur-b
echo "<h1>Bienvenue sur le Serveur B (back2)</h1><p>Cette page est servie par 10.20.1.12</p>" > /var/www/serveur-b/index.html

Créez le fichier /etc/apache2/sites-available/serveur-b.conf :

<VirtualHost *:80>
    ServerName www.serveur-b.net
    DocumentRoot /var/www/serveur-b
    ErrorLog ${APACHE_LOG_DIR}/serveur-b_error.log
    CustomLog ${APACHE_LOG_DIR}/serveur-b_access.log combined
</VirtualHost>

Activez le site :

a2ensite serveur-b.conf
systemctl reload apache2

Sur le serveur back3

Créez le répertoire et la page d'accueil :

mkdir -p /var/www/serveur-c
echo "<h1>Bienvenue sur le Serveur C (back3)</h1><p>Cette page est servie par 10.20.1.13</p>" > /var/www/serveur-c/index.html

Créez le fichier /etc/apache2/sites-available/serveur-c.conf :

<VirtualHost *:80>
    ServerName www.serveur-c.net
    DocumentRoot /var/www/serveur-c
    ErrorLog ${APACHE_LOG_DIR}/serveur-c_error.log
    CustomLog ${APACHE_LOG_DIR}/serveur-c_access.log combined
</VirtualHost>

Activez le site :

a2ensite serveur-c.conf
systemctl reload apache2

3. Serveur front : Équilibreur de charge Apache

Retournez sur le serveur front (toujours en root).

3.1 Résolution des noms DNS locaux

Ajoutez ces lignes à la fin du fichier /etc/hosts :

10.20.1.11  www.serveur-a.net
10.20.1.12  www.serveur-b.net
10.20.1.13  www.serveur-c.net

3.2 Activation des modules requis

a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests

3.3 Sécurisation du proxy

Éditez le fichier /etc/apache2/mods-available/proxy.conf :

<IfModule mod_proxy.c>
    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Deny from all
    </Proxy>
</IfModule>

3.4 Création du VirtualHost d'équilibrage

Répartition configurée : 50% / 30% / 20%

Créez le fichier /etc/apache2/sites-available/balanced.conf :

<VirtualHost *:80>
    ServerName www.balanced.net

    <Proxy "balancer://moncluster">
        BalancerMember "http://www.serveur-a.net" loadfactor=5
        BalancerMember "http://www.serveur-b.net" loadfactor=3
        BalancerMember "http://www.serveur-c.net" loadfactor=2

        ProxySet lbmethod=byrequests

        Order allow,deny
        Allow from all
    </Proxy>

    ProxyPass "/" "balancer://moncluster/"
    ProxyPassReverse "/" "balancer://moncluster/"

    ErrorLog ${APACHE_LOG_DIR}/balanced_error.log
    CustomLog ${APACHE_LOG_DIR}/balanced_access.log combined
</VirtualHost>

3.5 Activation et redémarrage

a2ensite balanced.conf
systemctl restart apache2

4. Machine Client : Configuration et Test final

4.1 Ajout de la résolution DNS locale

echo "192.168.122.50  www.balanced.net" | sudo tee -a /etc/hosts

4.2 Test de répartition de charge (10 requêtes)

for i in {1..10}; do curl -s http://www.balanced.net | grep "Serveur"; done