Linux-Äquivalent zu Windows NLB

7

Unter Windows können wir den Lastenausgleich für beliebige IP-Dienste einrichten, indem wir NLB installieren und auswählen, welche Knoten im Cluster verwendet werden sollen. Es ändert einige MAC-Adressen und verfügt dann über Algorithmen, um zu entscheiden, welcher Knoten eine eingehende Anforderung verarbeitet.

Gibt es ein Produktionsäquivalent für Linux? Ich möchte nicht, dass ein Frontserver physisch (netzwerkweise) vor den Maschinen sitzt (wie es bestimmte Hardware-LBs und Linux Virtual Server AFAIK tun). Ich möchte etwas, das sich ähnlich wie die NLB von Microsoft verhält: Wählen Sie N Knoten aus, alle lauschen auf derselben IP und teilen die eingehenden Anforderungen auf.

MichaelGG
quelle
Welche Art von Datenverkehr versuchen Sie zum Lastausgleich (HTTP / S)?
Shaun Hess
3
"nur" ... hahahaha
womble
OK, ja, NLB kann manchmal schwierig einzurichten sein. Aber vorausgesetzt, Sie haben die Netzwerkkarten zuvor richtig eingerichtet ... es ist ziemlich einfach zu klicken.
MichaelGG
Ich mag NLB nicht, es ist ein Hack, der Multicast-Verkehr zu allen Ports im NLB-Server-Subnetz überflutet, also zu allen Ports.
Pieter

Antworten:

4

Hier sind einige, die die Leute in der Linux-Community recht gut finden (minus LVS auf Ihre Anfrage). Ich persönlich habe nur HAProxy verwendet, daher kann Ihr Kilometerstand variieren.

HAProxy
Balance

Unterstützt nur den Lastenausgleich für http / https-Anforderungen:

Pfund
PLB - Pure Load Balancer

Shaun Hess
quelle
Vielen Dank. Wenn sie sie betrachten, scheinen sie eine separate Box in das Bild zu setzen, nicht wahr? Wenn Sie den Frontend-Server haben, der das Layer2-Paket neu schreibt, muss die Serverantwort entweder physisch durch die Frontend-Box geleitet werden oder Direct Server Return verwenden (wie z. B. eine Foundry). Während NLB einfach auf jedem Host selbst ausgeführt wird. Aber ich werde mehr graben - vielleicht verstehe ich etwas falsch.
MichaelGG
Fügen Sie Ultramonkey zu dieser Liste hinzu. Es verwendet LVS, benötigt jedoch keinen separaten Zeugenserver.
Gbjbaanb
8

siehe: http://lnlb.sourceforge.net/

Scheint genau das zu sein, wonach Sie fragen.

Diese Seite fasst es wie folgt zusammen: eine gemeinsame IP, die von allen Knoten gemeinsam genutzt wird (auf einer virtuellen Schnittstelle). Alles was Sie tun müssen, ist an die virtuelle Schnittstelle zu binden, der Treiber erledigt den Rest.

Es klingt sehr nach Windows NLB.

John Ranger
quelle
6
Ich fand seine Antwort hilfreich, es ist genau das, wonach ich gesucht habe. Ich sehe nicht, wie die Frage, 5 Jahre alt zu sein, etwas ändert. Jeder, der jetzt auf diese Frage stößt, kann sehen, dass es eine Lösung gibt, die laut seiner Webseite ziemlich beeindruckend klingt.
MichaelGG
Leider hat lnlb seit langer Zeit kein Update mehr gesehen und hängt von der Kernel-Unterstützung ab.
eckes
4
  • Wenn Sie an BSD-Lösungen interessiert sind - siehe CARP, Linux, wie ich gerade herausgefunden habe, hat einen Port namens UCARP
  • Informationen zum Lastenausgleich auf DNS-Ebene finden Sie unter CDN rfc3568, aber Vorsicht - DNS-lb ist ein bisschen inert
  • LVS ist immer noch ziemlich gut - probieren Sie es aus
SaveTheRbtz
quelle
1

Round-Robin-DNS wäre die einfachste Lösung, aber möglicherweise ist es für Ihre Anforderungen zu einfach.

Sven
quelle
Ja, DNS würde nicht funktionieren. Dies setzt voraus, dass Sie über ausreichend intelligente Clients verfügen, die tatsächlich DNS verwenden. Viele Dienste gehen einfach direkt auf die IP.
MichaelGG
Sie können stattdessen Round-Robin-Sitzungen für den Switch festlegen.
Gbjbaanb
0

LVS ist immer noch der richtige Weg - Sie müssen es nicht auf separater Hardware installieren, damit eingehende Anforderungen ausgeglichen werden. Tatsächlich betrachten Sie die Load-Balancer- und Back-End-Dienste immer noch als separate Dinge, aber sie werden zufällig auf denselben physischen Hosts installiert.

womble
quelle
Oh, ich wusste nicht, dass Sie virtuell und real auf derselben Box sitzen können.
MichaelGG
Ja, aber Sie können es nicht auf beiden realen Servern haben (zumindest nicht auf anaktive / aktive Weise wie NLB).
eckes