Was ist Lastausgleich?

Einführung

Der Lastenausgleich ist eine Schlüsselkomponente von hochverfügbaren Infrastrukturen, die häufig verwendet werden, um die Leistung und Zuverlässigkeit von Websites, Anwendungen, Datenbanken und anderen Diensten zu verbessern, indem die Arbeitslast auf mehrere Server verteilt wird.

Eine Webinfrastruktur ohne Lastenausgleich sieht möglicherweise folgendermaßen aus:

web_server

In diesem Beispiel stellt der Benutzer unteryourdomain.com eine direkte Verbindung zum Webserver her. Wenn dieser einzelne Webserver ausfällt, kann der Benutzer nicht mehr auf die Website zugreifen. Wenn viele Benutzer versuchen, gleichzeitig auf den Server zuzugreifen, und dieser die Last nicht verarbeiten kann, treten möglicherweise langsame Ladezeiten auf oder es kann überhaupt keine Verbindung hergestellt werden.

Dieser einzelne Fehlerpunkt kann durch die Einführung eines Lastenausgleichs und mindestens eines zusätzlichen Webservers im Backend behoben werden. In der Regel stellen alle Back-End-Server identische Inhalte bereit, sodass Benutzer konsistente Inhalte erhalten, unabhängig davon, welcher Server antwortet.

Diagram 01: Load Balancers / Top-to-bottom

In dem oben dargestellten Beispiel greift der Benutzer auf den Load Balancer zu, der die Benutzeranforderung an einen Back-End-Server weiterleitet, der dann direkt auf die Benutzeranforderung reagiert. In diesem Szenario ist der einzige Fehlerpunkt jetzt der Lastenausgleich selbst. Dies kann durch die Einführung eines zweiten Load Balancers abgemildert werden. Bevor wir jedoch darauf eingehen, wollen wir uns mit der Funktionsweise von Load Balancern befassen.

Mit welcher Art von Datenverkehr können Load Balancer umgehen?

Load Balancer-Administratoren erstellen Weiterleitungsregeln für vier Hauptverkehrsarten:

  • HTTP - Der Standard-HTTP-Ausgleich leitet Anforderungen basierend auf Standard-HTTP-Mechanismen. Der Load Balancer setzt die HeaderX-Forwarded-For,X-Forwarded-Proto undX-Forwarded-Port, um den Backends Informationen über die ursprüngliche Anforderung zu geben.

  • HTTPS - Der HTTPS-Ausgleich funktioniert genauso wie der HTTP-Ausgleich, mit zusätzlicher Verschlüsselung. Die Verschlüsselung erfolgt auf zwei Arten: entweder mitSSL passthrough, die die Verschlüsselung bis zum Backend aufrechterhält, oder mitSSL termination, die die Entschlüsselungslast für den Load Balancer darstellt, den Datenverkehr jedoch unverschlüsselt an das Back-End sendet .

  • TCP - Für Anwendungen, die kein HTTP oder HTTPS verwenden, kann der TCP-Verkehr auch ausgeglichen werden. Beispielsweise kann der Datenverkehr zu einem Datenbankcluster auf alle Server verteilt werden.

  • UDP - In jüngerer Zeit haben einige Load Balancer Unterstützung für Lastausgleichskern-Internetprotokolle wie DNS und syslogd hinzugefügt, die UDP verwenden.

Diese Weiterleitungsregeln definieren das Protokoll und den Port auf dem Load Balancer selbst und ordnen sie dem Protokoll und dem Port zu, die der Load Balancer zum Weiterleiten des Datenverkehrs an das Backend verwendet.

Wie wählt der Load Balancer den Backend-Server aus?

Load Balancer wählen den Server, an den eine Anfrage weitergeleitet werden soll, basierend auf einer Kombination von zwei Faktoren. Sie stellen zunächst sicher, dass jeder Server, den sie auswählen können, tatsächlich angemessen auf Anforderungen reagiert, und verwenden dann eine vorkonfigurierte Regel, um aus diesem fehlerfreien Pool auszuwählen.

