15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer
23.10.2024

Équilibrage de charge avec des serveurs dédiés : Architecture, algorithmes et mise en œuvre dans le monde réel

L’équilibrage de charge est le processus de distribution du trafic réseau entrant sur plusieurs serveurs afin qu’aucun nœud unique ne devienne un goulot d’étranglement, garantissant des performances constantes, une tolérance aux pannes et une évolutivité horizontale. Dans un environnement de serveur dédié, un équilibreur de charge se place devant votre pool de serveurs et prend des décisions de routage en temps réel basées sur l’état de santé des serveurs, les connexions actives, la latence des réponses ou des règles de politique personnalisées.

Pour toute infrastructure exécutant des charges de travail sensibles à la latence — plateformes e-commerce, applications SaaS, APIs à fort trafic ou streaming multimédia — l’équilibrage de charge n’est pas optionnel. C’est le fondement architectural qui sépare une configuration fragile à point de défaillance unique d’un système résilient de qualité production.

Comment fonctionne réellement l’équilibrage de charge : le flux technique

Comprendre l’équilibrage de charge nécessite de comprendre le cycle de vie complet d’une requête, et pas seulement le concept abstrait de « distribution du trafic ».

Le pipeline de routage des requêtes

  1. La résolution DNS pointe le client vers l’adresse IP de l’équilibreur de charge (ou une IP virtuelle dans une configuration anycast), et non vers un serveur individuel.
  2. L’équilibreur de charge reçoit la connexion au niveau de la couche 4 (TCP/UDP) ou de la couche 7 (HTTP/HTTPS) du modèle OSI.
  3. L’équilibreur évalue sa table de routage, applique l’algorithme configuré et vérifie l’état de santé actuel de chaque nœud backend.
  4. La requête est transmise au serveur backend sélectionné. Selon le mode (NAT, Direct Server Return ou tunneling IP), le chemin de réponse peut ou non repasser par l’équilibreur.
  5. Les démons de vérification de l’état s’exécutent en parallèle, sondant continuellement chaque backend via ping TCP, codes de statut HTTP ou scripts personnalisés. Un nœud défaillant est retiré du pool en quelques secondes.

Équilibrage de charge couche 4 vs couche 7

Cette distinction est l’une des décisions architecturales les plus importantes que vous aurez à prendre.

FonctionnalitéCouche 4 (Transport)Couche 7 (Application)
Opère surPaquets TCP/UDPRequêtes HTTP/HTTPS, en-têtes, cookies
Logique de routageAdresse IP + portChemin URL, nom d’hôte, valeur de cookie, contenu d’en-tête
Terminaison SSLNon (pass-through)Oui (décharge TLS des backends)
Routage basé sur le contenuImpossibleSupport complet (routage /api/ différemment de /static/)
Surcharge de performanceTrès faibleModérée (inspection approfondie des paquets requise)
Cas d’utilisation typiquesServices TCP bruts, bases de données, serveurs de jeuxApplications web, REST APIs, microservices
Exemples de logicielsHAProxy (mode TCP), LVS/IPVSNGINX, HAProxy (mode HTTP), Traefik, Envoy
Persistance de sessionHachage IP sourceInjection de cookie, affinité basée sur les en-têtes

Pour la plupart des applications web hébergées sur des Serveurs Dédiés, la couche 7 est le bon choix car elle permet un routage intelligent, le déchargement SSL et des vérifications de santé granulaires basées sur les codes de réponse HTTP plutôt que sur la connectivité TCP brute.

Algorithmes d’équilibrage de charge : choisir la bonne stratégie

L’algorithme détermine quel serveur backend reçoit chaque requête entrante. Choisir le mauvais algorithme pour votre profil de charge de travail est une source courante d’utilisation inégale des ressources.

Round Robin

Les requêtes sont distribuées séquentiellement sur tous les nœuds sains. Simple et efficace lorsque tous les serveurs ont des spécifications matérielles identiques et que les temps de traitement des requêtes sont à peu près égaux.

Inconvénient : Si une requête prend 10 secondes et la suivante 10 millisecondes, le round robin ne tient pas compte de cette disparité. Un backend lent accumule une file d’attente tandis que les autres restent inactifs.

Round Robin pondéré

