L'équilibrage des charges est le processus de répartition du trafic entre plusieurs serveurs afin d'améliorer les performances et la fiabilité d'un service ou d'une application.
Cet article s'articule autour des points suivants :
Contenu associé
Algorithmes d'équilibrage de charge
Équilibrage de charge basé sur le DNS
Basculement de serveur
Équilibrage de charge multicloud et cloud hybride
Équilibrage de charge cloud (LBaaS)
Abonnez-vous à theNET, le récapitulatif mensuel de Cloudflare des idées les plus populaires concernant Internet !
Copier le lien de l'article
L'équilibrage de la charge est la pratique consistant à répartir les charges de travail informatiques entre deux ou plusieurs ordinateurs. Sur Internet, l'équilibrage de charge est souvent utilisé pour répartir le trafic réseau entre plusieurs serveurs. Cela permet de réduire la charge sur chaque serveur et de rendre les serveurs plus efficaces, ce qui accélère les performances de et réduit la latence de . L'équilibrage de charge est essentiel au bon fonctionnement de la plupart des applications Internet.
Imaginez une file d'attente à la caisse d'une épicerie comportant 8 lignes de caisse, dont une seule est ouverte. Tous les clients doivent se mettre dans la même file, et il faut donc beaucoup de temps pour qu'un client finisse de payer ses courses. Imaginons maintenant que le magasin ouvre les 8 lignes de caisse. Dans ce cas, le temps d'attente des clients est environ 8 fois plus court (en fonction de facteurs tels que la quantité de nourriture achetée par chaque client).
L'équilibrage de charge accomplit essentiellement la même chose. En répartissant les demandes des utilisateurs entre plusieurs serveurs, le temps d'attente des utilisateurs est considérablement réduit. Il en résulte une meilleure expérience pour l'utilisateur - les clients de l'épicerie dans l'exemple ci-dessus chercheraient probablement une épicerie plus efficace s'ils étaient toujours confrontés à de longs temps d'attente.
L'équilibrage de la charge est assuré par un outil ou une application appelé "équilibreur de charge". Un équilibreur de charge peut être matériel ou logiciel. Les équilibreurs de charge matériels nécessitent l'installation d'un dispositif d'équilibrage de charge dédié ; les équilibreurs de charge logiciels peuvent fonctionner sur un serveur, sur une machine virtuelle , ou dans le nuage . Les réseaux de diffusion de contenu (CDN) comprennent souvent des fonctions d'équilibrage de charge.
Lorsqu'une requête arrive d'un utilisateur, l'équilibreur de charge l'assigne à un serveur donné, et ce processus se répète pour chaque requête. Les équilibreurs de charge déterminent quel serveur doit traiter chaque demande en se basant sur un certain nombre d'algorithmes différents. Ces algorithmes se répartissent en deux grandes catégories : statiques et dynamiques.
Les algorithmes d'équilibrage de charge statique distribuent les charges de travail sans tenir compte de l'état actuel du système. Un équilibreur de charge statique ne saura pas quels serveurs fonctionnent lentement et quels serveurs ne sont pas suffisamment utilisés. Au lieu de cela, il attribue les charges de travail en fonction d'un plan prédéterminé. L'équilibrage de charge statique est rapide à mettre en place, mais il peut entraîner des inefficacités.
Pour en revenir à l'analogie ci-dessus, imaginez que l'épicerie qui dispose de 8 lignes de caisse ouvertes a un employé dont le travail consiste à diriger les clients dans les lignes. Imaginez que cet employé se contente de suivre l'ordre, assignant le premier client à la ligne 1, le second à la ligne 2, et ainsi de suite, sans regarder en arrière pour voir à quelle vitesse les lignes avancent. Si les 8 caissiers sont tous efficaces, ce système fonctionnera bien - mais si l'un d'entre eux est à la traîne, certaines files d'attente risquent d'être beaucoup plus longues que d'autres, ce qui entraînera de mauvaises expériences pour les clients. L'équilibrage statique de la charge présente le même risque : parfois, des serveurs individuels peuvent encore être surchargés.
Round robin DNS et l'équilibrage aléatoire de la charge côté client sont deux formes courantes d'équilibrage statique de la charge.
Les algorithmes d'équilibrage dynamique de la charge tiennent compte de la disponibilité, de la charge de travail et de la santé actuelles de chaque serveur. Ils peuvent déplacer le trafic des serveurs surchargés ou peu performants vers les serveurs sous-utilisés, ce qui permet de maintenir une distribution uniforme et efficace. Cependant, l'équilibrage dynamique de la charge est plus difficile à configurer. Un certain nombre de facteurs différents entrent en jeu dans la disponibilité des serveurs : la santé et la capacité globale de chaque serveur, la taille des tâches à distribuer, etc.
Supposons que l'employé de l'épicerie qui trie les clients dans les files d'attente utilise une approche plus dynamique : l'employé observe attentivement les files d'attente, voit celles qui avancent le plus vite, observe la quantité de produits achetés par chaque client et répartit les clients en conséquence. Cette approche peut garantir une expérience plus efficace pour tous les clients, mais elle met aussi plus de pression sur l'employé chargé du triage.
Il existe plusieurs types d'algorithmes d'équilibrage dynamique de la charge, notamment l'équilibrage par moindre connexion, par moindre connexion pondérée, par ressource et par géolocalisation.
Comme nous l'avons vu plus haut, l'équilibrage de charge est souvent utilisé avec les applications Web. Les équilibreurs de charge logiciels et en nuage aident à distribuer le trafic Internet de manière égale entre les serveurs qui hébergent l'application. Certains produits d'équilibrage de charge en nuage peuvent équilibrer les charges de trafic Internet entre des serveurs répartis dans le monde entier, un processus connu sous le nom de global server load balancing (GSLB).
L'équilibrage de charge est aussi couramment utilisé dans les grands réseaux localisés , comme ceux d'un centre de données ou d'un grand complexe de bureaux. Traditionnellement, cela nécessite l'utilisation d'appareils matériels tels qu'un contrôleur de livraison d'applications (ADC) ou un dispositif d'équilibrage de charge dédié. Des équilibreurs de charge logiciels sont également utilisés à cette fin.
Les équilibreurs de charge dynamiques doivent connaître l'état de santé des serveurs : leur statut actuel, leurs performances, etc. Les répartiteurs de charge dynamiques surveillent les serveurs en effectuant des contrôles réguliers de leur santé. Si un serveur ou un groupe de serveurs fonctionne lentement, l'équilibreur de charge lui distribue moins de trafic. Si un serveur ou un groupe de serveurs tombe complètement en panne, l'équilibreur de charge redirige le trafic vers un autre groupe de serveurs, un processus connu sous le nom de "failover."
Le basculement se produit lorsqu'un serveur donné ne fonctionne pas et qu'un équilibreur de charge distribue ses processus normaux sur un serveur ou un groupe de serveurs secondaires. Le basculement de serveur est crucial pour la fiabilité : s'il n'y a pas de sauvegarde en place, une panne de serveur peut entraîner l'arrêt d'un site web ou d'une application. Il est important que le basculement ait lieu rapidement pour éviter une interruption de service.
En savoir plus sur les différents aspects de l'équilibrage des charges :