L’équilibrage de charge des serveurs Web, ou répartition de charge des serveurs Web, regroupe l’ensemble des mécanismes utilisés pour distribuer les requêtes HTTP sur de multiples serveurs Web.
Cette pratique est devenue indispensable depuis l’explosion du trafic du World Wide Web. L’évolution des usages de l’Internet, passant d’une infrastructure de communication à une infrastructure de services électroniques, peut entrainer des congestions et des temps de réponses élevés. Les systèmes Web, éléments stratégiques du World Wide Web, doivent pouvoir absorber cette charge. Cela a entrainé une évolution des architectures, destinée à apporter plus de scalabilité, de disponibilité et de performances.
Basées sur les propriétés du protocole HTTP, en particulier sur le système de requêtes/réponses, différentes approches sont étudiées pour répondre à l’équilibrage de charge des serveurs Web. Les approches architecturales s’intéressent à l’agencement des serveurs informatiques entre eux, ainsi qu’à la pertinence d’utiliser un élément central. Les approches du routage s’intéressent aux différentes manières de transférer les paquets des clients Web vers les serveurs, et ce selon deux axes. D’une part à travers les différentes couches réseaux du modèle OSI, et d’autre part à travers les différents équipements traversés par une requête HTTP. Les travaux sur les algorithmes tendent à définir un algorithme optimal de sélection du serveur le plus apte à traiter la requête HTTP dans un système Web. Cette recherche d’algorithme s’effectue dans plusieurs directions : prise en compte ou pas du contenu de la requête, prise en compte ou pas des informations des clients et/ou des serveurs, algorithme statique ou dynamique.
Contexte
Évolution des usages
L'Internet subit de profonds changements en passant d'une infrastructure de communication à un média de gestion d'une multitude de services. Avec la croissance rapide du stockage de l'information dans les serveurs Web du monde entier, rechercher et obtenir une donnée est devenu un comportement commun. L'explosion du trafic sur le World Wide Web a entrainé une rapide augmentation du nombre de requêtes sur les sites Web populaires. La plupart des services fournis par ces sites peuvent ainsi recevoir un nombre très important de connexions des clients dans une période très courte. De plus, le trafic Internet en général et du World Wide Web en particulier a augmenté de manière exponentielle, et cette croissance est amenée à continuer.
Ce trafic grandissant peut entrainer des congestions importantes du réseau informatique et des temps de réponses élevés. Ces perturbations peuvent avoir pour conséquence une instabilité du site et du service pour les utilisateurs. Pour un site Web populaire, la congestion réseau et la surcharge des serveurs peuvent amener à des problèmes sérieux dans l'avenir.
Ces changements profonds de l'Internet placent le serveur Web au centre d'une infrastructure de services électroniques et d'applications critiques, augmentant les exigences en termes de qualité de service, de disponibilité et de fiabilité dans un environnement imprévisible, rapide et très dynamique. Les systèmes Web doivent être capables de démarrer petit et de grossir avec l'augmentation de la demande, créant un besoin de serveurs Web plus nombreux et plus puissants capables de servir les utilisateurs Internet. L'augmentation croissante de la demande pour des serveurs Web de qualité est aujourd'hui incontestable.
Évolution des architectures
L'amélioration de la performance des serveurs Web et la garantie de la fiabilité et de la disponibilité d'un site Web sont des notions importantes. C'est pourquoi il arrive un moment ou soit le serveur Web doit être renforcé, soit la charge doit être répartie entre plusieurs serveurs. Mais les sites Web populaires ne peuvent pas faire confiance à un seul serveur puissant pour faire face à la charge de requêtes toujours en augmentation. La scalabilité et la disponibilité peuvent être fournis par une architecture Web qui régule les requêtes clientes à travers différents serveurs de manière transparente. Dès lors comment fabriquer une grappe de serveurs Web qui traite et répond facilement aux requêtes devient un problème majeur.
Par le passé la seule solution pour élargir la capacité serveur était de remplacer l'ancien serveur par un nouveau. Perdre l'investissement dans l'ancien serveur pour en racheter un autre est une solution à court-terme et couteuse. Une solution à long terme passe par une scalabilité incrémentale qui fournit la possibilité de croitre graduellement avec la demande. Pour construire des serveurs Web évolutifs, les constructeurs et les sites Web populaires se sont massivement tournés vers les architectures distribuées. Les grappes de serveurs Web sont ainsi devenues l'une des principales solutions pour accroitre la disponibilité et éviter la surcharge d'un serveur seul.
Mais, alors que le World Wide Web peut apparaître comme possédant une scalabilité intrinsèque à travers la distribution des ressources sur des serveurs décentralisés, il existe des exemples où cette forme de distribution de charge est couteuse. D'où l'importance d'un bon équilibrage de charge, qui peut être défini comme le processus de distribution des requêtes sur différents serveurs pour fournir un meilleur temps de réponse.
Précédent de la NCSA
vignette|alt=Logo de la NCSA|Logo de la NCSA
Le serveur Web de la NCSA subit un pic de charge, entre octobre et , qui surpassa sa capacité à répondre. La première solution fut d'utiliser un serveur informatique plus puissant qui ne tint pas la charge en . La NCSA a alors déterminée que la seule solution viable à long terme passait par une distribution de charge multi-serveurs.
La NCSA possédait deux solutions au problème de charge de son serveur Web : diviser l'arborescence à travers différents systèmes, chacun répondant à un nom d'hôte unique et traitant une partie de l'arbre. Cette solution requérait beaucoup de manipulations et entrainerait la cassure de liens existants, entrainant une grande complexité et un impact sur la communauté utilisateur. La deuxième solution était de partager l'ensemble des documents à travers plusieurs serveurs, chacun répondant à un nom d'hôte commun. Cette solution permettait de gérer la sollicitation croissante des serveurs tout en ayant peu d'impact sur la communauté utilisateurs.
L'architecture informatique mise en place permit à la NCSA d'augmenter dynamiquement la capacité des serveurs Web. L'équilibrage de charge élimina la plupart des points individuels de défaillance lié à l'implémentation d'un serveur unique. La stabilité et la fiabilité du système est ensuite assurée par l'ajout de nouvelles machines de manière transparente pour les utilisateurs. Cet équilibrage de charge des serveurs Web allait pouvoir être utilisé comme modèle pour d'autres implémentations.
Spécificités du serveur Web
Le but d'un serveur Web est de stocker une information et de répondre aux requêtes clientes. Pour récupérer une information du Web, le nom contenu dans l'URL doit être associé à une adresse IP, une adresse MAC et une localisation de l'objet. Chaque association offre ainsi une opportunité de rediriger la requête vers la machine la plus appropriée. Cette nécessité de diriger les connexions entrantes vers des hôtes individuels représente justement un important défi.
Par ailleurs, le protocole de communication entre les clients et les serveurs Web est fourni par le protocole HTTP, qui est un protocole basé sur un système de requêtes/réponses et est utilisé pour le World Wide Web depuis les années 1990RFC 2616, sur le site de l'IETF. Ce protocole étant sans état, une connexion TCP doit donc être établie pour chaque objet d'une page Web. Chaque requête peut être routée de manière indépendante, permettant ainsi un équilibrage de charge des serveurs Web.
Architecture
Les services Web peuvent croitre par scalabilité verticale, en remplaçant des serveurs informatiques surchargés par de plus gros serveurs, ou ils peuvent croitre par scalabilité horizontale en ajoutant des serveurs supplémentaires en fonction de la charge à absorber. Mais l'utilisation des serveurs isolés est très risquée pour fournir des services fiables et flexibles. De plus avec un unique serveur Web, un pic de requêtes important va facilement générer de la congestion et des erreurs logiciels. Il y a donc un besoin d'avoir plus de serveurs performants pour servir la demande croissante des utilisateurs.
De ce constat a été proposée une architecture basée sur plusieurs serveurs Web, appelée grappe de serveurs Web. Cet ensemble de serveurs attachés ensemble pour agir comme une seule unité permet aux fournisseurs d'ajouter progressivement de nouvelles ressources peu chères afin de partager la charge de travail et ainsi d'augmenter la performance générale du système de manière transparente pour le client. N'importe quel serveur d'application peut être mis en grappe s'il respecte ces deux propriétés : l'application ne doit pas maintenir d'état avec le serveur. Toute information d'état doit être maintenue par le client, afin d'éviter les problèmes de cohérence avec les états distribués les transactions client/serveur doivent être relativement brèves et fréquentes, afin de pouvoir établir facilement des statistiques de distribution des paquets qui serviront à la répartition de charge Ce type d'architecture représente une approche populaire utilisée pour fournir des services Web fiables, flexibles, efficaces et disponibles. Les avantages des solutions distribuées en grappes sont la haute puissance de calcul ainsi que la tolérance aux pannes. Les inconvénients sont les difficultés à ordonnancer et équilibrer chaque entité distribuées.
Un système de serveurs Web distribués comprend plusieurs serveurs Web ainsi qu'un mécanisme de répartition des requêtes sur les serveurs, ces derniers pouvant être répartis de manière locale ou géographique. L'équilibrage de charge des serveurs informatiques dans une grappe est le processus de distribution des requêtes sur différents serveurs. Cette répartition des requêtes est indispensable pour obtenir un temps de réponse réduit ainsi qu'une optimisation de l'utilisation des ressources informatiques. Dans une répartition locale des serveurs, le processus de distribution des requêtes est facilitée par la proximité en termes de réseau informatique. Alors que dans une répartition géographique ou globale des serveurs, le processus de distribution est plus complexe à cause des contraintes liées à la connectivité Internet entre les serveurs.
Les différentes architectures informatiques permettant l'équilibrage de charge des serveurs Web peuvent se distinguer par le niveau d'abstraction et la gestion de leur adresse IP : les grappes de serveurs Web, où une seule adresse IP est visible par le client et portée par un élément central les grappes de serveurs Web virtuelle, où une seule adresse IP est visible par le client mais sans élément central les systèmes distribués et serveurs miroirs, où toutes les adresses IP des serveurs Web sont visibles par les clients
Grappe de serveurs Web
Une grappe de serveurs Web désigne un ensemble de serveurs informatiques hébergés localement et qui sont interconnectés à travers un réseau haut-débit. De plus, cet ensemble de serveurs doit apparaitre comme un hôte unique pour le monde extérieur et les utilisateurs. Une seule machine, dont l'adresse est publiée à travers le DNS, a la responsabilité de la répartition de charge à travers la grappe de serveurs. Dans une grappe de serveurs, tous les serveurs contiennent la même donnée. Chaque serveur a donc la possibilité de prendre en charge la requête d'un client.