Chaque serveur se voit attribuer un poids numérique. Un serveur avec un poids 3 reçoit trois fois plus de requêtes qu’un serveur avec un poids 1. Utilisez ceci lorsque votre pool contient du matériel hétérogène — par exemple, en combinant un nœud à 32 cœurs avec un nœud à 16 cœurs.

Moins de connexions

L’équilibreur suit le nombre de connexions actives vers chaque backend et route les nouvelles requêtes vers le serveur ayant le moins de connexions ouvertes. C’est l’algorithme par défaut le plus approprié pour les charges de travail avec des durées de requêtes variables, telles que les applications web adossées à des bases de données.

Temps de réponse minimal

Une extension de l’algorithme « moins de connexions » qui prend également en compte la latence mesurée du backend. Le serveur avec la combinaison la plus faible de connexions actives et de temps de réponse moyen est sélectionné. Cela nécessite que l’équilibreur maintienne des métriques de latence, ce qui ajoute une légère surcharge mais améliore significativement la qualité de distribution sous charge mixte.

Hachage IP (affinité source)

L’adresse IP source du client est hachée pour sélectionner de manière déterministe un backend. Le même client atteint toujours le même serveur, tant que la composition du pool ne change pas. Cela fournit une forme primitive de persistance de session sans nécessiter de stockage de session partagé.

Cas limite critique : Si une grande partie de votre trafic provient derrière un NAT d’entreprise ou la passerelle d’un opérateur mobile, des milliers d’utilisateurs peuvent partager une seule IP source, provoquant un déséquilibre sévère. Auditez toujours votre distribution de trafic avant de vous fier au hachage IP en production.

Aléatoire avec deux choix (puissance de deux)

L’équilibreur sélectionne aléatoirement deux serveurs candidats et route vers celui ayant le moins de connexions actives. Cette approche probabiliste s’adapte extrêmement bien aux grands pools (50+ nœuds) car elle évite la surcharge de coordination d’un scan global des connexions minimales tout en évitant le déséquilibre dans le pire cas d’une sélection purement aléatoire.

Persistance de session : quand l’absence d’état n’est pas une option

De nombreuses applications héritées stockent l’état de session localement sur le serveur (par exemple, des fichiers $_SESSION PHP écrits sur disque). Dans ces cas, router un utilisateur de retour vers un backend différent provoque une perte de session, qui se manifeste par des déconnexions inattendues ou la perte des données du panier d’achat.

Les équilibreurs de charge résolvent cela avec des sessions persistantes, implémentées via :

  • Injection de cookie : L’équilibreur injecte un cookie (par exemple, SERVERID=node2) dans la réponse HTTP. Les requêtes suivantes de ce client portent le cookie, et l’équilibreur le lit pour router vers le même nœud.
  • Affinité IP source : Comme décrit ci-dessus, moins fiable mais ne nécessite pas de support de cookie de l’application.

La solution correcte à long terme est d’externaliser le stockage de session vers un backend partagé — Redis ou Memcached — afin que n’importe quel nœud backend puisse servir n’importe quel utilisateur. Cela élimine entièrement la dépendance aux sessions persistantes et rend votre pool entièrement sans état, ce qui simplifie considérablement la mise à l’échelle et le basculement. Si vous construisez une nouvelle application, concevez-la pour des backends sans état dès le premier jour.

Vérifications de santé : le mécanisme derrière le basculement automatique

Un équilibreur de charge n’est fiable qu’autant que sa configuration de vérification de santé. Les vérifications de santé mal configurées sont responsables d’une proportion significative des incidents réels liés aux équilibreurs de charge.

Types de vérifications de santé

  • Vérification TCP : Ouvre une connexion TCP vers le port backend. Confirme que le processus est en écoute mais ne vérifie pas la correction au niveau applicatif.
  • Vérification HTTP/HTTPS : Envoie une requête HTTP vers un endpoint défini (par exemple, /health) et attend un code de statut spécifique (généralement 200 OK). C’est la norme minimale acceptable pour les applications web.
  • Vérification par script personnalisé : Exécute un script arbitraire qui peut interroger une base de données, vérifier l’espace disque ou valider l’état de l’application. Retourne 0 pour sain, non-zéro pour non sain.

