Load Balancers : Répartition

février 24, 2007  |   Blog   |     |   Commentaires fermés sur Load Balancers : Répartition

Une des fonctionnalités les plus visibles des load-balancers est la façon dont ils répartissent les flux vers les serveurs réels (pour l’introduction voir ici). Tout d’abord soyons clair : la répartition (c’est-à-dire le choix du serveur pour la connexion cliente) ne se fait qu’une fois : lors de l’ouverture de la connexion (dans le cas spécifique de HTTP, on verra que les load-balancers gèrent les sessions et qu’ainsi une suite de connexions TCP HTTP sera bien gérée comme la session d’un utilisateur unique) : les paquets appartenant à une session TCP déjà établie sont dirigés vers le serveur choisi pour cette connexion.

Les algorithmes implémentés sont généralement :

  • round robin : on répartit chaque nouvelle connexion sur un serveur différent
  • least connections : on dirige la nouvelle connexion sur le serveur qui en compte le moins à ce moment précis
  • bandwidth : on dirige la nouvelle connexion sur le serveur qui en utilise le moins à ce moment précis
  • hashing (certaines variantes sont nommées minmisses ou phash): en effectuant une opération sur l’adresse IP du client (ou l’URL de la demande par exemple), typiquement condensat, bit de parité,etc.. on détermine le serveur réel cible : c’est une méthode frustre qui présuppose une distribution répartie des adresses IP des clients (on verra que c’est rarement le cas). L’avantage de cette méthode est qu’elle rend le choix du serveur déterministe et permet ainsi nativement d’assurer la persistance.
  • weighted <methode> : on applique une des méthodes précédentes en biaisant le poids des serveurs réels (intéressant lorsque la ferme est composée de serveur de puissance hétérogènes)

Le choix d’un méthode de répartition est, on le voit, assez structurant pour comprendre la façon dont la charge sera répartie sur les serveurs réels.

Dans un prochain article, on verra comment est assurée la persistance et quelles sont les réelles opérations bas niveau réalisées par le load-balancer (i.e delayed binding).

Les commentaires sont fermés.