Comment configurer HAProxy avec basculement?


14

Je comprends que, pour obtenir le basculement sur une configuration d'équilibrage de charge HAProxy, vous avez besoin de deux machines exécutant HAproxy (et l'acheminer vers plusieurs instances de serveur Web). Mais dans ce cas, disons abcd.com, comment diviser / acheminer ce trafic vers 2 adresses IP au lieu d'une? DNS résout généralement les noms de domaine en une seule IP. Comment procéder en utilisant des outils / services gratuits / bon marché?


Réponses:


20

Si vous avez tellement de charge que vous devez équilibrer la charge entre deux instances haproxy, le round robin DNS n'est pas une mauvaise idée (je serais surpris si vous avez cette charge). Le round robin DNS ne fournira cependant pas un bon basculement.

Chez Stack Overflow, nous utilisons heartbeat pour fournir une seule adresse IP virtuelle, cette adresse IP est active sur un seul hôte haproxy à la fois (si elle tombe en panne, l'autre reprend cette adresse IP). Vous pouvez utiliser Heartbeat pour avoir une IP sur chaque machine, puis un round robin DNS entre les deux. Si l'un venait à échouer, l'autre aurait ces deux IP.

HAProxy utilise environ 1-5% de CPU sur notre serveur physique pour équilibrer notre trafic qui en a un seul Intel(R) Xeon(R) CPU E5504 @ 2.00GHz. Ainsi, HAProxy peut généralement gérer beaucoup de trafic facilement.


1
Non, je n'ai certainement pas de trafic de ce type. C'est juste une tentative pour éviter le SPOF.
mixdev

2
@mixdev: Dans ce cas, il suffit que le point DNS pointe vers la seule adresse IP virtuelle fournie par heatbeat et vous devriez être prêt à partir. Vous laissez simplement haproxy fonctionner sur les deux machines. Assurez-vous de tester le basculement du rythme cardiaque avant de commencer, bien sûr.
Kyle Brandt

@KyleBrandt: Et si le processus haproxy devait mourir? Avez-vous quelque chose de configuré qui permettrait de déplacer l'IP virtuelle sur cette base?
CarpeNoctem

@CarpeNoctem: Nous n'avons pas couvert cela pour le moment. Je pense que le rythme cardiaque et la survie peuvent également être configurés pour surveiller les processus. Si vous suivez cette voie, je recommanderais de la configurer pour exiger que le processus soit arrêté pendant une bonne période (c.-à-d. 1 minute). Vous ne voulez probablement pas que le battement de cœur se déclenche en cas d'erreur de configuration. HAProxy vérifie la plupart de ceux-ci avec -c, mais il pourrait ne pas détecter des erreurs comme une erreur de configuration.
Kyle Brandt

5
Pour tous ceux qui s'en soucient, chez Stack, nous avons déménagé pour rester en vie il y a plus d'un an
Kyle Brandt

24

Comme le dit Kyle, le battement de cœur peut être utilisé pour faire en sorte que deux serveurs haproxy agissent comme une paire de basculement. Cependant, alors que de nombreuses personnes utilisent le rythme cardiaque pour le travail, keepalived est suggéré par l'auteur de haproxy.

Il décrit les détails de la liste de diffusion haproxy: http://www.formilux.org/archives/haproxy/1003/3259.html

En bref, cela se passe comme suit:

  • le rythme cardiaque est orienté cluster. Il garantit qu'un seul serveur a accès à une ressource (ex. Stockage SAN)

  • keepalived est orienté réseau. Il garantit qu'au moins un serveur possède l'IP en question.


-1

1
Veuillez inclure le contenu complet de la recette dans votre message. Nous ne sommes pas exactement un service de liaison de blogs.
Deer Hunter

1
en outre, les blogs descendent ou modifient souvent les URL, puis les informations sont perdues.
Dennis Nolte

Votez contre parce que cela n'a aucun rapport avec la question.
danieljimenez

@danieljimenez, Pas totalement sans rapport je pense, juste un malentendu. OP a demandé Active / Passive pour le HAProxy lui - même et user3595100 a interprété la question comme Active / Passive pour un backend HAProxy. Néanmoins, publier un lien n'est pas une réponse acceptable en soi.
duct_tape_coder
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.