Kann ich mit Unix zwei Linux-Server ausgleichen?

7

Ich versuche, eine Lösung in meinem Kopf zu finden, bei der zwei Back-End-Linux-Server HTTP, SMTP, XMPP gespiegelt ausführen und Verbindungen zwischen ihnen ausgleichen sollten.

Meine derzeitige Lösung ist eine OpenBSD-Box im Voraus, die natürlich mit Karpfen erweitert werden kann, um in Zukunft weitere hinzuzufügen, um einen einzelnen Fehlerpunkt zu vermeiden. Mit PF könnte ich einen Pool von Servern haben, an die Datenverkehr mit zufälligen oder Round-Robin-Methoden gesendet werden kann.

Und mit Relayd kann ich nicht funktionierende Pool-Server daraus entfernen.

Aber ich würde die Meinung der Community zu diesem Thema schätzen. Bitte teilen Sie mir Ihre beste Unix-Lastausgleichslösung für diese Art von Umgebung mit.

Ein Ziel wäre, dass ein einzelner Server mit minimaler Dienstunterbrechung ausfallen darf.

Stefan Midjich
quelle
Was ist, wenn die BSD-Box vor diesen beiden Backend-Boxen ausfällt? Redundanz bedeutet nicht "Verschieben Sie den einzelnen Fehlerpunkt einen Schritt nach unten".
Shadur
1
Deshalb habe ich Karpfen erwähnt, und tatsächlich habe ich meine Lösung dahingehend geändert, dass zwei davon gleichzeitig eingerichtet wurden.
Stefan Midjich

Antworten:

1

Ich bin nur mit einer reinen Linux-Kombination aus Heartbeat und ldirector vertraut (beide sind Teil des virtuellen Linux-Serverprojekts für den IP-Tunnelverkehr von zwei Frontends zu N Backends und für die Freigabe / den Austausch einer Frontend-IP zwischen zwei Frontends, wenn eines stirbt. Es hat in der von mir verwendeten Umgebung sehr gut funktioniert, aber ich bin mir nicht sicher, ob es anfällig für Split-Brain-Probleme ist.

jmtd
quelle
1

HAProxy wurde auf einer Reihe von * nix-Plattformen kompiliert, einschließlich BSDs und Solaris (und natürlich Linux). Wenn auf Ihrem Load Balancer kein Linux ausgeführt wird, handelt es sich um eine sehr praktische und konfigurierbare Software. Es kennt sich mit HTTP aus, kann aber auch jeden TCP-Dienst ausgleichen, von dem es nichts weiß. Es kann Server überprüfen und alle aus dem Dienst nehmen, die nicht reagieren (oder nicht genug reagieren).

Es lebt hier: http://haproxy.1wt.eu/

Es gibt einen Nachteil: Es kommuniziert nur über IPv4 mit den internen (Back-End-) Servern (eingehende IPv6-Verbindungen sind in Ordnung, es ist nur die interne Verbindung, die auf IPv4 beschränkt ist). Wenn sich Ihre Serverfarm in einem Dual-Stack-Setup befindet, ist dies kein Problem.

Alexios
quelle
0

Wir verwenden zwei virtuelle CentOS 5-Server, auf denen lvs, lvs-kiss und heartbeat ausgeführt werden. Die virtuellen Server befinden sich selbst in einem XEN-Cluster, der ein Failover an einen anderen Speicherort durchführen kann.

Einer der LVS-Server ist der aktive Master, der andere der Slave. Auf beiden Diensten werden beide Prozesse (Master und Slave) permanent ausgeführt, sodass Sitzungen ständig repliziert werden.

Wenn der aktive lvs-Server ausfällt, übernimmt der andere und übernimmt nahtlos die lb-Verbindung zum vorherigen Zielserver.

Nils
quelle
0

Eine weitere aktuelle Option unter Linux ist das IPVS-Projekt, das jetzt im Linux-Kernel v2.6.38-rc3 oder höher enthalten ist.

Es verwendet Layer 4-Switching im Kernel und soll - FAST sein.

Weitere Informationen finden Sie hier http://kb.linuxvirtualserver.org/wiki/IPVS

zusammenarbeiten
quelle
Diese Antwort ist richtig, aber IPVS war schon vor 2.6.38 in der Nähe.
Patrick
0

Der vollständigste Weg, dies zu tun, ist die Verwendung von Pacemaker + LVS.

LVS ist die Abkürzung für Linux Virtual Server. Viele Informationen finden Sie unter linux-ha.org. Grundsätzlich verfügt der Linux-Kernel über einen integrierten Load Balancer namens IPVS. Als solches ist es sehr gut getestet und unterstützt. Es gibt es auch schon eine lange Zeit (Kernel 2.0 Tage, glaube ich).
Es gibt zahlreiche Dienstprogramme zum Verwalten des Load Balancers, z. B. ldirector und piranha. Ldirector ist wahrscheinlich der prominenteste. Diese Dienstprogramme sind dafür verantwortlich, Ihre Back-End-Server regelmäßig auf ihren Zustand zu überprüfen und sicherzustellen, dass sie noch vorhanden sind und ordnungsgemäß funktionieren. Sollte sich herausstellen, dass der Server nicht mehr vorhanden ist, wird dieser Server aus der IPVS-Tabelle des Kernels entfernt und effektiv aus dem Pool entfernt. Diese Dienstprogramme sind keinesfalls erforderlich, da Sie mit direkt mit der IPVS-Tabelle kommunizieren können ipvsadm.

Pacemaker ist der Nachfolger von Heartbeat, das seit langem das Standarddienstprogramm für Clustering ist. Heartbeat wurde zugunsten von Pacemaker abgelehnt (Heartbeat wird nicht mehr beibehalten). Sie können Heartbeat also weiterhin verwenden, wenn Sie dies wünschen (die Konfiguration ist definitiv einfacher). Das Ende steht jedoch bevor.
Der Grund, warum ich dieses Dienstprogramm erwähne, ist, dass Sie ohne ein Paar Load Balancer vorne nur den Single-Point-of-Failure an einen anderen Ort verschieben. Anstatt dass ein einzelner Backend-Server ausfallen kann, kann jetzt ein einzelner Load Balancer ausfallen und Sie befinden sich im selben Boot. Pacemaker stellt sicher, dass immer ein Load Balancer ausgeführt wird. Sollte der derzeit aktive Load Balancer ausfallen, übernimmt der andere. Ein zusätzlicher Vorteil von Pacemaker besteht darin, dass Sie beide Load Balancer in einem Aktiv / Aktiv-Setup ausführen können, wenn Sie mehrere IPs haben (Heartbeat kann dies nicht).

Patrick
quelle