Was ist ein Load Balancer? | Wie funktionieren Load Balancer?

Was ist ein Load Balancer? | Wie funktionieren Load Balancer?

Haben Sie sich jemals gefragt, wie eine Webanwendung skaliert werden kann, damit Millionen von Anwendern weltweit sie nutzen können? Um eine große Anzahl von Benutzeranfragen zu bedienen, müssen Webanwendungen ihre Dienste auf mehrere Instanzen verteilen. Dann fragen Sie sich vielleicht: Wie kann eine Anwendung die Benutzeranfragen gleichmäßig verteilen, sodass alle Anfragen mit höchster Effizienz bearbeitet werden können? Die kurze Antwort darauf: Load Balancing. Die vollständige Antwort lautet… nun, bitte nehmen Sie sich ein paar Minuten Zeit, um den Artikel durchzulesen! Sie erfahren alles über das Load Balancing: was ein Load Balancer ist, wie er funktioniert, seine Vorteile, Methoden des Load Balancings und wie Sie einen Load Balancer für Ihre Anwendungsfälle implementieren.

Was ist ein Load Balancer?

Ein Load Balancer ist ein Hardwaregerät oder eine Softwareanwendung, das oder die für die gleichmäßige Verteilung der Anfragen auf mehrere Anwendungsinstanzen zuständig ist. (Eine „Instanz” ist eine einzelne Bereitstellung einer Anwendung oder eines Dienstes auf einem Server.) Dadurch kann die Anwendung ein hohes Volumen an Anfragen effizient bewältigen.

Wenn eine zusätzliche Anwendungsinstanz eingeführt wird, verteilt der Load Balancer die Anfragen neu, um die neue Instanz einzubeziehen und so die Arbeitslast der bestehenden Instanzen zu verringern. Wenn eine Anwendungsinstanz ausfällt, werden alle Anfragen an die problematische Instanz auf andere operative Instanzen umverteilt. Dadurch ist die App hochverfügbar und fehlertolerant und bietet den Benutzern einen unterbrechungsfreien Dienst.

Load Balancer können in verschiedene Typen eingeteilt werden, je nachdem, wie sie eingehende Anfragen verwalten und neu verteilen. Die beiden primären Typen sind Network Load Balancer und Application Load Balancer. Eine andere Art der Kategorisierung ist die nach der physikalischen Art. In diesem Fall unterteilen wir sie in Hardware- und Software-Load Balancer. Schauen wir uns alle diese Möglichkeiten im Detail an.

Network Load Balancer

Network Load Balancer leiten die Anfragen auf einer Transportschicht, Schicht 4 des OSI-Modells (Open System Interconnection), weiter. Der Weiterleitungsmechanismus basiert ausschließlich auf Netzwerkattributen, wie den IP-Adressen der Clients und den entsprechenden Anwendungsinstanzen.

Network Balancer berücksichtigen den Inhalt der Anfragen nicht, wenn sie diese an die Anwendungsinstanzen weiterleiten, wodurch sie bei der Neuverteilung der Anfragen niedrige Latenzen erzielen können. Network Load Balancer eignen sich hervorragend für Anwendungen mit extremen Leistungsanforderungen, wie z.B. Streaming– oder Spieleanwendungen.

Application Load Balancer

Application Load Balancer leiten die Anfragen auf der Anwendungsschicht weiter, die auch als Schicht 7 des OSI-Modells bekannt ist. Sie untersuchen den Inhalt der Anfragen, unter anderem HTTP-Header, Anforderungspfade oder Anfragemethoden. Auf diese Weise kann der Application Load Balancer die Anfragen flexibel auf verschiedene Anwendungsinstanzen verteilen, um den Geschäftsanforderungen gerecht zu werden.

App Load Balancer eignen sich für E-Commerce-Anwendungen und Anwendungen in sozialen Netzwerken, die Unterstützung für benutzerdefinierte HTTP-Antworten und Integritätsprüfungen für die Anwendungsinstanzen, aber keine extrem niedrigen Latenzzeiten benötigen.