Paramètres de configuration critiques

  • interval : Fréquence d’exécution de la vérification (par exemple, toutes les 5 secondes).
  • timeout : Durée d’attente d’une réponse avant de marquer la vérification comme échouée.
  • rise : Nombre de vérifications réussies consécutives requises pour marquer un nœud comme sain (évite les oscillations).
  • fall : Nombre de vérifications échouées consécutives requises pour retirer un nœud du pool.

Une configuration de production courante pour HAProxy ressemble à ceci :

backend web_servers
    balance leastconn
    option httpchk GET /health HTTP/1.1rnHost: example.com
    http-check expect status 200
    default-server inter 5s fall 3 rise 2 slowstart 60s
    server node1 192.168.1.10:80 check weight 10
    server node2 192.168.1.11:80 check weight 10
    server node3 192.168.1.12:80 check weight 5

La directive slowstart 60s est particulièrement précieuse : elle augmente progressivement le trafic vers un nœud nouvellement récupéré sur 60 secondes plutôt que de lui envoyer immédiatement toute la charge, évitant ainsi un problème de ruée soudaine lorsqu’un backend revient en ligne après une maintenance.

Terminaison SSL et déchargement TLS

La gestion du chiffrement et du déchiffrement TLS est coûteuse en termes de calcul. Dans une configuration naïve, chaque serveur backend effectue ce travail indépendamment. La terminaison SSL au niveau de l’équilibreur de charge signifie que l’équilibreur déchiffre le trafic HTTPS entrant et transmet du HTTP simple aux backends via un réseau interne de confiance.

Avantages :

  • Réduit la charge CPU sur les serveurs backend, libérant des cycles pour la logique applicative.
  • Centralise la gestion des certificats — renouvelez un seul certificat sur l’équilibreur plutôt que sur chaque nœud.
  • Permet l’inspection de couche 7 du contenu des requêtes (impossible avec le pass-through chiffré).

Considération de sécurité : Le trafic entre l’équilibreur de charge et les backends circule non chiffré. Cela est acceptable lorsque tous les nœuds se trouvent sur un VLAN privé isolé ou un réseau de gestion dédié. Si vos exigences de conformité (PCI-DSS, HIPAA) imposent un chiffrement de bout en bout, utilisez le re-chiffrement SSL : l’équilibreur termine la session TLS côté client et établit une nouvelle session TLS vers chaque backend. Cela maintient un chiffrement complet tout en permettant le routage de couche 7.

Associer la terminaison SSL à des Certificats SSL correctement émis garantit que votre infrastructure à équilibrage de charge répond à la fois aux exigences de performance et de conformité.

Haute disponibilité pour l’équilibreur de charge lui-même

Un équilibreur de charge qui est lui-même un point de défaillance unique va à l’encontre de l’objectif de toute l’architecture. Les déploiements en production nécessitent une paire d’équilibreurs de charge hautement disponibles.

Actif-passif avec VRRP/Keepalived

Deux nœuds d’équilibreur de charge partagent une IP virtuelle (VIP). Le nœud actif détient la VIP et traite tout le trafic. Le nœud passif surveille le nœud actif via un heartbeat. Si le nœud actif tombe en panne, keepalived déclenche un basculement VRRP et le nœud passif revendique la VIP en 1 à 3 secondes.

# Install keepalived on both load balancer nodes (Debian/Ubuntu)
apt-get install keepalived

# /etc/keepalived/keepalived.conf on the MASTER node
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass securepassword
    }
    virtual_ipaddress {
        203.0.113.10/24
    }
}

Sur le nœud de secours, définissez state BACKUP et priority 90. Le nœud avec la priorité la plus élevée remporte l’élection de la VIP.

Actif-actif avec DNS Round Robin ou Anycast

Les deux nœuds d’équilibreur de charge traitent activement le trafic simultanément. Le DNS retourne plusieurs enregistrements A, distribuant les clients sur les deux équilibreurs. Cela double la capacité de débit mais nécessite une synchronisation d’état soigneuse si vous utilisez des sessions persistantes.

Pour les déploiements à grande échelle sur des Serveurs Dédiés, une configuration actif-actif avec routage BGP anycast offre le débit le plus élevé et la redondance géographique.

Atténuation DDoS au niveau de l’équilibreur de charge

