Load balancer : pour un meilleur temps d’accès au serveur

Les internautes utilisent le Web aussi bien pour faire des recherches que pour effectuer des achats en ligne. Ces opérations entraînent une charge croissante pour les serveurs Web, qui sont responsables du bon fonctionnement des boutiques en ligne, des portails d’information ainsi que des sites d’entreprises. Parallèlement au trafic sur le Web, les utilisateurs deviennent de plus en plus exigeants. Les transactions réalisées sur le Web doivent être rapides et sécurisées, surtout dans le domaine des services. En effet, c’est grâce au bon fonctionnement d’un site Internet qu’un internaute passe à l’acte d’achat.

Les serveurs surchargés peuvent freiner voire paralyser certaines activités d’entreprises et leur porter préjudice. L’acquisition de techniques plus efficaces peut contrecarrer ce défaut chez les serveurs, mais cette solution se révèle coûteuse. Il existe une autre alternative, qui consiste à répartir les charges de travail sur plusieurs serveurs Web. Celle-ci permet de contourner les pics de trafic mais aussi de sécuriser les sites Internet contre les pannes. Ce processus s’appelle le load balancing (ou en français, répartition de charge). Ainsi, les accès au serveur sont répartis via une instance technique situé en amont, soit le load balancer (en français, équilibreur de charge), qui permet de répartir uniformément la charge du serveur sur divers équipements afin de garantir une vitesse d’accès stable.

Qu’est-ce que le load balancing ?

Normalement, chaque domaine est associé à un serveur Web. Si un internaute charge une page Web en entrant une URL dans le champ de recherche du navigateur, les données du serveur correspondant sont récupérées. Si celui-ci est surchargé, l’utilisateur reçoit alors un message d’erreur ou Code de statut http, et la page Internet ne peut s’afficher. C’est ici qu’intervient le load balancing et qu’il peut vous être utile. Grâce à un load balancer en amont, il est possible d’affecter un domaine à plusieurs serveurs sans créer de conflit avec les adresses. Par la suite, le load balancer est accessible dans le domaine public.

Les serveurs secondaires sont renommés en sous-domaines www1, www2, www3. Le load balancing permet de rendre une page Internet disponible sous la même URL même si celle-ci est présente sur plusieurs serveurs. Ceci allège la charge d’un serveur puisque la demande venant de l’extérieur est distribuée sur plusieurs hôtes physiques au sein d’un parc informatique. En règle générale, les internautes ne s’aperçoivent pas de ce processus car la distribution des flux de demandes se réalise sur la base d’algorithmes complexes en arrière-plan.

L’équilibrage de charge peut également jouer un rôle en dehors des serveurs : même pour les ordinateurs à processeurs multiples. Dans ce cas, l’équilibreur de charge assure une répartition uniforme des besoins entre les différents processeurs afin de générer plus de puissance de calcul.

Définition

La répartition de charge est particulièrement populaire dans la technologie des serveurs et désigne une procédure dans laquelle les requêtes sont distribuées à différents serveurs en arrière-plan, sans que les utilisateurs ne s’en aperçoivent. L’équilibreur de charge utilisé à cette fin peut être implémenté sous forme de matériel ou de logiciel.

Comment fonctionne le load balancing?

Les requêtes à un serveur Web, par exemple sous la forme de chargement d’une page, s’exécutent d’abord sur le load balancer. Celui-ci prend alors en charge la répartition de la charge en transférant les accès aux différents serveurs. L’équilibreur de charge lui-même peut être mis en œuvre sous forme de matériel ou de logiciel, mais le principe reste le même : une requête atteint l’équilibreur de charge et, selon la méthode utilisée, l’appareil ou le logiciel transmet les données au serveur approprié.

La base technique pour cela est la procédure DNS : l’utilisateur n’accède à un site Web qu’à partir d’une URL. Ceci est fait en utilisant un DNS (Domain Name System) dans une adresse IP, qui à son tour se réfère à l’équilibreur de charge. Idéalement, l’utilisateur ne remarquera pas que la demande est ensuite transmise à un serveur.

Méthodes populaires pour la répartition de charge

La façon dont les demandes entrantes sont réparties dépend du choix de l’algorithme standard. Les algorithmes standards populaires pour l’équilibrage de charge sont : Round Robin, Weighted Round Robin, Least Connections et Weighted Least Connections.

Round Robin

