
Comment gérer l'équilibrage de la charge du serveur pour une grande page web ?
Les sites web à fort trafic d'aujourd'hui doivent gérer des centaines de milliers, voire des millions, de requêtes simultanées provenant des utilisateurs ou des clients et retourner les éléments corrects sur la page web. Ils doivent faire tout cela rapidement et de manière fiable. Pour les serveurs gérant un site donné, c'est un test pour savoir s'ils gèreront correctement le trafic à un moment donné afin que l'utilisateur final ait un accès ininterrompu et confortable au service.
Qu'est-ce que l'équilibrage de charge des serveurs, et pourquoi est-il important pour les sites web complexes?
Au sein d'une infrastructure informatique, le répartiteur de charge est un cran en avance sur les serveurs afin de pouvoir distribuer automatiquement les requêtes des utilisateurs entre tous les serveurs prêts à traiter ces requêtes de manière à maximiser la vitesse et l'utilisation des ressources, et à garantir qu'aucun serveur n'est indisponible ou en mauvaise santé (ce qui pourrait réduire les performances). Si un serveur tombe en panne, le répartiteur de charge redirige le trafic vers les autres serveurs. Dès qu'un nouveau serveur est ajouté, le répartiteur de charge commence à lui envoyer des requêtes. Le processus d'ajout ou de suppression de serveurs est automatisé et effectué de manière intelligente, garantissant flexibilité et économies.
Source: NGINX
Le répartiteur de charge aide les serveurs à optimiser l'utilisation des ressources et empêche les surcharges de serveurs. Ceci est très important pour les sites web complexes, car tous les éléments de la page web, c'est-à-dire le texte, les graphiques, les animations, les vidéos ou les données d'application, doivent être transférés le plus rapidement possible, et cela sera réalisable grâce à des ressources fournies de manière optimale.
Qu'est-ce qu'un grand site web du point de vue DevOps?
Les technologies Internet évoluent rapidement au fil des années. Les attentes des utilisateurs d'Internet changent de la même manière, et donc l'attitude des entreprises – vers la meilleure publicité possible de leurs produits et services. Un site web statique est depuis longtemps devenu une chose du passé, remplacé par des pages web dynamiques pleines de contenu régulièrement changeant qui augmentent la charge du serveur avec des requêtes d'une manière moins prévisible que les fichiers statiques réguliers. Des exemples incluent, par ex. les sites d'actualités, les blogs, les applications web et les magasins en ligne. De telles pages web ont souvent de nombreuses dépendances, sont connectées à différentes API, contiennent des intégrations internes et externes, et se réfèrent également à d'autres systèmes. La complexité affecte les performances et le temps de réponse d'un site web aux requêtes des utilisateurs. De plus, si un site web devient populaire, il se caractérise par un trafic élevé augmentant la charge des facteurs susmentionnés.
Équilibrage de charge de serveur d'une page complexe
Du point de vue de l'infrastructure, les sites web complexes ont des exigences d'hébergement plus élevées, car ils doivent gérer un trafic important, répondre aux pics de trafic irréguliers, mais aussi fournir une solution de secours en cas d'incident. Il y a aussi la question de l'architecture de la solution entière. En supposant que les éléments de développement, c'est-à-dire l'optimisation correcte du site web, l'exécution de scripts, de plugins ou la compression de fichiers, sont correctement configurés, il reste encore certains éléments DevOps qui devraient aller de pair. Les sites web complexes peuvent contenir plus de « vases communicants » que leurs homologues plus simples standard. Un site web étendu peut, par exemple, utiliser plusieurs types de bases de données différents en même temps, télécharger une énorme quantité de données de l'API en une seule seconde, et gérer de nombreux réseaux dépendants.
Répartiteur de charge
Les répartiteurs de charge garantissent que les requêtes d'accès entrantes sont allouées à un serveur capable de les traiter de manière optimale. De plus, ils permettent une mise à l'échelle rentable des solutions et assurent la haute disponibilité des services.
Le marché offre de nombreuses possibilités pour mettre en œuvre des systèmes d'équilibrage de charge, allant des solutions gratuites (ex. HAProxy, Nginx) et commerciales (Cisco, F5), en passant par les solutions logicielles, jusqu'aux options cloud.
- Lorsque nous choisissons un répartiteur de charge matériel, nous devons supposer que le fabricant fournit la fiabilité dans le cadre de l'ensemble du package. D'un côté, il y a une limitation à ce que le fabricant offre, de l'autre, nous bénéficions d'un support complet en cas de problèmes de performances.
- Le répartiteur de charge logiciel ne permet pas la gestion matérielle. Ses fonctionnalités se concentrent sur les capacités logicielles (par exemple, la quantité de vCPU, de RAM et le nombre de connexions).
- Le répartiteur de charge cloud est une combinaison des options précédentes. Ici, le fournisseur de cloud nous propose un répartiteur de charge matériel, géré par eux, ou logiciel – géré par nous.
Les grands fournisseurs de cloud public offrent le service d'équilibrage de charge sous leurs propres noms. Amazon fournit AWS Elastic Load Balancer, Microsoft – Azure Load Balancer, et Google Cloud Platform – Cloud Load Balancing.
Comment gérer l'équilibrage de charge des serveurs?
Au fil des ans, l'approche de l'hébergement de sites web a beaucoup changé. Même dans un monde de possibilités illimitées de serveurs, un seul serveur est rarement utilisé à cette fin. Un répartiteur de charge est devenu l'un des éléments clés de la conception de toute l'infrastructure. La bonne mise en œuvre d'un répartiteur de charge garantira l'optimisation des ressources, réduira la charge de travail et augmentera la productivité.
Choisir le type de répartiteur de charge
Un répartiteur de charge est le premier élément de l'infrastructure auquel le client se connecte et le seul qui lui soit visible, qu'il s'agisse d'une version matérielle ou logicielle du système. Le répartiteur de charge matériel utilisera un serveur physique, ce qui nécessite d'investir de l'argent dans cette solution. Le répartiteur de charge logiciel peut être installé sur une machine virtuelle et peut jouer le rôle de contrôleur de livraison d'applications. Le répartiteur de charge cloud, quant à lui, est le choix le plus flexible.
Sélection de l'algorithme
La séparation du trafic traversant le répartiteur de charge dépend du type d'algorithme utilisé. Les quatre algorithmes les plus connus sont Round Robin, Weighted Round Robin, Least Connections, et Weighted Least Connections.
- Round Robin est le mécanisme le plus simple qui crée une file d'attente pour les requêtes entrantes, et les requêtes sont allouées de manière séquentielle, en fonction de la disponibilité des machines, sans priorité spécifique.
- Weighted Round Robin est basé sur un système de pondération, donc le trafic sera dirigé vers le serveur avec le poids le plus élevé attribué.
- L'algorithme Least Connections dirige la requête vers le serveur avec le moins de connexions actives.
- Weighted Least Connections est basé sur le nombre de requêtes pour chaque machine et le poids attribué.
Utiliser un répartiteur de charge pour gérer HTTPS
Selon la configuration, le répartiteur de charge peut assumer la responsabilité de la prise en charge de HTTPS. Le certificat de domaine n'est alors pas sur le serveur d'application, mais sur le répartiteur de charge, qui achemine les requêtes vers les serveurs d'application via HTTP tout en réduisant la charge sur les serveurs d'application de back-end.
Effectuer des contrôles de santé
Une fonction tout aussi importante disponible dans le répartiteur de charge est les contrôles de santé des serveurs. Il est inutile d'envoyer des requêtes à des hôtes qui sont inaccessibles ou peu fiables en termes d'efficacité. Les répartiteurs de charge effectuent régulièrement des contrôles de santé des serveurs afin de s'assurer qu'ils peuvent traiter les requêtes. Si la réponse du serveur dépasse le seuil défini pour les réponses correctes plusieurs fois, il est supposé que le serveur est dans un état défectueux. Il est alors mis hors service, et les demandes entrantes ne sont pas redirigées vers lui.
Équilibrage de charge des serveurs - résumé
Ces dernières années, l'équilibrage de charge est devenu l'élément clé de la planification de l'infrastructure. Bien sûr, le rôle de la distribution du trafic reste le plus important, mais le répartiteur de charge offre également d'autres possibilités, y compris la haute disponibilité de plus en plus populaire. La configuration correcte permet la fourniture adéquate de fonctions sur les sites web et crée une image positive de l'entreprise, et assure le confort d'utilisation pour les utilisateurs finaux.
Vous vous demandez quel répartiteur de charge choisir et comment le configurer correctement? Nos spécialistes DevOps s'occupent de l'infrastructure de manière exhaustive, de sorte qu'après avoir analysé vos besoins, ils vous conseillent et préparent la meilleure solution.