Un équilibreur de charge positionné en périphérie du réseau est un endroit naturel pour implémenter le filtrage du trafic et la limitation de débit avant que les requêtes malveillantes n’atteignent vos serveurs applicatifs.

Limitation du débit de connexion (HAProxy)

frontend http_in
    bind *:80
    bind *:443 ssl crt /etc/haproxy/certs/
    stick-table type ip size 100k expire 30s store conn_rate(3s),http_req_rate(10s)
    tcp-request connection track-sc0 src
    tcp-request connection reject if { sc_conn_rate(0) gt 100 }
    http-request deny if { sc_http_req_rate(0) gt 300 }

Cette configuration suit les taux de connexion par IP source dans une table persistante et rejette les clients qui dépassent 100 nouvelles connexions TCP par 3 secondes ou 300 requêtes HTTP par 10 secondes — des seuils qui bloquent la plupart des attaques par inondation HTTP volumétriques tout en autorisant le trafic légitime en rafale.

Protection contre les inondations SYN

Activez les cookies SYN au niveau du noyau sur vos nœuds d’équilibreur de charge pour gérer les attaques par inondation SYN sans épuiser la table de connexions :

sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
sysctl -w net.ipv4.tcp_synack_retries=2

Rendez ces paramètres persistants en les ajoutant à /etc/sysctl.conf.

NGINX comme équilibreur de charge de couche 7 : configuration de production

NGINX est une option largement déployée pour l’équilibrage de charge HTTP, particulièrement lorsque vous avez besoin d’une intégration étroite avec les fonctionnalités au niveau applicatif.

upstream backend_pool {
    least_conn;
    keepalive 32;

    server 192.168.1.10:8080 weight=3 max_fails=3 fail_timeout=30s;
    server 192.168.1.11:8080 weight=3 max_fails=3 fail_timeout=30s;
    server 192.168.1.12:8080 weight=1 max_fails=3 fail_timeout=30s;
    server 192.168.1.13:8080 backup;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate     /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        proxy_pass         http://backend_pool;
        proxy_http_version 1.1;
        proxy_set_header   Connection "";
        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;
        proxy_connect_timeout 5s;
        proxy_read_timeout    60s;
        proxy_next_upstream   error timeout http_502 http_503;
    }
}

Détails clés de cette configuration :

  • keepalive 32 maintient des connexions persistantes vers les backends, éliminant la surcharge de la poignée de main TCP pour les requêtes à haute fréquence.
  • proxy_next_upstream réessaie automatiquement les requêtes échouées sur le prochain backend sain.
  • La directive backup désigne node4 comme serveur de secours qui ne reçoit du trafic que lorsque tous les nœuds primaires sont indisponibles.
  • X-Forwarded-For garantit que les applications backend voient la vraie IP du client plutôt que l’IP de l’équilibreur.

Comparaison des options logicielles d’équilibrage de charge

LogicielCouchePerformanceTerminaison SSLVérifications de santé activesFacilité de configurationIdéal pour
HAProxyL4 + L7Extrêmement élevéeOuiOui (avancé)ModéréeTCP/HTTP à fort trafic, ACLs granulaires
NGINXL7 (L4 dans le module stream)Très élevéeOuiBasique (NGINX Plus pour avancé)FacileProxy web/API, serveur web intégré
TraefikL7ÉlevéeOui (Let’s Encrypt automatique)OuiTrès facileEnvironnements conteneurisés, Kubernetes
EnvoyL7Très élevéeOuiOui (vérifications de santé gRPC)ComplexeMaillage de services, microservices
LVS/IPVSL4Niveau noyau, maximumNonVia KeepalivedComplexeDébit brut, scénarios de contournement noyau
AWS ALB/NLBL7/L4GéréOuiOuiFacile (géré)Cloud natif, sans autogestion

Pour les Serveurs Dédiés autogérés, HAProxy et NGINX couvrent la grande majorité des cas d’utilisation en production. Traefik est le choix pragmatique pour les charges de travail Docker Swarm ou Kubernetes grâce à sa découverte automatique de services.

Architecture réelle : plateforme e-commerce sous charge maximale

Considérons un scénario concret : une plateforme e-commerce attendant 50 000 utilisateurs simultanés lors d’un événement promotionnel.

