Einführung
Die Lastverteilung ist ein Schlüsselelement hochverfügbarer Infrastrukturen, die häufig verwendet wird, um die Leistung und Zuverlässigkeit von Websites, Anwendungen, Datenbanken und anderen Diensten durch Verteilung der Arbeitslast auf mehrere Server zu verbessern.
A web infrastructure with no load balancing might look something like the following:
In diesem Beispiel verbindet sich der Benutzer direkt mit dem Webserver unter yourdomain.com. Wenn dieser einzelne Webserver ausfällt, kann der Benutzer nicht mehr auf die Website zugreifen. Darüber hinaus, wenn viele Benutzer gleichzeitig auf den Server zugreifen und er die Last nicht bewältigen kann, können sie langsame Ladezeiten erleben oder überhaupt keine Verbindung herstellen.
Dieser einzelne Ausfallpunkt kann durch Einführung eines Lastenausgleichs und mindestens eines zusätzlichen Webservers auf der Backend-Ebene gemildert werden. Typischerweise liefern alle Backend-Server identische Inhalte, so dass Benutzer unabhängig davon, auf welchen Server sie reagieren, konsistente Inhalte erhalten.
In dem oben dargestellten Beispiel greift der Benutzer auf den Lastenausgleicher zu, der die Anforderung des Benutzers an einen Backend-Server weiterleitet, der dann direkt auf die Anforderung des Benutzers antwortet. In diesem Szenario ist der einzige Ausfallpunkt nun der Lastenausgleicher selbst. Dies kann durch Einführung eines zweiten Lastenausgleichs gemildert werden, aber bevor wir das diskutieren, wollen wir untersuchen, wie Lastenausgleicher funktionieren.
Welche Art von Datenverkehr können Lastenausgleichsgeräte verarbeiten?
Administratoren von Lastenausgleichsgeräten erstellen Weiterleitungsregeln für vier Hauptarten von Datenverkehr:
- HTTP — Standardmäßiges HTTP-Lastenausgleich leitet Anfragen basierend auf standardmäßigen HTTP-Mechanismen weiter. Der Lastenausgleich setzt die
X-Forwarded-For
,X-Forwarded-Proto
undX-Forwarded-Port
Header, um den Backends Informationen über die ursprüngliche Anfrage zu geben. - HTTPS — HTTPS-Lastenausgleich funktioniert genauso wie HTTP-Lastenausgleich, mit dem Zusatz von Verschlüsselung. Die Verschlüsselung wird auf zwei Arten behandelt: entweder mit SSL-Weiterleitung, die die Verschlüsselung bis zum Backend aufrechterhält, oder mit SSL-Terminierung, die die Entschlüsselungslast auf den Lastenausgleich legt, aber den Datenverkehr unverschlüsselt an das Backend sendet.
- TCP — Für Anwendungen, die kein HTTP oder HTTPS verwenden, kann auch TCP-Verkehr ausgeglichen werden. Zum Beispiel könnte der Verkehr zu einem Datenbankcluster auf alle Server verteilt werden.
- UDP — In letzter Zeit haben einige Lastenausgleichsgeräte Unterstützung für das Lastenausgleichen von Kern-Internetprotokollen wie DNS und syslogd hinzugefügt, die UDP verwenden.
Diese Weiterleitungsregeln definieren das Protokoll und den Port auf dem Lastenausgleichsgerät selbst und ordnen sie dem Protokoll und dem Port zu, den der Lastenausgleichsgerät zum Weiterleiten des Datenverkehrs an das Backend verwenden wird.
Wie wählt der Lastenausgleicher den Backend-Server aus?
Lastenausgleicher wählen den Server, an den eine Anfrage weitergeleitet werden soll, basierend auf einer Kombination von zwei Faktoren aus. Zuerst stellen sie sicher, dass jeder wählbare Server tatsächlich angemessen auf Anfragen antwortet, und verwenden dann eine vorab konfigurierte Regel, um aus diesem gesunden Pool auszuwählen.
Gesundheitsprüfungen
Lastenausgleicher sollten den Datenverkehr nur an „gesunde“ Backend-Server weiterleiten. Um die Gesundheit eines Backend-Servers zu überwachen, versuchen Gesundheitsprüfungen regelmäßig, eine Verbindung zu Backend-Servern unter Verwendung des Protokolls und Ports herzustellen, die durch die Weiterleitungsregeln definiert sind, um sicherzustellen, dass die Server lauschen. Wenn ein Server eine Gesundheitsprüfung nicht besteht und daher keine Anfragen bedienen kann, wird er automatisch aus dem Pool entfernt, und der Datenverkehr wird nicht mehr an ihn weitergeleitet, bis er wieder auf die Gesundheitsprüfungen reagiert.
Load-Balancing-Algorithmen
Der verwendete Lastenausgleichsalgorithmus bestimmt, welcher der gesunden Server im Backend ausgewählt wird. Einige der häufig verwendeten Algorithmen sind:
Round Robin — Round Robin bedeutet, dass die Server sequentiell ausgewählt werden. Der Lastenausgleicher wählt den ersten Server in seiner Liste für die erste Anfrage aus und bewegt sich dann in der Reihenfolge nach unten, beginnend von oben, wenn er das Ende erreicht.
Least Connections — Least Connections bedeutet, dass der Lastenausgleicher den Server mit den wenigsten Verbindungen auswählt und empfohlen wird, wenn der Datenverkehr zu längeren Sitzungen führt.
Source — Mit dem Source-Algorithmus wählt der Lastenausgleicher den Server basierend auf einem Hash der Quell-IP der Anfrage aus, wie z. B. der IP-Adresse des Besuchers. Diese Methode stellt sicher, dass ein bestimmter Benutzer immer eine Verbindung zum selben Server herstellt.
Die den Administratoren zur Verfügung stehenden Algorithmen variieren je nach der spezifischen Lastenausgleichstechnologie, die verwendet wird.
Wie behandeln Lastenausgleicher den Status?
Einige Anwendungen erfordern, dass ein Benutzer weiterhin mit demselben Backend-Server verbunden bleibt. Ein Source-Algorithmus erzeugt eine Affinität basierend auf Client-IP-Informationen. Eine andere Möglichkeit, dies auf der Webanwendungsebene zu erreichen, sind klebrige Sitzungen, bei denen der Lastenausgleicher ein Cookie setzt und alle Anfragen aus dieser Sitzung an denselben physischen Server gerichtet werden.
Redundante Lastenausgleicher
Um den Lastenausgleicher als einzelnen Ausfallpunkt zu entfernen, kann ein zweiter Lastenausgleicher mit dem ersten verbunden werden, um einen Cluster zu bilden, in dem jeder den Gesundheitszustand der anderen überwacht. Jeder ist gleichermaßen in der Lage, Fehler zu erkennen und sich zu erholen.
Im Falle eines Ausfalls des Hauptlastenausgleichers muss das DNS die Benutzer zum zweiten Lastenausgleicher führen. Da DNS-Änderungen eine beträchtliche Zeit benötigen, um im Internet verbreitet zu werden, und um diesen Failover automatisch zu gestalten, verwenden viele Administratoren Systeme, die eine flexible Remapping von IP-Adressen ermöglichen, wie z. B. Reservierte IPs. Die Remapping von IP-Adressen auf Abruf beseitigt die mit DNS-Änderungen verbundenen Verbreitungs- und Zwischenspeicherprobleme, indem eine statische IP-Adresse bereitgestellt wird, die bei Bedarf einfach remapped werden kann. Der Domainname kann mit derselben IP-Adresse verbunden bleiben, während die IP-Adresse selbst zwischen Servern verschoben wird.
So könnte eine hochverfügbare Infrastruktur unter Verwendung von Reservierten IPs aussehen:
Abschluss
In diesem Artikel haben wir einen Überblick über Lastenausgleicher-Konzepte und deren allgemeine Funktionsweise gegeben. Um mehr über spezifische Lastenausgleichstechnologien zu erfahren, könnten Sie sich folgende ansehen:
DigitalOcean-Dienst für Lastenausgleich
- So erstellen Sie Ihren ersten DigitalOcean-Lastenausgleich
- So konfigurieren Sie SSL-Passthrough auf DigitalOcean-Lastenausgleichern
- So konfigurieren Sie SSL-Terminierung auf DigitalOcean-Lastenausgleichern
- So balancieren Sie den TCP-Verkehr mit DigitalOcean-Lastenausgleichern aus
HAProxy
- Eine Einführung in HAProxy und Lastenausgleichskonzepte
- So richten Sie hochverfügbare HAProxy-Server mit Keepalived und reservierten IPs unter Ubuntu 14.04 ein
- WordPress mit HAProxy ausbalancieren
Nginx
Source:
https://www.digitalocean.com/community/tutorials/what-is-load-balancing