Hardware Load Balancer

Die Kategorien Network- und Application Load Balancer basieren darauf, wie sie eingehende Anfragen verwalten und neu verteilen.

Hardware Load Balancer sind speziell entwickelte Geräte, die die Anfragen zwischen den Anwendungsinstanzen neu verteilen. Sie werden häufig in der Infrastruktur vor Ort neben den Netzwerksystemen und Anwendungsservern des Unternehmens eingesetzt. Hardware Load Balancer sind eine gute Wahl für Anwendungen, die alle Daten in selbstverwalteten Servern speichern möchten oder eine individuelle Anpassung an die Hardware bei der Weiterleitung der Anfragen an die Zielinstanzen benötigen. Sie bieten außerdem erweiterte Sicherheitsoptionen.

Vorteile der Load Balancer

Ein Load Balancer kann die Leistung von Anwendungen auf verschiedene Art und Weise verbessern, z. B. durch Skalierbarkeit, Kostenreduzierung, Verfügbarkeit und Geschwindigkeit der Anfrageverarbeitung. Schauen wir uns alle diese Möglichkeiten einmal genauer an.

Skalierbarkeit

Wenn mehr Benutzeranfragen an die Anwendungsserverinstanzen gesendet werden, ist die CPU-Auslastung der Serverinstanzen hoch.

Eine E-Commerce-Anwendung würde von der Skalierbarkeit profitieren, die Load Balancer bieten. Normalerweise steigt das Volumen der Benutzeranfragen für E-Commerce-Anwendungen während der Black Friday-Verkäufe weit über das normale Maß hinaus an.

Hohe Verfügbarkeit

Wenn eine Anwendungsinstanz ausfällt, leitet der Load Balancer die Anfragen an andere Instanzen weiter, so dass der Endbenutzer keine Fehler oder Unterbrechungen des Dienstes feststellen kann. Der Load Balancer trägt dazu bei, die Hochverfügbarkeit einer Anwendung zu gewährleisten, indem er problematische Instanzen umgeht.

Wie funktioniert das Load Balancing

Um ein Load Balancing-System einzurichten, das Anfragen effektiv an die Anwendungsinstanzen weiterleitet, müssen Sie zunächst verstehen, wie ein Load Balancer funktioniert. Lassen Sie uns die inneren Vorgänge des Load Balancings betrachten und einige beliebte Methoden des Load Balancings begutachten.

Wie funktioniert ein Load Balancer?

Load Balancer verwenden verschiedene Algorithmen und Kombinationen. Die Algorithmen hängen von der Komplexität und den Funktionen des jeweiligen Load Balancers ab. Ein einfacher Load Balancer verwendet in der Regel einen Algorithmus namens Round Robin, um Anfragen den Anwendungsinstanzen zuzuweisen. Der Round Robin-Algorithmus verteilt die Anfragen nacheinander an die Anwendungsinstanzen, was zu einer gleichmäßigen Lastverteilung führt. Keine der Anwendungen wird so übermäßig belastet.

Nehmen wir an, Sie haben drei Anwendungsinstanzen. Die erste Benutzeranfrage wird an die 1. Instanz gesendet. Die zweite Benutzeranfrage wird an die 2. Instanz gesendet. Die dritte Anfrage wird an die 3. Instanz gesendet. Und die vierte Anfrage wird an die 4. Instanz gesendet. In diesem Fall haben wir vier Instanzen zur Verfügung. Die Anfrage Nr. 5 wird also an die 1. Anwendungsinstanz gesendet und so weiter.

Ein Round Robin-Algorithmus leitet eingehende Benutzeranfragen (links) an Anwendungsintanzen (rechts) weiter. Der Load Balancer weist den Anwendungsinstanzen zyklisch Anfragen zu und kehrt zur ersten Instanz zurück, nachdem jede Instanz eine Anfrage erhalten hat
Abbildung 1: Demonstration der Funktionsweise eines Load Balancers

