Load Balancer


Über Load Balancer

Der Load Balancer in der Cloud-Plattform ermöglicht es Ihnen, automatisch eingehenden Datenverkehr auf mehrere Server zu verteilen, um die Leistung Ihrer Anwendung oder Website zu maximieren. Ein Load Balancer ist eines der Tools, die die horizontale Anwendungsskalierung unterstützen.

Bevor wir auf die Details einer Load-Balancer-Konfiguration eingehen, lassen Sie uns die Rollen seiner Hauptkomponenten besprechen.

Erstellung eines Load Balancer

Während gängige Parameter wie Name und Beschreibung selbsterklärend sind, sollte der Netzwerkaspekt von Load Balancern im Detail beschrieben werden.

Das Subnetz, das Sie bei der Erstellung eines Load Balancers gewählt haben, definiert das Netzwerk und den Pool fester IPs, in dem die IP (Virtual IP) des Load Balancers erstellt wird. Dort werden sich die Mitglieder (Endpunkte, typischerweise Instanzen) befinden. Beachten Sie, dass bei Load Balancern, die über das Portal erstellt werden, das Subnetz für den Load Balancer und seine Mitglieder gleich ist (Load Balancer die über die API oder die Kommandozeile erstellt wurden, können unterschiedliche Subnetze haben).

In der Regel werden die Load Balancer vom Internet aus erreichbar sein. Daher müssen Sie eine Floating IP einem Load Balancer zuweisen. Außerdem muss das gewählte Netzwerk mit einem Router sowie einem externen Gateway verbunden sein (siehe Abschnitt Router Abschnitt für weitere Details)

Listeners

Ein Listener definiert Ports und Protokolle, die der Load Balancer öffnet. Wenn ein Listener konfiguriert ist, ist der Load Balancer bereit, TCP-Verbindungen für die eingehenden Anfragen für diese Ports zu öffnen.

Load Balancer unterstützen mehrere Listener-Protokolle:

TCP ist das allgemeinste. Die eingehende Verbindung wird so wie sie ist an die Mitglieder weitergeleitet, ohne dass der Inhalt geparst wird. Generell kann jedes Protokoll, das über TCP arbeitet, als TCP konfiguriert werden. HTTP ist ein empfohlenes Protokoll für Webserver, da es die eingehende Anfragen prüft und die Konsistenz von Verbindungen und Daten sicherstellen kann. HTTPS ist eine sichere (verschlüsselte) Version von HTTP. Im Allgemeinen können Load Balancer zwei Arten von HTTPS unterstützen - terminiert (das heißt, der Load Balancer entschlüsselt die Daten und muss den Clients das SSL-Zertifikat zur Verfügung stellen), und nicht terminierte (das bedeutet, dass der Datenverkehr ohne Entschlüsselung an die Mitglieder weitergeleitet wird und die Mitglieder müssen das SSL-Zertifikat bereitstellen). Terminiertes HTTPS erfordert die Integration eines Zertifikatspeicherdienstes (Barbican), der aktuell noch kein Teil der Plattform ist. Infolgedessen wird nur nicht terminiertes HTTPS unterstützt, das effektiv fast dasselbe ist wie generisches TCP.

Pools

Pools sind Container für Mitglieder eines bestimmten Listeners, die auch einen Algorithmus für die Verteilung des eingehenden Datenverkehrs definieren. Die folgenden Algorithmen werden unterstützt:

  • Round Robin lässt neu eingehende Anfragen gleichmäßig zwischen den Mitgliedern rotieren.
  • Wenigste Verbindungen sendet die nächste eingehende Anfrage an das Mitglied mit der geringsten Anzahl von aktiven Verbindungen.
  • Quell IP berücksichtigt die Client-(Quell-)IP Adresse und sendet eingehende Anfragen von der gleichen Quell-IP an das gleiche Mitglied.

Mitglieder

Members sind die Endpunkte (typischerweise Instanzen), die hinter dem Load Balancer arbeiten. Mitglieder werden pro Pool angelegt und durch ihre IP Adresse festgelegt (beachten Sie, dass diese IP im gleichen Subnetz liegen muss wie die eigenen virtuellen IP-Adressen des Load Balancers)

Das Gewicht definiert, wie viele Verbindungen (proportional) das Mitglied empfangen kann. Zum Beispiel erhält ein Mitglied mit einem Gewicht von 10 doppelt so viele Verbindungen als ein Mitglied mit einem Gewicht von 5. Der Wert muss zwischen 0 und 256 liegen. Ein Wert von 0 bedeutet, dass das Mitglied keine neuen Verbindungen erhält (aber bestehende Verbindungen weiterhin bedient, falls vorhanden).

