Pour savoir où on va, il faut savoir d'où l'on vient

Vous avez
une question ?
Un projet ?

Contactez nous !
 

Contactez-nous

Vous avez une question ? un projet ? 
Vous souhaitez plus d'informations sur un produit ? sur notre offre ? 
Contactez-nous, on vous répond sous 4H.

retour

Finalité et logique de répartition

Finalité et logique de répartition

Nous voulons distinguer clairement les principes et logiques de répartition des techniques et outils, qui seront traités plus loin.

Pourquoi veut-on répartir la charge ?

Augmenter la capacité

En premier lieu, on l’a dit, pour atteindre une plus grande capacité de traitement, en mettant en œuvre plusieurs serveurs physiques.

Mais ceci avec quelques objectifs secondaires.

Equilibrer la charge

La logique de répartition de charge vise le plus souvent un équilibrage : on souhaite que chaque serveur soit utilisé de manière optimale, qu’il n’y en ait pas un surchargé tandis qu’un autre est sous-utilisé. Dans cette finalité de répartition équilibrée, nous verrons qu’il y a différents algorithmes possibles, depuis l’aléatoire jusqu’au plus « intelligent ».

Résister aux pannes

Nous verrons que l’objectif de répartition est souvent corrélé à celui de haute disponibilité : on veut aussi répartir la charge entre des serveurs parce que c’est un bon moyen de résister à la panne de l’un d’entre eux. Ceci à condition que les dispositifs de répartition puissent détecter une panne et exclure le serveur défaillant.

Spécialiser des serveurs

La répartition peut avoir d’autres logiques que celle de l’équilibre. Elle peut viser aussi la spécialisation des serveurs, faisant traiter certaines typologies de requêtes, ou bien d’internautes, par certains serveurs.

Faciliter l’exploitation

Différentes solutions de répartition de charge permettent d’agir à chaud sur les paramètres de la répartition, et en particulier d’ajouter ou de retirer un serveur. Il est possible ainsi d’arrêter un serveur en douceur, en le retirant de la répartition, puis en attendant que les connexions qui lui sont affectées soient fermées. C’est le moyen de gérer une opération de maintenance en assurant une parfaite continuité du service, et à cet égard, la flexibilité d’exploitation est aussi une des finalités de la répartition de charge.

Répartition de requêtes ou répartition de sessions ?

Un serveur web traite un très grand nombre de requêtes, adressées par un très grand nombre d’internautes. On peut analyser la répartition de charge en termes de granularité : répartir « la charge » est un peu vague, que va-t-on répartir exactement ? La requête HTTP est ici l’entité minimale, atomique. Le traitement complet d’une requête HTTP est une petite tâche, qui demandera quelques centièmes ou quelques dixièmes de secondes, et sera traitée par un même serveur.

Certaines techniques de développement obligent à traiter toutes les requêtes constituant une même session, d’un même internaute, sur le même serveur, ce qui présente des contraintes spécifiques quant à la répartition.

Répartition entre des serveurs ou entre des datacenters ?

Enfin, on peut répartir la charge entre différents serveurs d’un même datacenter, sur un même réseau LAN et partageant un ensemble de ressources en amont (routeurs, switchs, load-balancer), et en aval (base de données, serveur de fichiers, SAN, …), ou bien on peut répartir la charge entre plusieurs datacenters, qui ne partagent rien.

Les techniques utilisées sont alors très différentes.