Anstatt direkt mit dem Anwendungsserver zu interagieren, senden die Endnutzer Ihrer Anwendung Anfragen an den Load Balancer.

Was sind die Komponenten eines Load Balancers?

Ein typischer Load Balancer besteht aus vier Teilen:

  1. Virtuelle IP: Dies ist die eindeutige digitale Adresse des Load Balancers, an die der Client Anfragen an den Load Balancer adressieren kann.
  2. Netzwerkprotokolle: Verschiedene Arten von Load Balancern unterstützen unterschiedliche Netzwerkprotokolle. Ein Network Load Balancer unterstützt zum Beispiel das TCP- oder UDP-Protokoll, während ein Application Load Balancer die Protokolle HTTP und HTTPS unterstützt.
  3. Load Balancing-Algorithmen: Load Balancer verwenden verschiedene Algorithmen, wie Round Robin und IP Hash, um zu bestimmen, an welche Anwendungsinstanz sie die Anfrage des Clients weiterleiten sollen.
  4. Statusüberwachung: Der Load Balancer überprüft routinemäßig den Integritätsstatus der einzelnen Anwendungsinstanzen.

Methoden zum Load Balancing

Neben dem bereits besprochenen Round Robin-Algorithmus gibt es noch andere Methoden und Algorithmen für das Load Balancing, darunter Weighted Round Robin und ressourcenbasierte Methoden. Im Allgemeinen lassen sich die Load Balancing-Methoden in zwei Kategorien einteilen: statisches Load Balancing und dynamisches Load Balancing. Schauen wir uns die beiden Methoden einmal genauer an.

Statisches Load Balancing

Beim statischen Load Balancing leitet der Load Balancer die Anfragen an die Anwendungsinstanzen weiter, ohne den aktuellen Status dieser Anwendungsinstanzen zu prüfen. So lässt sich das statische Load Balancing leicht umsetzen. Der Nachteil des statischen Load Balancings ist der, dass sie sich nicht an den Status der Anwendungsinstanzen anpassen kann, die zur Laufzeit sehr unterschiedlich sein können, was die Leistung und damit die Benutzererfahrung eventuell beeinträchtigt. Einige Beispiele für das statische Load Balancing sind:

  • Round Robin: Der Load Balancer leitet die Anfragen zyklisch an die App-Instanzen weiter und verteilt die Anfragen gleichmäßig auf die Instanzen.
  • Weighted Round Robin: Jeder Anwendungsinstanz wird eine Gewichtung zugewiesen, die als Indikator für ihre Verarbeitungskapazität oder Priorität dient. Der Load Balancer leitet die Anfragen entsprechend der Gewichtung an die Anwendunginstanzen weiter. Je höher die Gewichtungsbewertung der Anwendungsinstanz, desto mehr Anfragen werden an diese Instanz weitergeleitet.
  • IP-Hash: Der Load Balancer generiert einen eindeutigen Hash-Schlüssel, der sowohl auf der Client-IP als auch auf der IP der App-Instanz basiert. Diese Methode ermöglicht es dem Kunden, über mehrere Sitzungen hinweg wiederholt mit derselben Anwendungsinstanz zu interagieren. Der Load Balancing-Alogorithmus IP-Hash eignet sich für Anwendungen, die dauerhafte Sitzungen zwischen dem Client und der Anwendungsinstanz benötigen, weil sie eine kontinuierliche, nahtlose Erfahrung für den Nutzer gewährleisten.

Dynamisches Load Balancing

