Ein Load Balancer ist ein Gerät, welches als Reverse Proxy dient und Netzwerk- oder Programmdatenverkehr über mehrere Server gleichmäßig verteilt.
Wofür werden Load Balancer verwendet?
Load Balancer werden verwendet, um die Kapazität (simultane User) und die Zuverlässigkeit der Programme zu erhöhen. Sie verbessern die Gesamtleistung von Programmen, indem sie die Auslastung von Servern verringern, die mit der Verwaltung und Wartung von Anwendungs- und Netzwerksitzungen verbunden sind, sowie durch die Ausführung von anwendungsspezifischen Aufgaben.
Load Balancer werden im Allgemeinen in zwei Kategorien unterteilt: Layer 4 und Layer 7. Layer 4 Load Balancer wirken auf Daten, die in Netzwerk- und Transportschichtprotokollen (IP, TCP, FTP, UDP) gefunden werden. Layer 7 Load Balancer verteilen Anforderungen basierend auf Daten, die in Anwendungsschichtprotokollen wie HTTP gefunden werden.
Anfragen werden von beiden Arten von Load Balancern empfangen und sie werden auf einem bestimmten Server, basierend auf einem speziell konfigurierten Algorithmus, verteilt.
Einige Industrie-Standard-Algorithmen sind:
round robin – (Jedem konkurrierenden Prozess werden begrenzte Ressourcen für die gleiche Zeit zugeteilt)
weighted round robin – (Hier sind die Zeitspannen für die Zuteilung der Ressourcen unterschiedlich groß)
least connections – (Ist die Verteilung nach bestehenden Verbindungen bei 2 oder mehr Servern)
least response time – (Hier wird der Dienst mit den geringsten Verbindungen und der geringsten Reaktionszeit ausgewählt)
Layer 7 Load Balancer können weiterhin Anforderungen auf der Grundlage von programmspezifischen Daten wie „HTTP Header“, „Cookies“ oder Daten innerhalb der Anwendungsnachricht selbst verteilen, wie beispielsweise den Wert eines spezifischen Parameters.
Serverseitige Lastverteiler
Bei Internetdiensten ist der serverseitige Load Balancer normalerweise eine Software, die auf Ports hört, mit denen externe Clients eine Verbindung zu den Zugangsdiensten herstellen. Der Load Balancer leitet Anforderungen an einen der Backend-Server weiter, der üblicherweise auf den Load Balancer antwortet. Dies ermöglicht es dem Load Balancer, auf den Client zu antworten, ohne, dass der Client jemals über die interne Trennung von Funktionen Bescheid weiß.
Darüber hinaus wird verhindert, dass Kunden direkt mit Back-End-Servern verbunden werden, die Sicherheitsvorteile haben können, indem sie die Struktur des internen Netzwerks verbergen, sowie Angriffe auf den Netzwerkstapel des Kernels oder auf andere Ports ausgeführte, unabhängige Dienste verhindern.
Einige Load Balancer bieten einen Mechanismus, um etwas Spezielles zu tun, falls alle Back-End-Server nicht verfügbar sind. Dies kann eine Weiterleitung an einen Back-up Load Balancer oder das Anzeigen einer Meldung bezüglich des Ausfalls implementieren.
Es ist auch wichtig, dass der Load Balancer selbst nicht zu einem einzigen Ausfallpunkt wird. Normalerweise werden Load Balancer in Hochverfügbarkeitspaaren implementiert, die auch Session-Persistenzdaten replizieren können, wenn das von der spezifischen Anwendung erforderlich ist.
Load Balancer sorgen für Zuverlässigkeit und Verfügbarkeit, indem sie die „Gesundheit“ von Anwendungen überwachen und nur Anforderungen an Server und Programme senden, die rechtzeitig reagieren können.
Was ist der Unterschied zwischen einer Hardware- und einer Softwarelösung eines Load Balancers?
Load Balancing Hardware wird oft als spezieller Router oder Switch bezeichnet, der zwischen den Servern und den Clients bereitgestellt wird. Es kann auch ein dediziertes System zwischen dem Client und dem Server sein und die Last auszugleichen.
Software Balancer implementieren allgemein eine Kombination aus einem oder mehreren Scheduling-Algorithmen. Software Balancer können auf allen gängigen virtuellen Plattformen wie: VMware ESX/ESXi, MS Hyper-V, Oracle VirtualBox, Citrix YenServer und anderen in Betrieb genommen werden.
Leider sind diese empfindlich bei Softwareupdates innerhalb des OS.