AllInfo

Que sont les équilibreurs de charge ? Comment distribuer efficacement le trafic entrant

Les équilibreurs de charge sont des composants d'infrastructure qui répartissent le trafic réseau entrant entre plusieurs serveurs principaux. Ils améliorent la capacité et ajoutent de la redondance en gardant les services accessibles en cas de panne de l'un de vos serveurs.

Les équilibreurs de charge agissent comme la passerelle publique vers votre application. Ils sont spécialisés dans leur rôle afin qu'ils puissent être hautement optimisés pour maximiser le débit du trafic. Les équilibreurs de charge sont généralement configurables avec plusieurs types d'algorithmes de routage pour répondre aux exigences de votre application.

Dans cet article, nous allons explorer ce que sont les équilibreurs de charge, leur fonctionnement et certains des complications qu'ils peuvent entraîner. Nous expliquerons également les différences entre les algorithmes d'équilibrage de charge les plus courants.

Ce que font les équilibreurs de charge

Les équilibreurs de charge sont chargés de fournir un proxy inverse devant les serveurs de votre application. Tous les clients se connectent à ce proxy unique au lieu des instances backend individuelles. L'équilibreur de charge est responsable de la sélection d'un serveur pour gérer chaque requête. Cela se produit de manière invisible pour le client externe.

Des implémentations matérielles et logicielles d'équilibrage de charge sont disponibles. Côté logiciel, la plupart des serveurs Web tels qu'Apache et NGINX sont capables de remplir ce rôle. Les équilibreurs de charge de type matériel sont déployés en tant que composants d'infrastructure autonomes de votre fournisseur d'hébergement.

Les équilibreurs de charge surveillent généralement la santé des instances dans leur pool de serveurs principaux. Les backends qui deviennent malsains ne reçoivent plus de nouveau trafic, ce qui réduit les irrégularités de service et les temps d'arrêt. De même, les équilibreurs de charge vous permettent généralement d'ajouter de nouvelles instances backend à tout moment, afin que vous puissiez faire évoluer votre service avec une capacité supplémentaire pendant les heures de pointe.

L'objectif principal d'un équilibreur de charge est de maximiser le débit et d'utiliser au mieux les ressources disponibles. Être capable d'évoluer horizontalement sur des serveurs physiques est généralement plus efficace que de développer verticalement un seul nœud avec un CPU ou de la mémoire supplémentaire. La mise à l'échelle horizontale vous donne plus de redondance ainsi que de capacité tandis que la surcharge encourue par la couche d'équilibrage de charge est généralement nominale.

Algorithmes d'équilibrage de charge

Bien que le but de l'équilibrage de charge soit toujours de répartir le trafic entre plusieurs serveurs, il existe plusieurs façons d'y parvenir. Avant d'examiner des stratégies spécifiques, il est important d'identifier les deux types d'algorithmes fondamentaux que vous pouvez sélectionner :

Les systèmes d'équilibrage statique sont généralement plus faciles à configurer, tester et inspecter. L'équilibrage dynamique est beaucoup plus puissant et est généralement le choix préféré pour les applications de production. Dans chacune de ces classes, vous pouvez choisir plusieurs stratégies de routage spécifiques :

Autres caractéristiques de l'équilibreur de charge

Les équilibreurs de charge peuvent créer quelques complications pour votre application. L'un des plus répandus est le défi de réaliser des sessions backend persistantes. Il est courant que les systèmes maintiennent l'état sur le serveur et doivent le conserver entre les connexions client.

Vous pouvez atténuer cela en utilisant l'algorithme d'équilibrage de hachage ou une option similaire basée sur le client. Cela garantit que les connexions à partir de la même adresse IP se terminent sur un serveur particulier. La plupart des équilibreurs de charge offrent également une option de sessions permanentes explicites qui recherche un en-tête ou un cookie désigné dans une requête HTTP. Cette valeur peut être utilisée pour diriger systématiquement les requêtes vers le même serveur après la connexion initiale du client.

Les équilibreurs de charge peuvent également créer de la complexité autour de SSL. De nombreuses organisations configurent SSL pour se terminer au niveau de l'équilibreur de charge. Les connexions entre l'équilibreur de charge et vos serveurs principaux sont établies via HTTP standard. Cela se traduit généralement par une expérience de configuration plus simple avec des exigences de maintenance réduites.

L'utilisation de connexions HTTP uniquement dans le sens direct n'est pas toujours acceptable pour les charges de travail critiques pour la sécurité. Les équilibreurs de charge capables d'effectuer un relais SSL peuvent acheminer le trafic directement vers vos serveurs principaux, sans déchiffrer les données au préalable. Cependant, cela limite la fonctionnalité de routage que vous pouvez utiliser : comme l'équilibreur de charge ne peut pas déchiffrer les requêtes entrantes, vous ne pourrez pas effectuer de correspondance basée sur des attributs tels que les en-têtes et les cookies.

Équilibreurs de charge des couches 4 et 7

L'équilibrage de charge est souvent discuté dans le contexte de la mise en réseau de la couche 4 (L4) et de la couche 7 (L7). Ces termes décrivent le point auquel l'équilibreur de charge achemine le trafic au cours du cycle de vie d'une requête réseau.

Une ressource de couche 4 fonctionne au niveau du transport réseau. Ces équilibreurs de charge prennent des décisions de routage en fonction des caractéristiques du transport de la requête, telles que le port TCP ou UDP utilisé. Les données spécifiques à la demande ne sont pas prises en compte.

Un équilibreur de charge de couche 7 est situé à côté de la couche d'application. Ces équilibreurs de charge peuvent accéder à des données complexes dans la demande et les utiliser pour informer les règles de routage spécifiques à la charge de travail. C'est là que l'équilibrage de charge qui tient compte d'un ID de session dans un en-tête HTTP ou un cookie peut avoir lieu.

L'équilibrage de charge de la couche 7 est puissant mais relativement gourmand en ressources. Il doit analyser et inspecter le contenu de chaque requête avant de pouvoir la transmettre à un backend. La nature basée sur les paquets des équilibreurs de charge de couche 4 offre moins de contrôle mais a un impact réduit en conséquence sur le débit. La couche 4 ne déchiffre pas non plus le trafic, donc une compromission de l'équilibreur de charge à ce stade n'exposera pas les données de la demande.

Conclusion

Les équilibreurs de charge laissent vous acheminez le trafic entrant entre vos serveurs. Il s'agit d'un composant essentiel des architectures réseau hautement disponibles qui vous permettent d'exécuter plusieurs instances backend de manière transparente. Cela augmente la capacité du service et évite une panne totale si un serveur se déconnecte.

La plupart des implémentations d'équilibreur de charge vous donnent le choix entre plusieurs algorithmes différents, y compris des options statiques et dynamiques. De nombreuses applications sont bien servies par des choix simples tels que "moins de connexions" ou “round robin” mais des options plus complexes sont utiles dans des situations spécifiques.

Il est recommandé d'exécuter chaque application de production derrière un équilibreur de charge. Il vous offre la possibilité d'évoluer à la demande et de réagir aux serveurs défaillants. L'équilibrage de charge est généralement facile à configurer au sein de votre pile d'hébergement ou de l'infrastructure réseau de votre fournisseur de cloud.

LIRE LA SUITE

Exit mobile version