Health Monitore

Health Monitore ist ein Mechanismus, der verwendet werden kann, um den Zustand der Mitglieder zu überwachen. Wenn ein Mitglied nicht wie erwartet auf die Anfragen antwortet, wird der Load Balancer aufhören, Anfragen an dieses Mitglied zu senden. Jedoch wird es weiter überwacht, bis es wieder funktionstüchtig ist. Wenn die Überwachung nicht aktiviert ist, wird der Zustand der Mitglieder auch nicht überprüft und diese werden immer als verfügbar gelistet (der Status ist dann "Kein Monitor").

Es gibt folgende Parameter zur Verwaltung von dem Health Monitoren:

Pool - der Pool, für den Sie einen Monitor erstellen. Zeitüberschreitung - wie lange (in Sekunden) gewartet wird, bis ein Mitglied auf die die Anforderung der Zustandsüberprüfung antwortet. Verzögerung definiert die Häufigkeit der Zustandsüberprüfungen. Um zum Beispiel eine Prüfung jede Minute durchzuführen, geben Sie delay=60 an. Maximale Wiederholungen wie oft eine Zustandsüberprüfungen Erfolg melden muss, bevor das Mitglied als "online" markiert wird, wenn das Mitglied zuvor im Fehlerzustand war. Der Wert muss zwischen 1 und 10 liegen. Normalerweise stellen Sie diesen wert auf 1 ein, es sei denn, Sie führen eine Fehlerbehebung für ein zeitweise ausgefallenes Mitglied durch. HTTP-Methode eine Zeichenkette - die Methode, die von der Health Check Funktion verwendet wird. Eine der Methoden ist z.B. CONNECT, DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT, oder TRACE. Standardmäßig wird GET verwendet. URL Pfad - die URL, die während der Zustandsprüfung abgerufen werden soll. Standardmäßig / . Erwarteter Code HTTP-Codes, die anzeigen, dass die Zustandsprüfung erfolgreich war. Es wird ein Standardwert von 200 verwendet; es kann aber auch eine einzelne Zahl sein (wie 200), eine Liste (201, 201) oder ein Bereich (200-202)

Beachten Sie, dass der Parameter max_retries_down, der steuert, wie viele Male das Mitglied die Zustandsprüfung nicht bestehen muss, um als ungesund zu gelten, derzeit nicht über die Benutzeroberfläche eingestellt werden kann und immer der Standardwert von "3" verwendet wird.


Erstellen und verwalten eines Load Balancers

Um einen Load Balancer zu erstellen, gehen Sie wie folgt vor:

  • Navigieren Sie zu "Load Balancers" im Abschnitt "Networking", und klicken Sie dann auf die Schaltfläche "Neuen Load Balancer erstellen".
  • Geben Sie den Namen für den neuen Load Balancer ein, wählen Sie das Subnetz in dem der Load Balancer und seine Mitglieder befinden sollen, die IP-Adresse des Load Balancers und, falls gewünscht, eine Beschreibung. Klicken Sie dann auf "Erstelle". Sobald der Load Balancer vom Status "In Erstellung" in den Status "Aktiv" wechselt, können Sie den Load Balancer verwalten. Hierzu klicken Sie auf "Verwalten" im Aktionsmenü des Load Balancer.
  • Gehen Sie nun auf die Seite "Listeners" und konfigurieren Sie einen Listener, indem Sie das Protokoll und den Port, mit denen gearbeitet werden soll, auswählen. Sie können mehrere Listener konfigurieren, wenn dies erforderlich ist, z. B. einen für HTTP-Port 80 und einen für HTTPS-Port 443.
  • Wechseln Sie nun in die nächste Registerkarte und erstellen Sie einen Pool für die zuvor erstellten Listener.
  • Gehen Sie nun zur Registerkarte ""Mitglieder"" und fügen Sie Mitglieder hinzu, indem Sie deren IP Adressen zu dem/den zuvor erstellten Pool(s) hinzufügen.

An diesem Punkt wird Ihr Load Balancer anfangen zu arbeiten. Um jedoch sicherzustellen, dass er nur Verkehr an die verfügbaren Mitglieder sendet und automatisch die Mitglieder ausschließt, die nicht mehr richtig funktionieren, empfiehlt es sich,das Health Monitoring für die Pools zu konfigurieren.