Round Robin est une procédure aller-retour dans laquelle les demandes de serveurs entrants sont gérées par l’équilibreur de charge dans une file d’attente et distribuées aux serveurs connectés en série. Chaque nouvelle requête est assignée au serveur suivant de la série. De cette façon, les accès peuvent être répartis uniformément sur le cluster de répartition de charge. La méthode round-robin traite tous les processus de la même manière, indépendamment de l’urgence de la requête ou de la charge du serveur qu’elle provoque. Un répartiteur de charge fonctionnant selon le principe round-robin est donc particulièrement adapté aux environnements dans lesquels environ les mêmes ressources sont disponibles pour tous les serveurs du cluster. Si tel est le cas, Round Robin agit comme une méthode de distribution simple et efficace. Cependant, s’il y a une grande lacune de capacité dans le système serveur, un algorithme round-robin peut faire en sorte qu’un serveur moins puissant soit assigné au processus suivant avant même qu’il n’ait terminé le premier. Le résultat serait une surcharge du serveur correspondant.

Weighted Round Robin

Les faiblesses de l’algorithme classique du round-robin dans les clusters de serveurs hétérogènes peuvent être compensées par une distribution round-robin pondérée. Les demandes entrantes sont distribuées en tenant compte de la pondération statique des serveurs individuels. Cette pondération est définie à l’avance par l’administrateur. Par exemple, le serveur le plus puissant peut se voir attribuer la valeur 100, alors que les serveurs moins efficaces peuvent se voir attribuer la valeur 50 Dans une telle structure, l’équilibreur de charge affecterait deux requêtes au serveur pondéré à 100 dans une ronde, alors que le serveur pondéré à 50 ne recevrait qu’une seule requête. Le Round Robin pondéré doit être utilisé principalement pour l’équilibrage de charge si les serveurs connectés dans le cluster disposent de ressources différentes.

Least Connections

Les deux algorithmes round-robin ne tiennent pas compte du nombre de connexions que les serveurs subordonnés doivent maintenir pendant une certaine période de temps lorsque le load balancer distribue les demandes de serveur en série. Cela signifie que plusieurs connexions peuvent s’accumuler sur un serveur du cluster. Ceci provoque une surcharge du serveur, même s’il a moins de connexions que les autres. L’algorithme Least-Connections protège contre cela. Celui-ci répartit les demandes en fonction des connexions existantes du serveur respectif : celui qui a le plus petit nombre de connexions actives reçoit la demande suivante de l’équilibreur de charge. Cette méthode d’équilibrage de charge est recommandée pour les clusters de serveurs homogènes où des ressources comparables sont disponibles pour tous les ordinateurs. Le fait de ne pas le faire peut entraîner des retards dans la réponse aux demandes.

Weighted Least Connections

Si un cluster de serveurs a des capacités différentes, l’équilibrage de charge basé sur la distribution pondérée par les connexions existantes doit être utilisé à la place de l’algorithme de connexion le plus faible. Ceci tient compte à la fois du nombre de connexions actives d’un serveur et de la pondération définie par l’administrateur. Ceci assure une répartition équilibrée de la charge au sein du cluster de serveurs. Les nouvelles requêtes sont automatiquement assignées par l’équilibreur de charge aux serveurs dont le rapport des connexions actives à la pondération du serveur respectif suggère la charge actuelle la plus faible.

Qu’est-ce que le load balancing ?

Normalement, chaque domaine est associé à un serveur Web. Si un internaute charge une page Web en entrant un URL dans le champs de recherche du navigateur, les données du serveur correspondant sont récupérées. Si celui-ci est surchargé, l’utilisateur reçoit alors un message d’erreur et la page Internet ne peut s’afficher. C’est ici qu’intervient le load balancing et qu’il peut vous être utile. Grâce à un load balancer en amont, il est possible d'affecter un domaine à plusieurs serveurs sans créer de conflit avec les adresses. Par la suite, le load balancer est accessible dans le domaine public.  Les serveurs secondaires sont renommés en sous-domaines www1, www2, www3. Le load balancing permet de rendre une page Internet disponible sous le même URL même si celle-ci est présente sur plusieurs serveurs. Cela allège la charge d’un serveur puisque la demande venant de l’extérieur est distribuée sur plusieurs hôtes physiques au sein d’un parc informatique. En règle générale, les internautes ne s’aperçoivent pas de ce processus car la distribution des flux de demandes se réalise sur la base d’algorithmes complexes. En ce qui concerne la manière de distribuer ces flux entrants, le choix de l’algorithme est crucial. Les plus connus pour le load balancing sont les suivants : Round Robin, Weighted Round Robin (Round Robin pondéré), Least Connections (moins de connexion) et Weighted Least Connections (moins de connexion, pondéré).

