Répartition de charge

Répartition de charge entre deux serveurs Apache à l’aide d’un serveur Nginx, en utilisant des machines virtuelles (VM) sur VirtualBox

1. Installation de VirtualBox

Téléchargez et installez VirtualBox à partir du site officiel : VirtualBox.

2. Création des machines virtuelles

Créez trois machines virtuelles : une pour le serveur Nginx et deux pour les serveurs Apache.

a. Création de la VM pour le serveur Nginx

  1. Ouvrez VirtualBox et cliquez sur “New” pour créer une nouvelle VM.
  2. Donnez un nom à votre VM (par exemple, “NginxServer”), choisissez “Linux” et “Ubuntu (64-bit)”.
  3. Allouez au moins 1 GB de RAM.
  4. Créez un disque dur virtuel de 10 GB en sélectionnant “Create a virtual hard disk now”.
  5. Choisissez le type de fichier VDI (VirtualBox Disk Image).
  6. Sélectionnez “Dynamically allocated”.
  7. Spécifiez une taille de disque de 10 GB.

b. Création des VMs pour les serveurs Apache

Répétez les étapes ci-dessus pour créer deux autres VMs, nommées “ApacheServer1” et “ApacheServer2”.

3. Installation de l’OS sur les VM

  1. Téléchargez l’image ISO d’Ubuntu Server à partir du site officiel : Ubuntu Server.
  2. Démarrez chaque VM et montez l’ISO d’Ubuntu Server.
  3. Suivez les instructions à l’écran pour installer Ubuntu Server sur chaque VM.

Configuration des serveurs

4. Configuration du serveur Nginx

a. Installation de Nginx

  1. Connectez-vous à la VM Nginx.
  2. Mettez à jour les paquets : sudo apt update
  3. Installez Nginx : sudo apt install nginx

b. Configuration de Nginx pour la répartition de charge

  1. Ouvrez le fichier de configuration de Nginx : sudo nano /etc/nginx/sites-available/default
  2. Modifiez le fichier pour inclure la configuration de répartition de charge :

upstream backend {
    server 192.168.56.101; # Adresse IP de ApacheServer1
    server 192.168.56.102; # Adresse IP de ApacheServer2
}

server {
    listen 80;
    server_name _;

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
    
  1. Sauvegardez et fermez le fichier (Ctrl+O, Enter, Ctrl+X).
  2. Testez la configuration : sudo nginx -t
  3. Rechargez Nginx : sudo systemctl reload nginx

5. Configuration des serveurs Apache

a. Installation d’Apache

  1. Connectez-vous à chaque VM Apache.
  2. Mettez à jour les paquets : sudo apt update
  3. Installez Apache : sudo apt install apache2

b. Création de pages HTML différentes

Pour ApacheServer1, créez une page HTML unique :


echo "<html><body><h1>Server 1</h1></body></html>" | sudo tee /var/www/html/index.html
    

Pour ApacheServer2, créez une page HTML différente :


echo "<html><body><h1>Server 2</h1></body></html>" | sudo tee /var/www/html/index.html
    

c. Redémarrez Apache

sudo systemctl restart apache2

Tests de la configuration

1. Vérifiez la connectivité

Assurez-vous que chaque serveur Apache est accessible individuellement en visitant http://192.168.56.101 et http://192.168.56.102 depuis votre navigateur.

2. Test de la répartition de charge

Accédez à l’adresse IP de la VM Nginx depuis votre navigateur (par exemple, http://192.168.56.100).

Rafraîchissez la page plusieurs fois pour vérifier que la charge est répartie entre les deux serveurs Apache. Vous devriez voir les messages “Server 1” et “Server 2” alterner.

 

Version avec Apache Apache pour la répartition de charge

  1. Installer la VM et Apache
  2. Installer les modules nécessaires
sudo apt install apache2
sudo a2enmod proxy
sudo a2enmod proxy_balancer
sudo a2enmod proxy_http
sudo a2enmod lbmethod_byrequests

 

  1. Ouvrez le fichier de configuration d’Apache : sudo nano /etc/apache2/sites-available/000-default.conf
  2. Ajoutez la configuration pour le load balancing :

<Proxy "balancer://mycluster">
    BalancerMember http://192.168.56.101
    BalancerMember http://192.168.56.102
    ProxySet lbmethod=byrequests
</Proxy>

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / balancer://mycluster/
    ProxyPassReverse / balancer://mycluster/
</VirtualHost>
    
  1. Testez la configuration : sudo apache2ctl configtest
  2. Rechargez Apache : sudo systemctl reload apache2

 

 

Conclusion

Vous avez maintenant mis en place une répartition de charge entre deux serveurs Apache à l’aide d’un serveur Nginx, tous hébergés sur des machines virtuelles dans VirtualBox. Vous pouvez tester la configuration en accédant à l’IP du serveur Nginx et en observant la distribution des requêtes entre les serveurs Apache.