Installation d’un Load Balancing

Sur Linux, nous utiliserons Nginx avec un Reverse Proxy sur notre machine hôte Proxmox et deux conteneurs Debian 12 Standard ayant chacun Nginx en fonctionnement simple.

Machine Hôte (Proxmox)

Pour cela nous allons mettre à jour notre machine et installer Nginx :

apt update && apt upgrade -y
apt install nginx -y

Configuration du Load Balancer Nginx

Créez un nouveau fichier de configuration :

nano /etc/nginx/sites-available/load-balancer.conf

Ajoutez le contenu suivant

upstream [application_name] {
    server [CT1_IP]:[PORT];
    server [CT2_IP]:[PORT];
    # Ajoutez d'autres serveurs CT si nécessaire
}

server {
    listen [PORT];
    server_name [passerelle IP ou FQDN];

    location / {
        proxy_pass http://[application_name];
        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;
    }
}

Activez la configuration

ln -s /etc/nginx/sites-available/load-balancer.conf /etc/nginx/sites-enabled/
systemctl restart nginx
systemctl reload nginx
Conteneurs Debian 12

Mettre à jour les systèmes et installer Nginx

apt update && apt upgrade -y
apt install nginx -y

Éditez le fichier de configuration par défaut

nano /etc/nginx/sites-available/default

Remplacez ou modifiez le contenu par :

server {
    listen [PORT] default_server;
    listen [::]:[PORT] default_server;

    root /var/www/html;
    index index.html index.htm index.nginx-debian.html; #le nom de vos pages webs

    server_name _;

    location / {
	proxy_pass http://127.0.0.1:[PORT]; # Pas obligatoire
        try_files $uri $uri/ =404;
    }
}

Création de sites différents pour les tests :

echo "<h1>Bienvenue sur le conteneur CTX (IP: 192.168.1.X)</h1>" > /var/www/html/index.html

Activation et démarrage de Nginx

nginx -t
systemctl restart nginx
systemctl reload nginx

On peut faire des règles de firewall via la configuration de nftables

Nous allons les utiliser pour protéger nos conteneurs, de façon à ce qu’ils reçoivent uniquement les paquets des ports 80 (HTTP) et 443 (HTTPS)

Édition des règles nftables

nano /etc/nftables.conf

Rajout de cette ligne dans le fichier de conf

tcp dport { 80, 443 } accept

Puis rechargez les règles nftables

nft -f /etc/nftables.conf

Vous pouvez maintenant tenter d’aller sur l’adresse IP de votre machine hôte sur laquelle vous mentionnerez le nom de la page que vous souhaitez afficher

Pour mon cas j’aurai :

http://10.0.50.254/index.html

PS : Pensez à changer les valeurs entre [ ] par vos valeurs, pour les ports par exemple, j’utilise uniquement le port 80

SUIVEZ MOI

Retour en haut