« Répartition de charge » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Silex6 (discuter | contributions)
Aucun résumé des modifications
Silex6 (discuter | contributions)
Aucun résumé des modifications
Ligne 4 : Ligne 4 :


La ''répartition de charge'' est issue de la recherche dans le domaine des [[ordinateur parallèle|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 (informatique)|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<ref name="encyclopedia" />.
La ''répartition de charge'' est issue de la recherche dans le domaine des [[ordinateur parallèle|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 (informatique)|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<ref name="encyclopedia" />.

== 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 (informatique)|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<ref name="parallel">{{en}}Chengzhong Xu - Francis C. M. Lau,''Load balancing in parallel computers: theory and practice'',Springer - 1997,{{ISBN|9780792398196}}</ref>.

Un programme parallèle est composé d'une suite de [[processus (informatique)|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<ref name="parallel" />.

Le but visé par les algorithmes de répartition de charge est d'obtenir une décomposition optimale: la répartition est optimale lorsque le travail est réparti de manière équilibrée entre les processeurs, et que les communications entre les différents processeurs sont 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é<ref name="parallel" />.

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 de la quantité de travail de chaque processeur. Ces mesures peuvent cependant entraîner un ralentissement de l'exécution des tâches<ref name="parallel" />.
==Objectifs==
==Objectifs==
* Gérer les '''montées en charge''' pour ne pas perdre en qualité de service
* Gérer les '''montées en charge''' pour ne pas perdre en qualité de service

Version du 10 novembre 2011 à 15:19

En informatique la répartition de charge (anglais load balancing) est la technique de 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].

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[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: la répartition est optimale lorsque le travail est réparti de manière équilibrée entre les processeurs, et que les communications entre les différents processeurs sont 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 de la quantité de travail de chaque processeur. Ces mesures peuvent cependant entraîner un ralentissement de l'exécution des tâches[3].

Objectifs

  • Gérer les montées en charge pour ne pas perdre en qualité de service
  • Assurer une haute disponibilité des services
  • Assurer la sécurité des données en cas de panne

Principes

Réplication

Le principe de la réplication est très simple : deux (ou plus) serveurs (A et B) assurent le même service mais seul A est actif. Le serveur B (passif) est une parfaite copie en temps réel du serveur A. Ainsi, en cas d'interruption, le serveur B est prêt à remplacer le serveur A. Il faut s'assurer que la somme des ressources passives est égale aux ressources actives (ex. pour deux serveurs actifs et un passif les serveurs actifs ne doivent pas dépasser une charge de 50%) pour éviter les débordements.

Cependant cette solution demande une grande quantité de ressources "inutilisées" en fonctionnement normal. Pour limiter les coûts il est tout à fait possible d'avoir des ressources passives moindres, avec le risque d'avoir une qualité de service dégradée en cas de défaillance.

Répartition

Les ressources peuvent être divisées en nœuds sur lesquels la charge sera répartie (par le répartiteur) selon plusieurs critères à définir. La pratique la plus courante est d'utiliser le Round-robin pour désigner une ressource : le répartiteur redirigera vers chaque serveur tour à tour comme le font les répartiteurs matériels (exemple : serveurs DNS). Cette solution est très efficace mais limitée car elle ne prend pas en compte le contexte (sessions, négociation SSL/TLS, etc.) pour lesquels il faudra un répartiteur logiciel qui associe l'adresse IP et non la connexion au nœud.

Un mécanisme plus performant existe donc, en s'appuyant sur un équipement appelé répartiteur de charge (en anglais load balancer) chargé de distribuer le travail entre différentes machines. Il permet ainsi de lisser le trafic réseau, c'est-à-dire de répartir la charge globale vers différents équipements qui lui sont connectés, et de s'assurer de la disponibilité de ceux-ci, en n'envoyant des données qu'aux équipements en mesure de répondre, voire à ceux offrant le meilleur temps de réponse.

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

Notes et références

  1. a et b (en)Hossein Bidgoli,The Internet encyclopedia, Volume 1,John Wiley and Sons - 2004, (ISBN 9780471222026)
  2. (en)Joseph Hellerstein - Yixin Diao - Sujay Parekh - Dawn M. Tilbury,Feedback control of computing systems,John Wiley & Sons - 2004, (ISBN 9780471266372)
  3. a b c et d (en)Chengzhong Xu - Francis C. M. Lau,Load balancing in parallel computers: theory and practice,Springer - 1997, (ISBN 9780792398196)

Liens externes