Disposition de l’infrastructure :

  • 2x nœuds HAProxy en configuration actif-passif partageant une VIP (via Keepalived)
  • 6x serveurs applicatifs exécutant la couche web
  • 2x serveurs de base de données dédiés (pas dans le pool de l’équilibreur de charge — ils utilisent leur propre réplication)
  • 1x cluster Redis pour le stockage de session partagé (éliminant la dépendance aux sessions persistantes)
  • Stockage NFS partagé ou stockage objet pour les ressources téléchargées par les utilisateurs

Flux de trafic :

  1. Le DNS client résout vers la VIP détenue par le nœud HAProxy actif.
  2. HAProxy applique l’algorithme leastconn, distribuant les requêtes sur 6 serveurs applicatifs.
  3. Chaque serveur applicatif lit/écrit les données de session depuis Redis — aucune affinité de session requise.
  4. Les ressources statiques sont servies directement depuis le stockage objet via un CDN, contournant entièrement l’équilibreur de charge et réduisant sa charge de 60 à 70 %.
  5. Si la vérification de santé d’un serveur applicatif échoue trois fois consécutives, HAProxy le retire du pool en 15 secondes. Les 5 serveurs restants absorbent son trafic.
  6. Si le nœud HAProxy actif tombe en panne, Keepalived transfère la VIP vers le nœud passif en 2 secondes — de manière transparente pour tous les clients.

Cette architecture gère le pic promotionnel sans qu’aucun composant unique ne devienne un goulot d’étranglement, et elle s’adapte horizontalement en ajoutant davantage de serveurs applicatifs au pool HAProxy sans aucune interruption de service.

Si vous exécutez des charges de travail d’inférence accélérées par GPU derrière un équilibreur de charge — par exemple, en distribuant des requêtes de service de modèles ML — les mêmes principes s’appliquent, mais les vérifications de santé des backends doivent valider la disponibilité du GPU et la marge de VRAM, pas seulement l’accessibilité HTTP. L’infrastructure d’Hébergement GPU bénéficie significativement de l’équilibrage par temps de réponse minimal en raison de la forte variance de la latence d’inférence selon les différents types de requêtes.

Surveillance d’une infrastructure à équilibrage de charge

Déployer un équilibreur de charge sans observabilité, c’est opérer à l’aveugle. Voici les métriques qui comptent :

  • Connexions actives par backend : Révèle un déséquilibre dans l’algorithme de distribution ou une concentration de sessions persistantes.
  • Taux de requêtes (RPS) par backend : Doit être proportionnel aux poids des serveurs.
  • Temps de réponse backend (p50, p95, p99) : Les pics de latence p99 sur un nœud indiquent un problème avant que les vérifications de santé ne se déclenchent.
  • Taux d’échec des vérifications de santé : Un backend qui oscille entre sain et non sain (oscillation) indique une instabilité sous-jacente qui nécessite une investigation.
  • Profondeur de la file d’attente de connexions : Si la file d’attente de l’équilibreur augmente, votre pool de backends est sous-dimensionné pour le trafic actuel.
  • Taux de poignées de main SSL : Des taux élevés indiquent une potentielle attaque d’épuisement TLS ou un client mal configuré qui réessaie de manière agressive.

HAProxy expose une page de statistiques (activez avec stats enable dans le frontend) et un socket Unix pour les requêtes programmatiques. Alimentez ces métriques dans Prometheus via haproxy_exporter et visualisez dans Grafana pour une pile d’observabilité complète.

Liste de contrôle décisionnelle pratique

