Quand il s’agit de configurer plusieurs serveurs d’application pour la redondance, l’équilibrage de charge est un mécanisme couramment utilisé pour distribuer efficacement les demandes de service entrantes ou le trafic réseau sur un groupe de serveurs backend.
L’équilibrage de charge présente plusieurs avantages, notamment une disponibilité accrue de l’application grâce à la redondance, une fiabilité et une évolutivité accrues (plus de serveurs peuvent être ajoutés lorsque le trafic augmente). Il améliore également les performances de l’application et apporte de nombreux autres avantages.
Lecture recommandée : Le Guide Ultime pour Sécuriser, Renforcer et Améliorer les Performances du Serveur Web Nginx
Nginx peut être déployé en tant qu’équilibrage de charge HTTP efficace pour distribuer le trafic réseau entrant et la charge de travail parmi un groupe de serveurs d’application, renvoyant dans chaque cas la réponse du serveur sélectionné au client approprié.
Les méthodes d’équilibrage de charge prises en charge par Nginx sont :
- round-robin – qui distribue les demandes aux serveurs d’application de manière circulaire. Il est utilisé par défaut lorsqu’aucune méthode n’est spécifiée,
- least-connected – attribue la prochaine demande à un serveur moins occupé (le serveur ayant le moins de connexions actives),
- ip-hash – où une fonction de hashage est utilisée pour déterminer quel serveur doit être sélectionné pour la prochaine requête en fonction de l’adresse IP du client. Cette méthode permet la persistance de session (associer un client à un serveur d’application particulier).
En outre, vous pouvez utiliser des poids de serveur pour influencer les algorithmes d’équilibrage de charge de Nginx à un niveau plus avancé. Nginx prend également en charge les vérifications d’état de santé pour marquer un serveur comme échoué (pendant une durée configurable, par défaut 10 secondes) si sa réponse échoue avec une erreur, évitant ainsi de sélectionner ce serveur pour les requêtes entrantes ultérieures pendant un certain temps.
Ce guide pratique montre comment utiliser Nginx en tant qu’équilibreur de charge HTTP pour distribuer les requêtes client entrantes entre deux serveurs ayant chacun une instance de la même application.
À des fins de test, chaque instance d’application est étiquetée (sur l’interface utilisateur) pour indiquer le serveur sur lequel elle s’exécute.
Configuration de l’environnement de test
Load Balancer: 192.168.58.7 Application server 1: 192.168.58.5 Application server 2: 192.168.58.8
Sur chaque serveur d’application, chaque instance d’application est configurée pour être accessible en utilisant le domaine tecmintapp.lan
. En supposant qu’il s’agisse d’un domaine entièrement enregistré, nous ajouterions ce qui suit dans les paramètres DNS.
A Record @ 192.168.58.7
Cette entrée indique aux requêtes client vers quel domaine se diriger, dans ce cas, l’équilibreur de charge (192.168.58.7). Les enregistrements A
DNS n’acceptent que des valeurs IPv4. Alternativement, le fichier /etc/hosts sur les machines clientes peut également être utilisé à des fins de test, avec l’entrée suivante.
192.168.58.7 tecmintapp.lan
Configuration de l’équilibrage de charge Nginx sous Linux
Avant de configurer l’équilibrage de charge Nginx, vous devez installer Nginx sur votre serveur en utilisant le gestionnaire de paquets par défaut de votre distribution comme indiqué.
$ sudo apt install nginx [On Debian/Ubuntu] $ sudo yum install nginx [On CentOS/RHEL]
Ensuite, créez un fichier de bloc de serveurs appelé /etc/nginx/conf.d/loadbalancer.conf
(donnez-lui un nom de votre choix).
$ sudo vi /etc/nginx/conf.d/loadbalancer.conf
Ensuite, copiez et collez la configuration suivante. Cette configuration se base sur le round-robin car aucune méthode d’équilibrage de charge n’est définie.
upstream backend { server 192.168.58.5; server 192.168.58.8; } server { listen 80 default_server; listen [::]:80 default_server; server_name tecmintapp.lan; location / { proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://backend; } }
Dans la configuration ci-dessus, la directive proxy_pass
(qui doit être spécifiée à l’intérieur d’une localisation, /
dans ce cas) est utilisée pour envoyer une requête aux serveurs HTTP proxys référencés en utilisant le mot backend, dans la directive upstream (utilisée pour définir un groupe de serveurs). De plus, les requêtes seront réparties entre les serveurs en utilisant un mécanisme d’équilibrage de charge de type round-robin pondéré.
Pour utiliser le mécanisme de connexion la moins utilisée, utilisez la configuration suivante
upstream backend { least_conn; server 192.168.58.5; server 192.168.58.8; }
Et pour activer le mécanisme de persistance de session ip_hash
, utilisez :
upstream backend { ip_hash; server 192.168.58.5; server 192.168.58.8; }
Vous pouvez également influencer la décision d’équilibrage de charge en utilisant les poids des serveurs. En utilisant la configuration suivante, s’il y a six requêtes de clients, le serveur d’application 192.168.58.5 recevra 4 requêtes et 2 iront vers 192.168.58.8.
upstream backend { server 192.168.58.5 weight=4; server 192.168.58.8; }
Enregistrez le fichier et quittez. Ensuite, assurez-vous que la structure de configuration de Nginx est correcte après avoir ajouté les modifications récentes, en exécutant la commande suivante.
$ sudo nginx -t
Si la configuration est OK, redémarrez et activez le service Nginx pour appliquer les changements.
$ sudo systemctl restart nginx $ sudo systemctl enable nginx
Test de l’équilibrage de charge Nginx sous Linux
Pour tester l’équilibrage de charge Nginx, ouvrez un navigateur Web et utilisez l’adresse suivante pour naviguer.
http://tecmintapp.lan
Une fois l’interface du site Web chargée, notez l’instance de l’application qui s’est chargée. Ensuite, actualisez continuellement la page. À un moment donné, l’application devrait être chargée à partir du deuxième serveur, indiquant l’équilibrage de charge.

Vous venez d’apprendre comment configurer Nginx en tant qu’équilibreur de charge HTTP sous Linux. Nous aimerions connaître vos réflexions sur ce guide, et notamment sur l’utilisation de Nginx en tant qu’équilibreur de charge, via le formulaire de rétroaction ci-dessous. Pour plus d’informations, consultez la documentation Nginx sur l’utilisation de Nginx en tant qu’équilibreur de charge HTTP.
Source:
https://www.tecmint.com/use-nginx-as-http-load-balancer-in-linux/