L'équilibrage de charge
Utilisation, principe et solutions
Introduction
L'équilibrage ou répartition de charge prend une
importance particulière avec la montée en
puissance des application web
Principes
En anglais Load-Balancing
Répartition des connexions à une machine vers
un ensemble de machines
Mis en oeuvre grâce à un boîtier d'équilibrage
de charge
Objectifs
Adaptation à la charge (Scalability)
Amélioration des temps de réponse
Augmentation de la qualité de service
Tolérance de panne
Quelques solutions
Linux LVS
Haproxy
Microsoft NLB
Varnish
Premier cas de figure : DNS round
robin
Tourniquet DNS: à un nom DNS on associe
plusieurs adresses (multiples enreg. A)
Simple à mettre en oeuvre
Peu de contrôle
Microsoft NLB
Network Load Balancing
Intégré à Windows serveur 2000/2003
Pas plus de 32 serveurs
Répartition de charge calculée uniquement sur
la charge réseau
Serveurs situés dans le même sous-réseau
Microsoft NLB - suite
Utilise une adresse MAC virtuelle pour
l'ensemble des membre du cluster
Mode unicast
Chaque carte du cluster dispose de la même
adresse MAC et IP : impossible de communiquer
sans ajout de carte supplémentaire
ou Mode multicast
Chaque carte du cluster dispose de 2 adresses
MAC => pb avec de nombreux routeurs et switch
Linux LVS/IPVS
Linux Virtual Server
Dans le noyau Linux depuis 2001
Solution éprouvée utilisée par Wikipedia,
Clubic, ...
Dispose d'un application d'équilibrage de
charge de niveau 7 (KTCPVS)
Solution généraliste pas limitée au seul http
Linux LVS/IPVS -2
supporte de nombreux algorithmes de
répartition
round-robin, weighted round-robin, least-connection
scheduling, weighted least-connection, locality-
based least-connection, locality-based least-
connection with replication, destination hashing,
source hashing, shortest expected delay, never
queue.
Synchronisation des information d'état
Schéma de principe
Les mode de fonctionnement
* Tunnel Virtuel avec la NAT
Tunnel Virtuel avec le TUN
Tunnel Virtuel avec le Direct Routing
VS/NAT
VS/NAT
Son principe de fonctionnement ne permet pas
un grand nombre de serveurs (~10)
Simple à mettre en oeuvre
VS/Tunneling
VS/Tunneling
Permet un plus grand nombre de serveurs (~ 100)
: charge élevée
VS/Direct Routing
VS/Direct Routing
Permet un plus grand nombre de serveurs (~ 100)
Les modes de répartition de charge
Round-Robin : répartition uniforme
Round-Robin pondéré
Machine la moins chargée
Machine la moins chargée avec pondération
Le paquetage ipvsadm
Permet de mettre en place un serveur LVS
exemple : répartition Web en Round-Robin
ipvsadm -A -t [Link]:80 -s rr
ipvsadm -a -t [Link]:80 -r [Link]:80 -m
ipvsadm -a -t [Link]:80 -r [Link]:80 -m
ipvsadm -a -t [Link]:80 -r [Link]:80 -m
ipvsadm -a -t [Link]:80 -r [Link]:80 -m
ipvsadm -a -t [Link]:80 -r [Link]:80 -m
HAProxy
Dispositif d'équilibrage de charge pour TCP et
les applications HTTP
Solution stable et éprouvée
S'adapte automatiquement à l'état des serveurs
Fonctionne au niveau 4 ou 7
Gère les informations de session http
Ne gère pas HTTPS
Gère plusieurs dizaines de milliers de
connexion
HAProxy – 2
Quelques fonctionnalités :
Répartition sur la base d’un cookie existant, ou bien
insertion de son propre cookie pour gérer l’affinité de
serveur.
HAProxy peut tester la disponibilité des serveurs, soit
en établissant une connexion TCP, soit en adressant
une requête HTTP. En mode HTTP, la vérification peut
porter sur une URI particulière, qui teste tous les
composants requis au bon fonctionnement.
HAProxy - 3
mode de répartition : round-robin (permutation
circulaire), avec possibilité de permutation et de
limitation du nombre de connexions par
serveur.
reconfiguration possible à chaud.
statistiques temps-réel.
HAProxy est généralement mis en œuvre
couplé à heartbeat,
VARNSIH
Varnish est un accélérateur web/proxy inverse
Il est assez largement utilisé sur les sites
dynamiques sur lequels il permet d'améliorer
très sensiblement les temps de réponse (x 4 ou
x5)
Il permet d'effectuer de la répartition de charge
(au niveau 7 applicatif)
[Link]
La haute disponibilité
Le redirecteur LVS constitue un SPOF (Single
Point Of Failure ou ressource critique ) et par
là un risque de panne. On le double souvent par
une deuxième machine reliée avec un heartbeat
D'autre part, il est possible d'utiliser des logiciels
(ldirectord, LVSM, keepalived, ...) qui vont
tester le fonctionnement des serveurs et
permettre de s'adapter dynamiquement à leur
fonctionnement (ajout, suppression d'une
machine, ...)
Les solutions
UltraMonkey : LVS + heartbeat + ldirectord
Mise en oeuvre
De nombreux tutoriel pour LVS/IPVS,
Ultramonkey ou Haproxy sur [Link]