Es gibt verschiedene Möglichkeiten, um die HA (Hochverfügbarkeit) eines Load Balancers zu erreichen - oder in Bezug auf einen Dienst. Nehmen wir an, Sie haben zwei Computer mit IP-Adressen:
- 192.168.100.101
- 192.168.100.102
Benutzer stellen eine Verbindung zu einer IP-Adresse her. Sie möchten also die IP-Adresse von einer bestimmten Box trennen - z. B. eine virtuelle IP-Adresse erstellen. Diese IP wird 192.168.100.100 sein.
Jetzt können Sie den HA-Dienst auswählen, der das automatische Failover / Failback der IP-Adresse übernimmt. Einige der einfachsten Dienste für Unix sind (u) carp und keepalived, einige der komplexeren sind beispielsweise RedHat Cluster Suite oder Pacemaker.
Nehmen wir als Beispiel keepalived - zwei keepalived-Dienste, von denen jeder auf einer eigenen Box ausgeführt wird - und die miteinander kommunizieren. Diese Kommunikation wird oft als Herzschlag bezeichnet.
| VIP | | |
| Box A | ------v^-----------v^---- | Box B |
| IP1 | | IP2 |
Wenn ein Keepalived nicht mehr reagiert (entweder der Dienst fällt aus irgendeinem Grund aus oder die Box springt ab oder fährt herunter), bemerkt Keepalived auf einem anderen Rechner einen fehlenden Heartbeat und geht davon aus, dass der andere Knoten tot ist, und führt Failover-Aktionen aus. Diese Aktion wird in unserem Fall die Floating-IP ansprechen.
| VIP |
------------------ -------------- | Box B |
| IP2 |
Das Schlimmste, was in diesem Fall passieren kann, ist der Verlust von Sitzungen für Clients, die jedoch wieder eine Verbindung herstellen können. Wenn Sie dies vermeiden möchten, müssen zwei Load Balancer in der Lage sein, Sitzungsdaten zwischen ihnen zu synchronisieren, und wenn dies möglich ist, bemerken die Benutzer nichts, außer möglicherweise eine kurze Verzögerung.
Ein weiterer Nachteil dieses Setups ist das geteilte Gehirn - wenn beide Boxen online sind, die Verbindung jedoch getrennt ist und beide Boxen dieselbe IP-Adresse aufweisen. Dies wird häufig durch eine Art Fencing-Mechanismus (SCSI-Reservierung, IPMI-Neustart, Stromausfall der intelligenten PDU, ...) oder durch eine ungerade Anzahl von Knoten behoben, bei denen die Mehrheit der Cluster-Mitglieder am Leben bleiben muss, damit der Dienst gestartet werden kann.
| VIP | | VIP |
| Box A | | Box B |
| IP1 | | IP2 |
Komplexere Cluster-Management-Software (wie Pacemaker) kann den gesamten Dienst verschieben (z. B. auf einem Knoten anhalten und auf einem anderen starten) - und auf diese Weise kann HA für Dienste wie Datenbanken erreicht werden.
Eine andere Möglichkeit - wenn Sie Router in der Nähe Ihrer Load Balancer steuern, ist die Verwendung von ECMP. Mit diesem Ansatz können Sie Load Balancer auch horizontal skalieren. Dies funktioniert, indem jede Ihrer beiden Boxen BGP mit Ihren Routern spricht. Jede Box muss eine virtuelle IP (192.168.100.100) ankündigen und der Router wird den Datenverkehr über ECMP ausgleichen. Wenn eine Maschine abstürzt, hört sie auf, VIP-Werbung zu schalten, was wiederum Router davon abhält, Datenverkehr an sie zu senden. Das einzige, worauf Sie in diesem Setup achten müssen, ist, die IP-Werbung zu beenden, wenn der Load Balancer selbst abstirbt.