Utilisez cette matrice avant de déployer ou de modifier une architecture à équilibrage de charge :

  • Application avec état ? Migrez le stockage de session vers Redis ou Memcached avant d’activer l’équilibrage de charge. Ne vous fiez pas aux sessions persistantes comme solution permanente.
  • TLS requis ? Terminez SSL au niveau de l’équilibreur de charge. Assurez-vous que le réseau backend est isolé. Obtenez et gérez les certificats de manière centralisée via les Certificats SSL.
  • Durée de requête variable ? Utilisez leastconn, pas le round robin.
  • Matériel hétérogène ? Appliquez des valeurs weight proportionnelles à la capacité du serveur.
  • HA de l’équilibreur de charge ? Déployez deux nœuds d’équilibreur avec Keepalived/VRRP. Ne faites jamais fonctionner un seul équilibreur de charge en production.
  • Exposition aux DDoS ? Implémentez la limitation du débit de connexion et la protection par cookies SYN au niveau du noyau et de l’équilibreur.
  • Profondeur des vérifications de santé ? Utilisez des vérifications HTTP contre un endpoint /health dédié qui valide la connectivité à la base de données, pas seulement la disponibilité du port TCP.
  • Plan de mise à l’échelle ? L’ajout d’un nouveau nœud backend à un pool HAProxy ou NGINX nécessite un rechargement de configuration (haproxy -sf $(cat /var/run/haproxy.pid) pour un rechargement sans interruption) — planifiez votre processus de gestion des changements en conséquence.
  • Surveillance ? Instrumentez HAProxy ou NGINX avec des exportateurs Prometheus avant la mise en production, pas après un incident.
  • Préférence de panneau de contrôle ? Si vous préférez la gestion de serveur basée sur une interface graphique en parallèle de la configuration manuelle de l’équilibreur de charge, évaluez les Panneaux de Contrôle VPS pour les tâches administratives sur les nœuds individuels.

FAQ

Quelle est la différence entre un équilibreur de charge et un proxy inverse ?

Un proxy inverse transmet les requêtes des clients vers un ou plusieurs serveurs backend et retourne la réponse au client — il gère le routage, la mise en cache et la terminaison SSL. Un équilibreur de charge est un type spécifique de proxy inverse dont la fonction principale est de distribuer les requêtes sur plusieurs backends en utilisant un algorithme défini. Tous les équilibreurs de charge sont des proxies inverses, mais tous les proxies inverses n’effectuent pas d’équilibrage de charge.

L’équilibrage de charge peut-il fonctionner avec un seul serveur dédié ?

Techniquement oui — vous pouvez faire fonctionner un équilibreur de charge devant un seul serveur pour la terminaison SSL, la mise en cache et la limitation de débit. Cependant, les avantages de tolérance aux pannes et de mise à l’échelle horizontale ne se matérialisent qu’avec deux nœuds backend ou plus. Une configuration à serveur unique derrière un équilibreur de charge est une architecture de transition valide qui rend la mise à l’échelle future opérationnellement triviale.

Comment un équilibreur de charge gère-t-il les connexions WebSocket ?

Les WebSockets nécessitent des connexions TCP persistantes et de longue durée. Les équilibreurs de charge de couche 7 doivent être explicitement configurés pour gérer la poignée de main HTTP Upgrade puis maintenir l’affinité de connexion pour la durée de la session WebSocket. Dans NGINX, définissez proxy_http_version 1.1 et proxy_set_header Upgrade $http_upgrade avec proxy_set_header Connection "upgrade". Dans HAProxy, utilisez option http-server-close et configurez des valeurs de délai d’expiration appropriées (timeout tunnel 1h pour les connexions de longue durée).

Que se passe-t-il avec les requêtes en cours lorsqu’un serveur backend tombe en panne ?

Avec proxy_next_upstream dans NGINX ou retries dans HAProxy, l’équilibreur détecte une erreur de connexion ou un délai d’expiration lors de la première tentative et réessaie immédiatement la requête sur le prochain backend sain. Ce nouvel essai est transparent pour le client. Les requêtes idempotentes (GET, HEAD) sont sûres à réessayer automatiquement. Les requêtes non idempotentes (POST, PUT) doivent être réessayées avec prudence — configurez proxy_next_upstream pour exclure http_500 pour les routes POST afin d’éviter le double traitement d’un paiement ou d’une soumission de formulaire.

Combien de serveurs backend sont nécessaires avant que l’équilibrage de charge n’apporte un bénéfice significatif ?

Deux serveurs offrent une capacité de basculement immédiate et doublent approximativement votre capacité. Trois serveurs ou plus offrent une distribution statistique significative et permettent une maintenance progressive (mettre un nœud hors ligne pour les mises à jour pendant que les autres absorbent le trafic). Pour les charges de travail en production, trois nœuds est le minimum pratique pour un pool résilient — deux nœuds signifie qu’une seule défaillance réduit votre capacité de 50 %, ce qui peut violer votre SLA de performance sous charge maximale.

15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer