Lastverteilung ist entscheidend für den Bau zuverlässige verteilte Systeme, optimiert die Arbeitslastverteilung auf verschiedene Computerressourcen wie Computer, Cluster und Netzwerkverbindungen. Ziel ist die Verbesserung „Ressourcen“ Auslastung, maximieren den Durchsatz, minimieren die Reaktionszeit und verhindern die Überlastung einzelner Ressourcen. Die Verwendung mehrerer Komponenten mit Lastausgleich erhöht die Zuverlässigkeit und Verfügbarkeit durch Redundanz. Normalerweise umfasst der Lastausgleich spezielle Software oder Hardware, wie z. B. Mehrschichtschalter oder die Domain Name System Server-Prozess.
Im Kern sitzt ein Load Balancer zwischen Clients und Backends und führt wichtige Funktionen aus:
Serviceerkennung
Identifizierung verfügbarer Backends und ihrer Adressen für die Kommunikation.
Gesundheitscheck
Bewerten der Integrität und Bereitschaft von Backends, Anfragen anzunehmen.
Lastausgleich
Verteilen Sie einzelne Anfragen mithilfe von Algorithmen auf fehlerfreie Backends. Die Nutzung des Lastenausgleichs in verteilten Systemen bietet mehrere Vorteile:
Namensabstraktion
Clients können den Load Balancer ansprechen, anstatt jedes Backend zu kennen und die Namensauflösung zu delegieren.
Fehlertoleranz
Durch Integritätsprüfungen und Algorithmen kann ein Load Balancer Probleme mit fehlerhaft funktionierenden oder überlasteten Backends umgehen, sodass die Betreiber die Probleme zu einem für sie passenden Zeitpunkt beheben können.
Leistungs- und Kostenvorteile
Durch Lastenausgleich kann der Anforderungsverkehr innerhalb von Zonen lokalisieren, wodurch die Latenzzeit verringert und die Gesamtsystemkosten durch Optimierung des Bandbreitenverbrauchs minimiert werden.
Load Balancer im Vergleich zu Proxy
In Diskussionen über Netzwerk-Load Balancer werden die Begriffe „Load Balancer“ und „Proxy“ in der Branche oft synonym verwendet. In diesem Beitrag werden diese Begriffe als im Wesentlichen gleichwertig betrachtet. Zwar dienen nicht alle Proxys als Load Balancer, aber die Mehrheit der Proxys fungiert in erster Linie als Load Balancer.
L4-Lastausgleich
Im heutigen Diskurs über Lastausgleich innerhalb der Branche werden Lösungen üblicherweise in zwei Hauptkategorien unterteilt: L4 und L7. Diese beziehen sich auf die Schichten 4 und 7 des OSI Modell. Dieses Modell bietet zwar einen Rahmen, erfasst jedoch nicht vollständig die Komplexität moderner Lastausgleichslösungen.
L4-Load Balancer arbeiten typischerweise auf der TCP / UDP Verbindungs-/Sitzungsebene, wobei im Wesentlichen Bytes neu sortiert werden, um sicherzustellen, dass sie das richtige Backend erreichen. Dabei werden jedoch die spezifischen Anwendungsdetails dieser Bytes nicht berücksichtigt, die aus verschiedenen Protokollen wie HTTP, Redis oder MongoDB stammen können.
L7-Lastausgleich
Da alle modernen Protokolle aus Effizienzgründen immer mehr auf Multiplexing und dauerhafte Verbindungen setzen, insbesondere mit dem Aufwand für die Erstellung verschlüsselter TLS-Verbindungen, wird die Diskrepanz mit L4-Load Balancern mit der Zeit immer deutlicher. Dieses Problem wird durch L7-Load Balancer behoben, die erhebliche Vorteile bieten, indem sie die Überprüfung des Anwendungsverkehrs ermöglichen.
L7 umfasst gemäß dem OSI-Modell verschiedene Schichten der Lastausgleichsabstraktion. Beim Umgang mit HTTP-Verkehr gibt es beispielsweise die folgenden Unterschichten:
Optionale Transport Layer Security (TLS), das wir trotz anhaltender Debatten unter Netzwerkexperten für diese Diskussion als L7 betrachten werden.
Das physische HTTP-Protokoll (HTTP/1 oder HTTP/2).
Das logische HTTP-Protokoll, einschließlich Header, Body-Daten und Trailer.
Messaging-Protokolle Google Trends, Amazons Bestseller gRPC, REST, usw.
Ausgefeilte L7-Load Balancer bieten möglicherweise Funktionen für jede dieser Unterebenen, während andere sich auf eine kleinere Teilmenge konzentrieren und sie dennoch in die Kategorie L7 einordnen. Im Vergleich zur Kategorie L4 ist die Landschaft der L7-Load Balancer aus Funktionssicht viel komplexer. Und es ist wichtig zu beachten, dass sich diese Diskussion ausschließlich auf HTTP konzentriert hat; andere L7-Anwendungsprotokolle wie Redis, Kafka, MongoDB usw. profitieren ebenfalls vom L7-Load Balancing.
Relevanz von L4 Load Balancern
Trotz der Erwartung, dass L7-Load Balancer letztendlich L4-Load Balancer für die Kommunikation zwischen Diensten ersetzen werden, bleiben L4-Load Balancer weiterhin von großer Bedeutung, insbesondere am Rande von große verteilte Architekturen.
Das Platzieren dedizierter L4-Load Balancer vor L7-Load Balancern am Edge bietet mehrere Vorteile:
L7-Load Balancer verarbeiten im Vergleich zu optimierten L4-Load Balancern einen kleineren Anteil der Rohverkehrslast aufgrund ihrer ausgefeilten Analyse, Transformation und Weiterleitung des Anwendungsverkehrs. Dies macht L4-Load Balancer effektiver im Umgang mit bestimmten Arten von DoS-Angriffe, wie etwa SYN-Floods und generische Packet-Flood-Angriffe.
L7-Load Balancer unterliegen einer aktiveren Entwicklung, Bereitstellung und Fehlerhäufigkeit als L4-Load Balancer. Ein L4-Load Balancer vor vereinfacht die Bereitstellung Prozesse während der Bereitstellung des L7-Load Balancers.
Aufgrund der Komplexität der Funktionalität von L7-Load Balancern sind sie anfälliger für Fehler. Ein L4-Load Balancer, der Fehler und Anomalien umgehen kann, trägt zu einer stabileres Gesamtsystem.
Load Balancer-Topologien
Die mittlerer Proxy Topologie ist oft am einfachsten zu implementieren. Sie ist jedoch anfällig für einzelne Ausfallpunkte, weist Einschränkungen bei der Skalierbarkeit auf und arbeitet undurchsichtig.
Die Edge-Proxy Die Topologie weist Ähnlichkeiten mit dem mittleren Proxy auf, ist jedoch normalerweise unvermeidbar.
Die eingebettete Client-Bibliothek Topologie bietet überlegene Leistung und Skalierbarkeit. Dennoch erfordert sie eine Implementierung in jeder Sprache und erfordert Bibliotheksaktualisierungen für alle Dienste.
Die Sidecar-Proxy Die Topologie erreicht möglicherweise nicht die Leistung der Topologie der eingebetteten Client-Bibliothek, weist jedoch keine deren Einschränkungen auf.
Globales Load-Balancing
Die Entwicklung des Lastenausgleichs wird zu einer Verschiebung in Richtung der Behandlung einzelner Lastenausgleichsmodule als standardisierte Waren führen. Das wahre Innovations- und Geschäftspotenzial konzentriert sich auf die Steuerebene. Globale Load Balancer werden zunehmend über Fähigkeiten verfügen, die über die eines einzelnen Load Balancers hinausgehen. Zum Beispiel:
Automatisches Identifizieren und Umleiten des Verkehrs um Ausfälle in bestimmten Zonen herum.
Implementierung globaler Sicherheitsprotokolle und Routing-Richtlinien.
Identifizieren und Eindämmen unregelmäßiger Verkehrsmuster, wie z. B. DDoS-Angriffe, durch maschinelles Lernen und neuronale Netzwerke.
Bietet zentralisierte Benutzeroberflächen und Visualisierungen für ein umfassendes Verständnis und die Verwaltung des gesamten verteilten Systems.
Um einen globalen Lastausgleich zu ermöglichen, müssen die als Datenebene fungierenden Lastverteiler Folgendes aufweisen: Erweiterte dynamische Konfigurationsfunktionen.
Einige Schlussfolgerungen
Lastverteiler spielen in modernen verteilten Systemen eine entscheidende Rolle. Sie werden normalerweise in zwei Klassen eingeteilt: L4 und L7. Sowohl L4- als auch L7-Lastverteiler sind in modernen Architekturen von Bedeutung. L4-Lastverteiler entwickeln sich in Richtung horizontal skalierbarer verteilter konsistenter Hashing-Lösungen, während in L7-Lastverteiler derzeit erhebliche Investitionen getätigt werden, was auf die weit verbreitete Einführung dynamischer Microservice-Architekturen zurückzuführen ist.
Die Zukunft des Lastenausgleichs liegt im globalen Lastenausgleich und der Trennung zwischen Kontrollebene und Datenebene. Hier werden die meisten künftigen Innovationen und kommerziellen Aussichten entstehen.
Die Branche vollzieht einen raschen Übergang hin zur Nutzung von Open-Source-Software (OSS) und Standardhardware für Netzwerklösungen.
Konventionelle Load Balancing-Anbieter werden als erstes ersetzt durch OSS-Software und Cloud Anbieter.
Die RELIANOID Die Lösung ist für jeden Bedarf geeignet, mit einer Mehrschichtiger Application Delivery Controller: Vollständige Application Delivery Controller-Lösung mit der Fähigkeit, als Lastenausgleich und hochverfügbarer Dienst auf verschiedenen Ebenen (L2, L3, L4 und L7) zu fungieren und vor Ort, virtuell und in der Cloud bereitgestellt zu werden.