Wie richte ich HAProxy mit Failover ein?


14

Ich verstehe, dass Sie zum Failover eines HAProxy-Lastenausgleichs zwei Computer benötigen, auf denen HAproxy ausgeführt wird (und die an mehrere Webserver-Instanzen weitergeleitet werden). Aber in diesem Fall, sagen wir abcd.com, wie können wir diesen Datenverkehr auf 2 IP-Adressen anstatt auf eine aufteilen / weiterleiten? DNS löst normalerweise Domainnamen in eine einzelne IP auf. Wie machen wir das mit kostenlosen / billigen Tools / Diensten?


Überprüfen Sie dies auch serverfault.com/questions/238605/…
mixdev

Antworten:


20

Wenn Sie so viel Last haben, dass Sie die Last auf zwei Haproxy-Instanzen verteilen müssen, ist DNS Round Robin keine schlechte Idee (ich wäre jedoch überrascht, wenn Sie diese Last haben). DNS Round Robin bietet jedoch kein gutes Failover.

Bei Stack Overflow wird heartbeateine einzelne virtuelle IP bereitgestellt. Diese IP ist jeweils nur auf einem Haproxy-Host aktiv (wenn sie ausfällt, übernimmt der andere diese IP). Sie könnten Heartbeat verwenden, um eine IP auf jedem Computer und dann DNS-Round-Robin zwischen den beiden zu haben. Wenn einer ausfällt, hat der andere beide IPs.

HAProxy verwendet ca. 1-5% CPU auf unserem physischen Server, um den Datenverkehr mit einer einzigen CPU auszugleichen Intel(R) Xeon(R) CPU E5504 @ 2.00GHz. So kann HAProxy im Allgemeinen viel Verkehr leicht anfassen.


1
Nein, ich habe definitiv keinen solchen Verkehr. Es ist nur ein Versuch, SPOF zu vermeiden.
mixdev

2
@mixdev: In diesem Fall muss der DNS-Punkt nur auf die einzelne virtuelle IP-Adresse verweisen, die von heatbeat bereitgestellt wird, und Sie sollten einsatzbereit sein. Sie lassen Haproxy einfach auf beiden Rechnern laufen. Stellen Sie sicher, dass Sie das Heartbeat-Failover testen, bevor Sie den Betrieb aufnehmen.
Kyle Brandt

@KyleBrandt: Was wäre, wenn der Haproxy-Prozess sterben würde? Haben Sie irgendetwas konfiguriert, das es ermöglichen würde, die virtuelle IP basierend darauf zu verschieben?
CarpeNoctem

@ CarpeNoctem: Wir haben das im Moment nicht abgedeckt. Ich denke, dass sowohl Heartbeat als auch Keepalived eingerichtet werden können, um Prozesse zu beobachten. Wenn Sie diesen Weg einschlagen, würde ich empfehlen, ihn so einzustellen, dass der Vorgang für eine gewisse Zeit (dh 1 Minute) unterbrochen sein muss. Sie möchten wahrscheinlich nicht, dass der Heartbeat bei einem Konfigurationsfehler umschlägt. HAProxy prüft die meisten davon mit -c, fängt jedoch möglicherweise keine Fehler in der Bindungskonfiguration ab.
Kyle Brandt

5
Für alle, die sich interessieren, bei Stack sind wir vor über einem Jahr umgezogen, um am Leben zu bleiben
Kyle Brandt,

24

Wie Kyle sagt, können mit Heartbeat zwei Haproxy-Server als Failover-Paar fungieren. Während jedoch viele Leute Heartbeat für den Job verwenden, wird Keepalived von Haproxys Autor vorgeschlagen.

Er umreißt die Details der Haproxy-Mailingliste: http://www.formilux.org/archives/haproxy/1003/3259.html

Kurz gesagt, es geht so:

  • Herzschlag ist clusterorientiert. Es wird sichergestellt, dass nur ein Server Zugriff auf eine Ressource hat (z. B. SAN-Speicher).

  • keepalived ist netzwerkorientiert. Es stellt sicher, dass mindestens ein Server die betreffende IP hat.


-1

1
Bitte geben Sie den vollständigen Inhalt des Rezepts in Ihrem Beitrag an. Wir sind nicht gerade ein Blog-Linking-Service.
Deer Hunter

1
Außerdem gehen Blogs häufig aus oder ändern URLs, und dann gehen die Informationen verloren.
Dennis Nolte

Abgestimmt, weil es absolut nichts mit der Frage zu tun hat.
Danieljimenez

@danieljimenez, Ich denke nicht völlig unabhängig, nur ein Missverständnis. OP fragte nach Active / Passive für das HAProxy selbst und user3595100 interpretierte die Frage als Active / Passive für ein HAProxy-Backend. Dennoch ist das Posten eines Links für sich genommen keine akzeptable Antwort.
duct_tape_coder
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.