Gesundheitschecks

Load Balancer sollten den Datenverkehr nur an "fehlerfreie" Backend-Server weiterleiten. Um den Zustand eines Back-End-Servers zu überwachen, wird bei Integritätsprüfungen regelmäßig versucht, eine Verbindung zu Back-End-Servern mithilfe des in den Weiterleitungsregeln definierten Protokolls und Ports herzustellen, um sicherzustellen, dass die Server empfangsbereit sind. Wenn ein Server eine Integritätsprüfung nicht besteht und daher keine Anforderungen bearbeiten kann, wird er automatisch aus dem Pool entfernt und der Datenverkehr wird erst an ihn weitergeleitet, wenn er erneut auf die Integritätsprüfungen reagiert.

Load-Balancing-Algorithmen

Der verwendete Lastausgleichsalgorithmus bestimmt, welcher der fehlerfreien Server im Backend ausgewählt wird. Einige der am häufigsten verwendeten Algorithmen sind:

Round Robin - Round Robin bedeutet, dass die Server nacheinander ausgewählt werden. Der Load Balancer wählt den ersten Server in seiner Liste für die erste Anforderung aus und bewegt sich dann in der Reihenfolge nach unten, beginnend am oberen Ende.

Least Connections - Am wenigsten Verbindungen bedeutet, dass der Load Balancer den Server mit den geringsten Verbindungen auswählt. Dies wird empfohlen, wenn der Datenverkehr zu längeren Sitzungen führt.

Source - Mit dem Quellalgorithmus wählt der Load Balancer anhand eines Hashs der Quell-IP der Anforderung, z. B. der IP-Adresse des Besuchers, den zu verwendenden Server aus. Diese Methode stellt sicher, dass ein bestimmter Benutzer eine konsistente Verbindung zum gleichen Server herstellt.

Die für Administratoren verfügbaren Algorithmen variieren je nach verwendeter Lastausgleichstechnologie.

Wie gehen Load Balancer mit dem Status um?

Bei einigen Anwendungen muss ein Benutzer weiterhin eine Verbindung zum gleichen Back-End-Server herstellen. Ein Quellalgorithmus erstellt eine Affinität basierend auf Client-IP-Informationen. Eine andere Möglichkeit, dies auf Webanwendungsebene zu erreichen, besteht insticky sessions, wo der Load Balancer ein Cookie setzt und alle Anforderungen aus dieser Sitzung an denselben physischen Server geleitet werden.

Redundante Lastverteiler

Um den Load Balancer als einzelne Fehlerquelle zu entfernen, kann ein zweiter Load Balancer mit dem ersten verbunden werden, um einen Cluster zu bilden, in dem jeder den Zustand des anderen überwacht. Jeder ist gleichermaßen in der Lage, Fehler zu erkennen und zu beheben.

Diagram 02: Cluster / Distributed

Für den Fall, dass der Hauptlastausgleich fehlschlägt, muss DNS Benutzer zum zweiten Lastausgleich führen. Da die Weitergabe von DNS-Änderungen im Internet und die automatische Automatisierung dieses Failovers einige Zeit in Anspruch nehmen kann, verwenden viele Administratoren Systeme, die eine flexible Neuzuordnung von IP-Adressen ermöglichen, z. B.floating IPs. Bei Bedarf beseitigt die Neuzuordnung von IP-Adressen die mit DNS-Änderungen verbundenen Probleme bei der Weitergabe und Zwischenspeicherung, indem eine statische IP-Adresse bereitgestellt wird, die bei Bedarf problemlos neu zugeordnet werden kann. Der Domänenname kann mit derselben IP-Adresse verknüpft bleiben, während die IP-Adresse selbst zwischen Servern verschoben wird.

So könnte eine hochverfügbare Infrastruktur mit Floating IPs aussehen:

Diagram 03: Floating IPs