Configuration de Nginx pour l'équilibrage de charge et la continuité de service lors des mises à jour

Pourquoi mettre en place un équilibrage de charge ?

Lorsque votre site web est un site d'entreprise ou un blog personnel avec peu de trafic, un seul serveur suffit généralement. Cependant, pour les plateformes à grande échelle avec des millions d'utilisateurs, plusieurs serveurs sont nécessaires. L'équilibrage de charge permet de distribuer intelligemment le trafic entre ces serveurs.

Dans une architecture Web, un équilibreur de charge agit comme point d'entrée unique pour les requêtes externes. Il masque l'architecture interne aux utilisateurs et améliore la sécurité en empêchant l'accès direct aux serveurs backend. En cas de panne de tous les serveurs principaux, certains équilibreurs peuvent rediriger vers un système de secours ou afficher un message d'indisponibilité.

Installation de Nginx

Téléchargement du package

wget http://nginx.org/download/nginx-1.11.5.tar.gz

Extraction de l'archive

tar -zxvf nginx-1.11.5.tar.gz

Configuration et compilation

Accédez au répertoire extrait et lancez la configuration :

cd nginx-1.11.5
./configure

Résolution des dépendances

  • Erreur compilateur C manquant : Installez gcc via yum install gcc
  • Bibliothèque PCRE absente : Exécutez yum -y install pcre-devel
  • Module OpenSSL requis : Utilisez yum -y install openssl openssl-devel

Une fois toutes les dépendances résolues, relancez ./configure, puis compilez et installez :

make && make install

Démarrage du service

Le binaire Nginx se trouve dans /usr/local/nginx/sbin/. Pour démarrer le service :

./nginx -t  # Test de configuration
./nginx     # Démarrage
./nginx -s reload  # Rechargement sans interruption

Configuration de l'équilibrage de charge

Éditez le fichier de configuration principal :

vi /usr/local/nginx/conf/nginx.conf

Ajoutez la configuration suivante dans la section http :

upstream backend_pool {
    server 10.1.2.10:8085 weight=1;
    server 10.1.2.10:8080 weight=2;
}

server {
    listen 8090;
    server_name localhost;
    
    location / {
        proxy_pass http://backend_pool;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Cette configuration distribue les requêtes selon un ratio 1:2 entre les deux serveurs backend. Le paramètre weight définit la proportion de trafic dirigée vers chaque instance.

Vérification du fonctionnement

Accédez à l'URL http://10.1.2.10:8090 et rafraîchissez plusieurs fois la page. Vous observerez que les réponses proviannent alternativement des deux serveurs selon le poids configuré.

Configuration des serveurs de secours

Pour assurer la disponibilité pendant les mises à jour, Nginx permet de définir des serveurs backup qui ne reçoivent des requêtes que lorsque les serveurs principaux sont indisponibles.

upstream app_cluster {
    server 192.168.198.128:8080 weight=1;
    server 192.168.198.128:8090 weight=4;
    server 192.168.198.128:8091 backup;
}

Avec cette configuraton :

  • Les requêtes sont normalement distribuées entre les serveurs principaux selon leur poids (1:4)
  • Le serveur sur le port 8091 reste inactif tant que les autres fonctionnent
  • En cas de panne des serveurs principaux, tout le trafic est automatiquement redirigé vers le serveur backup

Cette approche permet de réaliser des déploiements progressifs sans interruption de service. Le serveur backup peut être utilisé pour tester les nouvelles versions avant de basculer le trafic principal.

Étiquettes: nginx load-balancing reverse-proxy High-Availability Web-Server

Publié le 8 octobre à 05h55