LVS vs HAProxy, welche soll ich wählen?

21

Ich bin auf der Suche nach einer Lösung für Load-Balancing- und Failover-Strategien, hauptsächlich für große Webanwendungen. Wir müssen viele Dienste ausbalancieren, wie z. B. Web, MySQL und viele andere HTTP- oder TCP-basierte Dienste. Aber ich bin mir nicht sicher, was ihre Vor- und Nachteile sind und welche ich wählen sollte.

Mickey Shine
quelle

Antworten:

24

Das wichtigste Unterscheidungsmerkmal zwischen den beiden Lösungen (LVS, HAproxy) ist, dass eine auf Schicht 4 (LVS) und die andere auf Schicht 7 (HAproxy) arbeitet. Beachten Sie, dass die Ebenenreferenzen aus dem OSI-Netzwerkmodell stammen.

Wenn Sie dies verstehen, können Sie eine an der richtigen Stelle verwenden. Beispiel: Wenn Sie den Ausgleich nur anhand der Anzahl der Verbindungen vornehmen müssen (sagen wir mal), sollte der Layer-4-Load-Balancer ausreichen. Wenn Sie dagegen den Load-Balancer basierend auf der HTTP-Antwortzeit ausführen möchten, benötigen Sie eine LB mit einer höheren Ebene.

Die Nachteile der Verwendung eines LB auf höherer Ebene sind die Ressourcen, die benötigt werden (zum Beispiel Verkehr für dieselbe Menge). Die Vorteile liegen auf der Hand - denken Sie an "Packet Level Inspection", "Protocol Routing" usw. - Dinge, die weitaus komplizierter sind als einfaches "Packet Routing".

Der letzte Punkt, den ich machen möchte, ist, dass HAproxy Userspace ist (denken Sie, dass "viel einfacher anzupassen / zu optimieren" ist, aber langsamer (Leistung)), während LVS im Kernel-Space ist (denken Sie, dass "schnell wie die Hölle" ist, aber starr wie der Kernel ). Vergessen Sie auch nicht, dass "ein Upgrade von LVS einen Kernelwechsel bedeuten könnte - also einen Neustart" ...

Verwenden Sie abschließend das richtige Werkzeug für den richtigen Job.

Raven007
quelle
Ich finde es toll, wie Leute OSI-Schichten verwenden, obwohl sie in der Realität nie implementiert wurden.
Kubanczyk
9

Sie sollten beides verwenden: HAProxy ist ein hervorragender Load Balancer und LVS ist eine Lösung für das Failover und vermeidet einen Single Point of Failure.

lg.
quelle
1
+1, außer dass HAProxy hauptsächlich für HTTP verwendet wird, da es ansonsten die Quell-IP der Anfrage verbirgt, was ein Problem sein kann (zum Beispiel für SMTP RBL)
Antoine Benkemoun
3
Ich benutze HAProxy für reine TCP-Server und funktioniert sehr gut. Das versteckte Quell-IP ist ein Problem für alle Load Balancer.
lg.
2
Ich glaube, dass versteckte Quell-IP ein Grund ist, warum Loadbalancer nicht oft für SMTP-Dienste verwendet werden.
Stefan Lasiewski
3
lvs und ha proxy machen dasselbe. Ich bevorzuge LVS, wirklich schneller, weil es auf dem Kernel läuft.
Diego Woitasen
1
@AntoineBenkemoun Sie können den transparenten Modus von HAProxy verwenden, um die Client-IP anzuzeigen.
Thomas Decaux