Beim dynamischen Load Balancing leitet der Load Balancer die Anfragen an die Anwendungsinstanzen weiter, ohne den aktuellen Status dieser Anwendungsinstanzen zu prüfen. Daher können sich die dynamischen Load Balancer an die laufenden Änderungen der Anwendungsinstanzen anpassen und sind tendenziell effizienter als die statischen Load Balancer. Der dynamische Lastausgleich ist jedoch komplizierter zu implementieren. Einige Beispiele für das statische Load Balancing sind:

  • Least Connection (Geringste Verbindungen): Bei der Load-Balancing-Methode Least Connection werden die Anfragen mit den wenigsten Verbindungen an die Anwendungsinstanz mit der geringsten Anzahl aktiver Verbindungen weitergeleitet.
  • Weighted Least Connection (Gewichtete kleinste Verbindung): Bei der Load Balancing-Methode Weighted Least Connection werden die Anfragen an die App-Instanz weitergeleitet, basierend auf der Anzahl der aktiven Verbindungen und der Gewichtung dieser Instanz. Wenn es zum Beispiel drei Anwendungsinstanzen mit der gleichen Anzahl aktiver Verbindungen gibt, wird diejenige mit der höchsten Gewichtungsbewertung für die Weiterleitung der Anfrage ausgewählt.

Load Balancer in der Cloud

Die Einrichtung und Wartung einer Gruppe von Load Balancern ist eine anspruchsvolle Aufgabe. Für eine effiziente Einrichtung und Verwaltung der Load Balancer ist Folgendes erforderlich:

  • Verfügbarkeit einer Reihe von Load Balancing-Algorithmen zur Unterstützung unterschiedlicher interner Anwendungsfälle
  • Überwachung des Systemstatus auf die Anwendungsinstanzen
  • Konfigurieren von Zugriffskontrollen und Schutz für Ihre Load Balancer, um bösartige Zugriffe aus dem öffentlichen Internet zu verhindern
  • Sicherstellung der Skalierbarkeit Ihres Load Balancers begleitend zum Wachstum Ihrer Anwendungsanforderungen

Load Balancer von Gcore

Wir bei Gcore kennen die Schwierigkeiten und Herausforderungen, die mit der Einrichtung eines Load Balancers von Grund auf verbunden sind. Es gibt eine Vielzahl von Optionen, und Ihre Wahl wirkt sich direkt auf die Leistung und die Benutzererfahrung aus — zum Guten oder zum Schlechten. Der Load Balancer von Gcore löst diese Herausforderungen und bietet integrierte Funktionen zur Unterstützung:

  • Verschiedene Load Balancing-Algorithmen wie Round Robin, Least Connections und die Quell-IP, sodass Sie den für Sie passenden Algorithmus auswählen können
  • Einrichtung nicht integerer und integerer Schwellenwerte
  • Einrichtung der Firewall des Load Balancers, mit der Sie zur Erhöhung der Sicherheit die Regeln für den ein- und ausgehenden Traffics festlegen können

Wenn Sie mehr darüber erfahren möchten, wie Sie den Gcore Load Balancer einrichten, konfigurieren und Fehler beheben können, werfen Sie bitte einen Blick auf unsere Wissensseite.

Fazit

Bei einer wachsenden Zahl von Benutzern, die auf Ihre Anwendung zugreifen, ist ein Load Balancer, der die Benutzeranfragen gleichmäßig auf Ihre Instanzen verteilt, für eine schnelle Abarbeitung der Anfragen und eine positive Benutzererfahrung unerlässlich. Die Einrichtung eines Load Balancers, der die Benutzeranfragen gleichmäßig verteilt, ist jedoch sehr arbeitsaufwändig. Der Gcore Load Balancer hilft Ihnen, die Arbeitslast Ihrer Benutzer auf die eleganteste und effizienteste Weise zu verteilen.

Was ist ein Load Balancer? | Wie funktionieren Load Balancer?

Melden Sie sich
für unseren Newsletter an

Erhalten Sie die neuesten Branchentrends, exklusive Einblicke und Gcore-Updates
direkt in Ihren Posteingang.