5 min de lecture - 15 mai 2025
Distribuer le trafic d'un site web sur des serveurs VPS situés à plusieurs endroits à l'aide de NGINX. Apprenez à configurer l'équilibrage de la charge, à éviter les points de défaillance uniques et à améliorer les performances.
L'équilibrage de la charge de votre site web entre plusieurs instances VPS situées dans des lieux géographiques différents peut améliorer les performances, réduire la latence et renforcer la redondance. En utilisant NGINX comme proxy inverse, vous pouvez distribuer le trafic entre des serveurs backend, chacun hébergeant une copie de votre site web ou de votre application.
Dans ce guide, nous allons parcourir le processus de configuration, mettre en avant les meilleures pratiques et aborder le piège courant de l'introduction d'un point de défaillance unique avec le reverse proxy, ainsi que les solutions pour l'atténuer.
Commencez par déployer des instances VPS sur plusieurs sites géographiques - par exemple, une à New York, une à Francfort et une à Singapour. Chaque serveur privé virtuel doit fonctionner :
Veillez à ce que le contenu et les configurations soient cohérents sur tous les serveurs.
Choisissez un serveur virtuel qui servira de proxy inverse et d'équilibreur de charge, ou provisionnez-en un nouveau à cette fin. Ce serveur acheminera le trafic vers les nœuds VPS de backend.
Utilisez une configuration de proxy inverse NGINX de base qui définit un groupe en amont et qui achemine les requêtes entrantes vers vos nœuds backend.
Voici un exemple de configuration NGINX pour votre proxy
http { upstream backend_servers { server vps1.example.com ; server vps2.example.com ; server vps3.example.com ; } server { listen 80 ; location / { proxy_pass http://backend_servers ; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; } } }
Le serveur virtuel hébergeant le proxy inverse NGINX devient un point de défaillance unique. Si ce serveur tombe en panne, l'ensemble de votre site devient indisponible, même si vos serveurs dorsaux fonctionnent toujours.
Utilisez des outils comme Keepalived ou Pacemaker avec VRRP pour créer une IP flottante entre deux ou plusieurs nœuds NGINX. Si l'un d'eux tombe en panne, l'IP bascule automatiquement sur l'autre.
Exécutez plusieurs nœuds d'équilibrage de charge NGINX et utilisez un DNS ou un GeoDNS round-robin (par exemple AWS Route 53, Cloudflare Load Balancing) pour distribuer le trafic entre eux.
Annoncer la même adresse IP à partir de plusieurs régions géographiques à l'aide de BGP et d'Anycast. Le trafic est automatiquement acheminé vers le nœud le plus proche en fonction de l'emplacement de l'utilisateur.
Conseil : La combinaison du routage géographique basé sur le DNS avec des proxys NGINX hautement disponibles offre la meilleure couverture et la meilleure résilience.
Bien que NGINX Open Source ne supporte pas les contrôles de santé actifs de manière native, il arrêtera le routage vers un nœud défaillant après des erreurs de connexion. Pour des contrôles de santé plus avancés :
Mettez à jour vos enregistrements DNS pour qu'ils pointent vers l'adresse IP de votre proxy inverse NGINX (ou l'IP flottante si vous utilisez HA). Si vous utilisez plusieurs proxys, configurez votre fournisseur DNS pour une résolution équilibrée en charge ou géo-responsable.
NGINX lui-même ne gère pas le routage basé sur la géolocalisation, mais vous pouvez le coupler avec :
``` Requête utilisateur | v +---------------------+ | GeoDNS / Load-aware | | Couche de routage DNS | +---------------------+ | v +----------------------+ | Proxy NGINX régional | | (HA ou Anycast IP) | +----------------------+ | v +---------------------+ | Nœuds de backend VPS | +---------------------+ | Nœuds de backend NGINX régional | (HA ou Anycast IP) | +----------------------+ | v +---------------------+ | Nœuds de back-end VPS |
L'utilisation de NGINX pour équilibrer la charge sur plusieurs serveurs VPS vous permet d'évoluer globalement et de réduire la latence. Mais n'oubliez pas que le reverse proxy doit être hautement disponible, sinon il devient un handicap.
Pour éliminer les points de défaillance uniques, envisagez une distribution de charge basée sur le DNS, des IP flottantes ou un réseau Anycast. Avec une planification minutieuse, votre configuration VPS multi-site peut fournir des performances rapides et tolérantes aux pannes à grande échelle.
Ce guide n'est approprié que pour une interface web, et ne couvre pas les connexions à une base de données, ni les problèmes et solutions de distribution pour une haute disponibilité. Nous aborderons ce sujet dans un article ultérieur...
Distribuer le trafic d'un site web sur des serveurs VPS situés à plusieurs endroits à l'aide de NGINX. Apprenez à configurer l'équilibrage de la charge, à éviter les points de défaillance uniques et à améliorer les performances.
5 min de lecture - 15 mai 2025
5 min de lecture - 13 mai 2025