- Répartition de charge
-
Pour les articles homonymes, voir balance.
En informatique la répartition de charge (anglais load balancing) est la technique pour distribuer le travail entre les différents ordinateurs d'un groupe à l'insu de l'utilisateur. Cette technique permet d'obtenir des dispositifs très puissants, et est utilisée dans les grands serveurs Internet en vue de réduire les temps de réponse, augmenter la scalabilité et la disponibilité du serveur[1],[2].
La répartition de charge est issue de la recherche dans le domaine des ordinateurs parallèle. La construction courante est d'utiliser une collection d'ordinateurs similaires - souvent appelé ferme de serveurs (anglais server farm ou cluster) et de répartir le travail entre les ordinateurs. Dans la construction typique de ce type d'assemblage, il y a plusieurs clients qui envoient des demandes de service (tels que la lecture d'une page web). Au lieu d'être envoyées directement à un serveur, ces demandes sont envoyées à un routeur - un appareil réseau, qui distribue les demandes à tour de rôle à chaque serveur du groupe. Des priorités peuvent être attribuées en vue de rediriger les demandes de préférence aux serveurs qui ont le moins de travail[1].
Sommaire
Les ordinateurs parallèle
Un ordinateur parallèle est composé d'un ensemble de dispositifs de calcul qui communiquent et coopérent dans le but de résoudre efficacement un grand problème. Un procédé peu couteux est de construire un ordinateur parallèle à l'aide d'une batterie d'unités de calcul, ou chaque unité comporte un processeur, une mémoire et une connexion au réseau - des composants disponibles dans le commerce. Le nombre d'unités est choisi en fonction de la grandeur du problème, et peut être modifié par la suite, ce qui assure la scalabilité de l'ensemble[3].
Un programme parallèle est composé d'une suite de processus, ou chaque processus exécute une ou plusieurs tâches. La création d'un programme parallèle implique la répartition de la charge, c'est-à-dire la décomposition de l'ensemble du calcul en petites tâches et l'affectation des tâches aux unités[3].
Le but visé par les algorithmes de répartition de charge est d'obtenir une décomposition optimale: que le travail soit réparti de manière équilibrée entre les processeurs, et que les communications entre les différents processeurs soient réduites au minimum. En plus de la répartition des tâches, réalisée avant l'exécution des tâches, il existe également des algorithmes visant à déplacer des tâches en cours d'exécution vers un processeur moins occupé[3].
Un algorithme de répartition statique distribue les tâches sur la base de la quantité de travail à priori de chaque tâche. Ce type d'algorithme donne de bons résultats lorsque la durée d'exécution de chaque tâche est prévisible. Un algorithme dynamique vise à obtenir de meilleurs résultats en effectuant continuellement des mesures du taux d'occupation de chaque processeur. Ces mesures peuvent cependant entraîner un ralentissement de l'exécution des tâches[3].
Les fermes de serveurs
Dans une ferme de serveurs (anglais server cluster) un groupe de serveurs fonctionnent comme un dispositif informatique unique. Les machines sont reliées entre elles et exécutent un logiciel qui contrôle leur activité et leur disponibilité, dans le but d'exploiter leur disponibilité par la répartition de charge. Les informations relative à la disponibilité de chaque machine sont envoyées à un serveur maître, et celui-ci distribue les tâches entre les machines de la ferme en choisissant de préférence celles qui sont le plus disponibles, ceci en vue d'éviter la saturation d'une des machines de la ferme[4].
Les institutions favorisent les fermes de serveurs, en particulier pour les applications Internet, parce que celles-ci permettent d'assurer une haute disponibilité de l'application, ainsi qu'une scalabilité élevée: La croissance peut être prise en charge dans une très large mesure par l'adaptation du matériel[4]. La popularisation d'Internet dans les années 1990 a permis pour la première fois de mettre des services à disposition du monde entier, et l'équilibrage de charge à permis a ces services de supporter de manière sûre, fiable et rapide des demandes provenant de plusieurs millions d'utilisateurs[1].
Selon une étude parue en 2003, le moteur de recherche Google est une ferme de serveurs composée de 6000 micro-ordinateurs, qui peut répondre à 1000 demandes de recherche par seconde. De la même manière, tous les services Internet populaires utilisent à l'insu du client une batterie d'ordinateurs, et la technique de l'équilibrage de charge[1].
La mise en oeuvre
La répartition de charge permet de distribuer des applications à travers un réseau. Cette technique permet de distribuer n'importe quel service entre différents ordinateurs et emplacements géographiques. Elle est principalement utilisé pour les serveurs web, ainsi que les points d'accès VPN, les proxy ou les pare-feu[5],[6].
La visite d'un site web provoque l'émission de requêtes HTTP. Chaque requête contient le nom du serveur à qui elle est destinée, qui devra alors la traiter. Le travail du serveur peut être allégé en envoyant les requêtes suivantes à d'autres serveurs à tour de rôle[5]. Une technique consiste à faire correspondre le nom du serveur avec plusieurs ordinateurs en modifiant continuellement les tables de correspondance du service DNS. La distribution par le DNS ne tient cependant pas compte de l'état des serveurs, en particulier de la disponibilité et des pannes éventuelles. Les demandes peuvent alors être envoyées à des serveurs qui sont déja 100% occupés, ou à des serveurs en panne. L'utilisation d'un dispositif de répartition permet de résoudre ces deux problèmes[5],[6].
Le répartiteur peut être un routeur, un switch, un système d'exploitation ou un logiciel applicatif. Il répartit les demandes en les distribuant uniquement aux serveurs disponibles. Le destinataire des demandes peut également être imposé: dans un site de e-commerce, lorsqu'une demande sécurisée est faite par un acheteur - par exemple l'achat d'un produit - les demandes suivantes provenant de cet acheteur seront toutes envoyées au même serveur[5],[6]. Le répartiteur simule la présence d'un serveur: Les clients communiquent avec le répartiteur comme si il s'agissait d'un serveur. Celui-ci répartit les demandes provenant des clients, les transmets aux différents serveurs. Lorsqu'un serveur réponds à une demande, celle-ci est transmise au répartiteur; puis le répartiteur transmet la réponse au client en modifiant l'adresse IP de l'expéditeur pour faire comme si cette réponse provient du répartiteur[6].
Les machines de la ferme doivent avoir accès au même lot de fichiers, ceci peut être réalisé à l'aide d'un système de fichier distribué ou à l'aide d'un réseau de stockage (abr. SAN). Les serveurs ne vérifient pas individuellement les sessions parce que, du fait de la répartition, plusieurs serveurs peuvent être impliqués lors d'une même session[5].
Principes
Analyse du risque
Si de gros volumes de données sont concernés il sera difficile de tout sauvegarder sans mobiliser de grosses unités de sauvegarde et de bande passante. La perte de données doit être envisagée afin de choisir celles dont l'impact est fort (sauvegardes importantes) ou faible (données transitoires). Par exemple, pour un site marchand, perdre le contenu d'un panier est bien plus dommageable que la liste des articles que l'internaute vient de visiter.
Un autre indicateur important consiste à estimer le temps d'indisponibilité toléré sur un an en pourcentage. On le quantifie en "nombre de neuf".
- 99 % de disponibilité : moins de 3,65 jours hors service tolérés par an
- 99,9 % : moins de 8,75 heures
- 99,999 % : moins de 5,2 minutes (référence dans le monde des télécommunications)
Partage de charge dans le cadre des réseaux
Le principe de la répartition de charge s'applique aussi au domaine des connexions réseau. Il existe plusieurs façons de mettre en place ce type de solution. On peut soit acheter un boîtier d'équilibrage de charge et l'administrer soi-même ; soit, comme certaines entreprises le proposent : acquérir le boîtier et faire appel au service de supervision qui l'accompagne.
Des constructeurs équipementier ont conçu des boîtiers de partage de charge.
Ces dernières années, des sociétés ont développé des services complets de répartition de charge dans le domaine des réseaux et connexions Internet.
Voir aussi
- Round-robin
- CARP
- Virtual Router Redundancy Protocol
- HAProxy, logiciel libre de répartition de charge
- RAID, répartition au niveau des disques durs
- Grappe de serveurs
Notes et références
- (en)Hossein Bidgoli,The Internet encyclopedia, Volume 1,John Wiley and Sons - 2004,(ISBN 9780471222026)
- (en)Joseph Hellerstein - Yixin Diao - Sujay Parekh - Dawn M. Tilbury,Feedback control of computing systems,John Wiley & Sons - 2004,(ISBN 9780471266372)
- (en)Chengzhong Xu - Francis C. M. Lau,Load balancing in parallel computers: theory and practice,Springer - 1997,(ISBN 9780792398196)
- (en)Nathan J. Muller,Network manager's handbook,McGraw-Hill Professional - 2002,(ISBN 9780071405676)
- (en)Charles Bookman,Linux clustering: building and maintaining Linux clusters,Sams Publishing - 2003,(ISBN 9781578702749)
- (en)Mauricio Arregoces - Maurizio Portolani,Data center fundamentals,Cisco Press - 2003,(ISBN 9781587050237)
Liens externes
Catégories :- Disponibilité (informatique)
- Architecture réseau
- Calcul distribué
Wikimedia Foundation. 2010.