Bonjour,
Je m'interesse à HAPROXY et malgré la lecture de plusieurs article à ce sujet y a toujours une question (au moins) à laquelle je ne trouve pas de réponse.
Lorsque par exemple on a un cluster HAPROXY composé de 4 serveurs si j'ai bien tout compris chaque noeud du cluster porte l'adresse IP virtuelle du cluster en plus de sa propre IP.
Mais comment s'effectue la selection du noeud haproxy qui va recevoir la requette client et la transférer ?
Puisque chaque noeud porte l'IP du cluster j'imagine que c'est pas chaque noeud sui recoit la requette client ?
En d'autres termes comment s'effectue le load balancing du cluster haproxy lui même ?
Merci de vos éclairages.
# 2 etages, 2 systeme.
Posté par NeoX . Évalué à 4.
c'est haproxy qui sait à quelle machine envoyer, par son IP reelle,
l'IP virtuelle du cluster ne servant qu'à permettre au serveur finale d'accepter le paquet IP, et de repondre directement au client.
sur ton haproxy, tu configures un frontend pour ecouter sur l'IP de cette machine.
puis tu selectionnes un backend dans une liste definie.
dans ce backend, tu peux definir plusieurs serveurs, c'est ta ferme du cluster.
chaque element du cluster doit evidemment avoir sa propre IP,
et c'est dans la definition du backend que tu choisis la methode qu'haproxy va utiliser pour choisir à quel element du cluster envoyer le flux qu'il recoit.
tu as (entre autres) les modes :
- "roundrobin" qui equilibre de maniere egale entre les serveurs
- "leastconn" qui regarde regarde sur quel serveur il y a le moyen d'activité et envoie le flux sur celui là.
pour le cas que tu decris : "chaque noeud du cluster porte l'ip du cluster", c'est dans le cas du routage assymetrique.
avec la requete circulant comme ca :
Client -> Haproxy -> Serveur
et la reponse :
Serveur -> Client
le plus simple pour demarrer etant de mettre ton haproxy en "coupure" entre ton serveur et tes clients,
la route par defaut des serveurs devenant le serveur haproxy, il n'y a alors plus besoin de mettre l'IP du cluster sur chaque noeud
[^] # Re: 2 etages, 2 systeme.
Posté par Orwell . Évalué à 1.
Merci NeoX,
C'était pas tout à fait ma question. Mais c'est pas grave car dans l'explication que tu donnes j'ai appris qu'il y avait plusieurs mode de load balancing.
Jusqu'ici je ne m'était interessé que à round-robin.
D'ailleurs cela m’ammene une autre question.
En round robin si par exemple mon HAPROXY adresse une ferme de 4 noeud apache et que l'un d'eux tombe, est que HAPROXY continue à lui envoyer des paquets occasionnant 25 % de perte ou est-ce que il détecte qu'un noeud et mort et décide tout seul de l'éliminer?
[^] # Re: 2 etages, 2 systeme.
Posté par NeoX . Évalué à 3.
quelque soit le mode de loadbalancing, il est recommandé d'activer les checks dans la definition du backend.
exemple de backend definit chez moi - il faut virer les ** qui ne sont que pour te montrer ce qui gere les checks :
ainsi il va verifier que les VM301 et VM302 sont dispos, normalement toutes les secondes.
si l'une d'elle tombe, il adapte ses flux pour renvoyer le reste vers l'autre.
sans ces checks en effet, je penses qu'il continuerait d'envoyer vers une machine qui n'existe plus.
# Keepalived
Posté par Benoît Laurent (site web personnel) . Évalué à 2.
Je n'ai jamais mis en place ça moi même, mais en général, HAProxy est utilisé avec Keepalived et comme tu le dis une adresse IP virtuelle.
C'est donc Keepalived qui bascule le serveur vivant sur la VIP (grâce au protocol VRRP je crois.)
Ça te donne quelques mots clés supplémentaires pour chercher de la doc.
[^] # Re: Keepalived
Posté par Orwell . Évalué à 1.
Merci Benoit,
C'est parfait. Oui j'ai vu un peu de doc sur vrrp. il semble que se soit un peu le même principe que hsrp en plus efficace et plus rapide.
[^] # Re: Keepalived
Posté par Orwell . Évalué à 2.
Par contre de ce que je comprends il n'existe pas de possibilité que plusieurs neoud d'un cluster HAPROXY ou LVS fonctionnent en actif-actif?
[^] # Re: Keepalived
Posté par NeoX . Évalué à 3.
c'est quoi le but ?
de mettre un autre loadbalancer devant ton cluster haproxy ?
keepalived permet quand meme cela, en jouant des priorités
tu peux tres bien definir un noeud Master sur l'IP 1.2.3.4 (qui sera backup pour l'IP 5.6.7.8)
et definir l'autre noeud Master sur 5.6.7.8 (qui sera backup pour 1.2.3.4)
et donc ils seront actif/actif avec echange des roles si l'un deux tombe.
mais je ne sais pas si haproxy va bien vouloir se lancer s'il n'a pas l'IP sur laquelle il est censé ecouter.
[^] # Re: Keepalived
Posté par claudex . Évalué à 4.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Keepalived
Posté par NeoX . Évalué à 2.
merci faut que je me la note dans un coin celle là
# Article sur le sujet
Posté par Benoît Laurent (site web personnel) . Évalué à 1.
Je viens de croiser cet article, je le met ici pour mémoire.
Loadbalancer hautement disponible avec HAProxy et Keepalived
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.