Les avantages d’une répartition de charge équilibrée

En répartissant le trafic sur plusieurs serveurs, il est possible de réduire les temps d’accès, et ceci également pour de nombreuses requêtes en même temps. De plus, un répartiteur de charge offre une meilleure protection contre les pannes, puisque le trafic provenant d’un serveur trop lent est automatiquement transféré vers d’autres serveurs du cluster. Si un serveur est en panne, le site hébergé sera toujours disponible. De plus, l’équilibrage de charge simplifie la maintenance du système serveur.

Les configurations et les mises à jour peuvent être effectuées pendant que les serveurs fonctionnent sans perte de performance perceptible. L’équilibreur de charge détecte l’état de la maintenance et redirige les demandes en conséquence. Cela fait de l’équilibrage de charge une solution d’hébergement très flexible.

Problèmes pratiques lors de l’utilisation du load balancing

Le secteur du commerce électronique en particulier a souvent des problèmes de répartition de charge. Un exemple : le visiteur du site Web remplit son panier d’articles qu’il souhaite acheter. Ces articles restent stockés pendant toute la durée d’une session, quelle que soit la page à laquelle l’utilisateur accède sur le marché en ligne. Cependant, un équilibreur de charge normal distribuerait les requêtes à différents serveurs. Cela signifierait que le contenu du panier serait perdu pour l’utilisateur.

Il existe deux approches possibles pour résoudre ce problème. D’une part, le load balancer peut réagir à l’adresse IP de l’utilisateur. Ensuite, par exemple, la liste de distribution pousse toujours les requêtes de la même adresse IP vers le même serveur. Une autre méthode serait de lire un identifiant de session à partir de la requête elle-même pour déterminer à quel serveur la requête doit être envoyée.

Pourquoi les load balancer sont-ils si importants ?

Si vous gagnez de l’argent sur Internet, votre entreprise ne peut pas se permettre une panne de serveur. Et si vous n’utilisez qu’un seul serveur et qu’il tombe en panne en raison d’une surcharge, votre site Web n’est plus accessible aux clients potentiels. Cela entraîne plusieurs problèmes : Premièrement, vous ne pouvez pas générer de revenus pendant la surcharge. Les services ne peuvent pas être réservés et les achats ne peuvent pas être effectués. D’autre part, la confiance des clients potentiels en votre entreprise diminue. Un site Web non fonctionnel correspond à une boutique délabrée. Il ne donne pas une impression fiable. C’est deux fois plus mauvais pour les utilisateurs qui subissent une surcharge du serveur pendant le processus de commande. Souvent, il subsiste une grande incertitude et les personnes concernées ne savent pas si la commande est réellement arrivée dans le système et si elle a été notée.

Mais même si vous n’offrez pas un service directement via Internet, votre site Web devrait toujours être accessible. Internet est devenu l’un des plus importants canaux d’accès à l’information. Si un client potentiel cherche des détails sur votre entreprise en ligne et ne peut pas accéder à un site Web à partir de vous, il est plus susceptible de cibler l’un de vos concurrents. Vous minimisez ces risques avec un répartiteur de charge.

Comment mettre en œuvre l’équilibrage de charge dans votre entreprise

Le load balancing peut être mis en œuvre à l’aide de solutions matérielles et logicielles sur un serveur virtuel. Des packages tout-en-un professionnels sont disponibles auprès de nombreux fournisseurs, soit sous forme d’Infrastructure-as-a-Service (IaaS) hébergée, soit sous forme de composant réseau pour leur propre infrastructure informatique. Comme l’acquisition d’équilibreurs de charge propriétaires implique généralement des coûts élevés, les petites entreprises ont souvent recours à des solutions open source telles que le serveur virtuel Linux. Il s’agit d’un moyen rentable d’assurer la haute disponibilité de votre site Web d’entreprise ou d’autres projets Web grâce à un équilibrage de charge efficace au sein du réseau de serveurs. Dans le secteur de l’hébergement Web, la répartition de charge est également souvent proposée en tant que fonctionnalité supplémentaire pour les serveurs Cloud.