mercredi, novembre 20, 2024

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 certaines des complications qu’ils peuvent entraîner. Nous expliquerons également les différences entre les algorithmes d’équilibrage de charge les plus courants.

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 cessent de recevoir du 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 :

  • Équilibrage statique – Ces méthodes fonctionnent à partir de valeurs de configuration codées en dur, ce qui les rend totalement prévisibles dans leur fonctionnement. Ce type d’algorithme ne prend pas en compte l’état des serveurs principaux vers lesquels il peut être transféré, il peut donc continuer à envoyer de nouvelles requêtes à une instance déjà encombrée.
  • Équilibrage dynamique – Les algorithmes dynamiques s’ajustent en temps réel en fonction du flux de trafic et de la disponibilité des serveurs de votre pool. Ces stratégies sont capables d’éviter automatiquement les instances qui traitent déjà plusieurs requêtes. L’équilibrage de charge dynamique peut augmenter légèrement les frais généraux, car l’équilibreur de charge doit suivre l’état d’achèvement de chaque demande.

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. Au sein de chacune de ces classes, vous pouvez choisir plusieurs stratégies de routage spécifiques :

  • Tournoi à la ronde – Round robin est une méthode d’équilibrage statique qui dirige les requêtes vers chaque serveur tour à tour. Si vous avez trois serveurs A, B et C, la première requête entrante ira à A, la seconde à B et la troisième à C. L’équilibreur de charge redémarrera à A pour la quatrième requête.
  • Round robin pondéré – Une variante de l’algorithme round robin où les administrateurs définissent les priorités relatives de chaque serveur du pool. Un serveur fortement pondéré sera utilisé plus fréquemment, recevant une part plus élevée du trafic. Cette méthode vous permet d’utiliser la stratégie round robin lorsque votre pool de serveurs comprend des serveurs aux spécifications inégales.
  • Aléatoire – De nombreux équilibreurs de charge incluent une véritable option aléatoire comme choix statique alternatif.
  • Haché – Cette stratégie d’équilibrage statique hache l’adresse IP du client pour déterminer lequel des serveurs principaux traitera la demande. Cela garantit que la même instance sert chaque connexion provenant de ce client.
  • Moins de connexions – Il s’agit d’un algorithme dynamique populaire qui dirige toujours les requêtes entrantes vers le serveur avec le moins de connexions ouvertes. Dans de nombreuses applications, c’est le moyen le plus efficace d’optimiser les performances globales.
  • Disponibilité maximale de la bande passante – Cette méthode envoie le nouveau trafic au serveur avec la bande passante la plus disponible. Ceci est idéal dans les situations où les requêtes individuelles sont susceptibles d’utiliser de grandes quantités de bande passante même si le nombre total de requêtes reste faible.
  • Point de terminaison santé/charge personnalisé – De nombreux équilibreurs de charge incluent un moyen de prendre des décisions de répartition du trafic en fonction de métriques personnalisées exposées par vos serveurs principaux. Des requêtes peuvent être effectuées sur l’utilisation du processeur, la consommation de mémoire et d’autres mesures critiques à l’aide d’un mécanisme tel que SNMP.

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 de manière cohérente 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 de couche 4 et de couche 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 demande, 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 vous permettent d’acheminer le trafic entrant entre vos serveurs. Il s’agit d’un composant essentiel des architectures de 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.

Source-135

- Advertisement -

Latest