Un répartiteur de charge est un dispositif ou un service qui distribue le trafic réseau entrant sur plusieurs serveurs ou autres cibles afin qu'aucun d'eux ne supporte l'intégralité de la charge. Il surveille la santé de ces cibles et dirige le trafic uniquement vers celles qui sont en bonne santé. Comme il se trouve entre les clients et les serveurs, les journaux backend enregistrent l'IP du répartiteur de charge, sauf s'il transmet l'IP du client dans un en-tête tel que X-Forwarded-For.

Répartir les demandes de cette manière augmente la disponibilité et la tolérance aux pannes d'une application. NGINX décrit l'équilibrage de charge comme une technique d'optimisation de l'utilisation des ressources, de maximisation du débit, de réduction de la latence et d'assurance de configurations tolérantes aux pannes.

Méthodes courantes d'équilibrage de charge

  • Round robin : Les demandes vont à chaque serveur à tour de rôle.
  • Moins de connexions : La prochaine demande va au serveur avec le moins de connexions actives.
  • IP hash : Un hachage de l'adresse IP du client choisit le serveur, de sorte que le même client continue d'atteindre le même serveur à moins que ce serveur ne soit pas disponible. C'est un moyen d'obtenir une persistance de session.
  • Vérifications de santé : Lorsqu'un serveur échoue, le répartiteur de charge le marque et évite de lui envoyer de nouvelles demandes pendant un certain temps.

Répartiteurs de charge de couche 4 vs. couche 7

Un répartiteur de charge de couche 4 fonctionne au niveau de transport du modèle OSI et dirige les connexions sans lire la demande HTTP. Un répartiteur de charge de couche 7 fonctionne au niveau application, il peut donc diriger en fonction des détails de la demande tels que le chemin URL, l'en-tête d'hôte ou la méthode HTTP. Un répartiteur de charge de couche 7 peut également ajouter l'IP du client à l'en-tête X-Forwarded-For avant de transmettre la demande.

Terminaison SSL/TLS

Un répartiteur de charge peut terminer SSL/TLS pour le backend. Il déchiffre les demandes des clients et chiffre les réponses, un travail que les serveurs backend feraient autrement. Comme la poignée de main TLS est gourmande en CPU, cela soulage la charge computationnelle de ces serveurs.

Termes associés