DataSunrise erreicht AWS DevOps Kompetenz Status in AWS DevSecOps und Überwachung, Protokollierung, Performance

Load Balancing mit HAProxy

Load Balancing mit HAProxy

HAProxy ist ein kostenloses Software-Tool, das als Lastverteiler und Reverse-Proxy-Server für TCP- und HTTP-basierte Anwendungen fungiert. Das Tool verteilt Verbindungsanforderungen auf mehrere Serverknoten. Mit sehr geringem Ressourcenaufwand können Sie große Mengen an HTTP- und HTTPS-Verkehr bewältigen. Darüber hinaus führt HAProxy Server-Gesundheitschecks durch und leitet Benutzer zu funktionierenden Knoten weiter, falls einer der Server ausfällt, was es zu einer hilfreichen Failover-Lösung macht.

Angesichts der genannten Vorteile haben wir HAProxy so konfiguriert, dass es Verbindungen für MySQL RDBMS und unsere Benutzeroberfläche verteilt.

In diesem Artikel werden wir Schritte zur Durchführung des Load Balancing für drei DataSunrise-Proxys im Hochverfügbarkeitsmodus an den folgenden Adressen betrachten: 192.168.1.100, 192.168.1.101, 192.168.1.102.

Voraussetzungen

Es gibt mehrere Schritte, die vor Beginn der Arbeit mit HAProxy durchgeführt werden müssen.

Bevor Sie das Load Balancing konfigurieren, müssen Sie DataSunrise im Hochverfügbarkeitsmodus auf mehreren Servern installieren. Um den Hochverfügbarkeitsmodus auf DataSunrise zu implementieren, führen Sie Folgendes aus:

  1. Der DataSunrise-Installationsassistent ermöglicht es Ihnen, den lokalen oder Remote-Speicherort für eine Konfiguration auszuwählen. Wählen Sie Remote.
  2. Geben Sie auf der Registerkarte DataSunrise Server Details die Details der aktuellen DataSunrise-Instanz an: Servername, Hostname, auf dem die DataSunrise-Instanz installiert ist, Portnummer der Weboberfläche der Instanz (standardmäßig 11000).
  3. Geben Sie auf der Registerkarte Dictionary location die Datenbank an, in der die DataSunrise-Konfiguration (Dictionary) gespeichert werden soll. Alle Server, die zur Nutzung dieser Datenbank konfiguriert sind, teilen sich gemeinsame Konfigurationseinstellungen (einschließlich gemeinsamer Anmeldeinformationen für den Zugriff auf Weboberflächen).

Weitere detaillierte Anweisungen zum Hochverfügbarkeitsmodus von DataSunrise finden Sie im DataSunrise Administration Guide. Stellen Sie außerdem sicher, dass auf allen Servern dieselbe Produktversion installiert ist.

Instanz erstellen

Als nächstes müssen wir eine DataSunrise-Instanz auf dem virtuellen Host erstellen, auf dem MySQL installiert ist, und Proxys auf den Maschinen öffnen, die eine Verbindung zur MySQL-Datenbank herstellen.

Um eine Instanz zu erstellen, führen Sie Folgendes auf dem Master-Server aus:

  1. Öffnen Sie die DataSunrise-Benutzeroberfläche und gehen Sie zum Unterbereich Databases im Abschnitt Configurations.
  2. Klicken Sie auf die Schaltfläche Database +.
  3. Geben Sie den Hostnamen, die Portnummer und andere erforderliche Informationen ein.
  4. Nachdem die Instanz erstellt wurde, wählen Sie die neu erstellte Instanz aus der Liste aus und klicken Sie auf Edit.
  5. Ein Fenster mit Instanzkonfigurationen wird geöffnet. Klicken Sie auf die Schaltfläche Proxy +.
  6. Geben Sie den Server, den Hostnamen und die Portnummer (mysql0, 192.168.1.100, 3306 entsprechend) an und klicken Sie auf Save.
  7. Öffnen Sie die Proxys auf den Slave-Maschinen bei derselben Instanz und geben Sie den entsprechenden Servernamen und Hostnamen für jeden Proxy an.

Am Ende sieht die Instanzkonfiguration so aus:

HAProxy

Konfigurieren von HAProxy für MySQL

Das Konfigurieren von HAProxy für Datenbankverwaltungssysteme ist ziemlich einfach. Unten werden wir HAProxy so konfigurieren, dass es als Verbindungsverteiler für DataSunrise-Proxys fungiert (192.168.1.100:3306, 192.101.1.101:3306, 192.168.1.102:3306).

Nach der Installation von HAProxy öffnen Sie die oben erwähnte Datei /etc/haproxy/haproxy.cfg und bearbeiten den ‘listen’-Konfigurationsblock wie folgt:

listen af_mysql_balancer mode tcp bind *:3306 balance leastconn server mysql0 192.168.1.100:3306 check server mysql1 192.168.1.101:3306 check server mysql2 192.168.1.102:3306 check

HAProxy wird Gesundheitschecks durchführen und Verbindungen gemäß der Anzahl der Verbindungen auf dem Serverknoten verteilen, wobei der Benutzer zum Server mit der geringsten Anzahl von Verbindungen weitergeleitet wird.

balance <algorithm> dient zur Auswahl der Balancing-Algorithmen.

roundrobinRound Robin ist der Standardalgorithmus, er wählt Server der Reihe nach aus.
leastconnMit diesem Algorithmus leitet HAProxy jeden neuen Benutzer zum Server mit der geringsten Anzahl von Verbindungen weiter.
sourceDer Algorithmus zur Weiterleitung von Benutzern zu Servern basierend auf einem Hash der IP-Adresse des Benutzers.

Für die vollständige Liste der Balancing-Algorithmen verweisen Sie auf das HAProxy-Konfigurationshandbuch.

Falls der Server, den ein Benutzer derzeit verwendet, ausgefallen ist, wird die Verbindung geschlossen. Der Benutzer muss sich erneut verbinden, und HAProxy wird eine neue Datenbankverbindung zu einem Server herstellen, der funktionsfähig ist und die geringste Anzahl von Verbindungen hat.


HAProxy

Alle anderen Datenbankverwaltungssysteme können auf die gleiche Weise konfiguriert werden, nur die Ports müssen geändert werden.

Konfigurieren von HAProxy als Lastverteiler für den DataSunrise-Backend-Dienst (GUI)

In diesem Abschnitt werden wir Schritte zur Durchführung des Load Balancing für drei DataSunrise-Proxys im Hochverfügbarkeitsmodus an den folgenden Adressen betrachten: 192.168.1.100, 192.168.1.101, 192.168.1.102.

Installieren Sie HAProxy auf einem separaten Server und öffnen Sie /etc/haproxy/haproxy.cfg mit einem beliebigen Texteditor. Geben Sie die Listener-Konfiguration wie folgt an:

listen af_gui_balancer timeout client 50000 timeout server 50000 mode http bind *:11000 ssl crt /home/anon/proxy.pem redirect scheme https if !{ ssl_fc } cookie HA_BACKEND_ID insert balance leastconn server node0 192.168.1.100:11000 ssl verify none check cookie 0 server node1 192.168.1.101:11000 ssl verify none check cookie 1 server node2 192.168.1.102:11000 ssl verify none check cookie 2

Konfigurationsdurchschnitt

Benutzer-Inaktivitätszeit

timeout client <timeout> – legt die maximale Benutzer-Inaktivitätszeitspanne fest, nach der die Verbindung geschlossen wird (Millisekunden).
timeout server <timeout> – legt die maximale Server-Inaktivitätszeitspanne fest, nach der die Verbindung geschlossen wird (Millisekunden).

Instanz-Protokoll

mode { tcp|http } – definiert das Protokoll der Instanz. In unserem Fall wird das Balancing auf der HTTP-Protokollebene durchgeführt. Die Client-Anfrage wird eingehend analysiert, bevor eine Verbindung zu einem Server hergestellt wird. Jede Anfrage, die nicht RFC-konform ist, wird abgelehnt. Layer 7-Filterung, -Verarbeitung und -Weiterleitung werden möglich sein.
HAProxy kann auch auf TCP-Ebene balancieren, aber die Besonderheiten von Webanwendungen, die eine Benutzer-Sitzungsbedingung haben, machen es schwierig, ein ordentliches Load Balancing ohne die Möglichkeit zur Analyse oder Änderung bestimmter Teile von HTTP-Anfragen durchzuführen. Wir nutzen den HTTP-Modus, weil wir möchten, dass HAProxy ein Persistenz-Cookie zuweist und liest, das es HAProxy ermöglicht, den Server zu bestimmen, zu dem der Benutzer geleitet werden soll. Auf diese Weise wird der Webserver korrekt mit der Benutzersitzung arbeiten.

Höradresse und Port

bind [<address>]:<port_range> – die bind-Option definiert eine oder mehrere Höradressen und -ports in einem Frontend. <address> kann ein Hostname, eine IPv4-Adresse, eine IPv6-Adresse oder ‘*’ sein. ‘*’ bedeutet, dass der Port in allen verfügbaren IP-Adressen geöffnet wird.
ssl crt /home/anon/proxy.pem – die ssl-Option aktiviert die SSL-Entschlüsselung, die Zertifikate erfordert. Zertifikate und Schlüssel werden aus der Datei /home/anon/proxy.pem entnommen. Systembenutzer müssen Lesezugriff auf die Datei haben. Der Inhalt der pem-Datei sollte im folgenden Format sein:

-----BEGIN CERTIFICATE-----
HLDXjCDSAkY...
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
HLDEpgIBDSKC....
-----END RSA PRIVATE KEY-----

Weiterleitung

redirect scheme https if !{ ssl_fc } – die folgende Konfiguration leitet alle Klartext-HTTP-Verbindungen auf Port 11000 auf das HTTPS-Schema um. Benutzer können den Verwaltungsdienst somit nicht ohne Verschlüsselung nutzen.

Persistente Cookie

cookie HA_BACKEND_ID insert. Die gegebene Option definiert das persistente Cookie. Nach der ersten Anfrage sendet HAProxy dem Benutzer ein Cookie. Je nach Cookie-Wert bestimmt HAProxy, welcher Serverknoten für nachfolgende Anfragen des Benutzers verwendet werden muss.
HA_BACKEND_ID ist der Cookie-Name.
Die Option insert legt fest, dass HAProxy diese Cookie-Werte nach der ersten Anfrage zuweist. Der Wert des persistenten Cookies wird verwendet, bis der Benutzer die Browser-Cookies löscht oder die Sitzung beendet.

Die letzten drei Zeilen definieren Instanzen.

node0 ist ein beliebiger Name der Instanz, der nur zur Identifizierung in Bezug auf HAProxy verwendet wird.
192.168.1.100:11000 – die Adresse und der Port der Instanz.
ssl – definiert, dass die Instanz https-Verbindungen akzeptiert.
verify [none | optional | required]. Standardmäßig ist die Einstellung auf none gesetzt, was bedeutet, dass das von Server gesendete SSL-Zertifikat nicht überprüft wird, d.h. HAProxy vertraut dem Zertifikat des DataSunrise-Backend-Dienstes.
Die Option check aktiviert den Mechanismus zur Gesundheitsprüfung. Bevor die Client-Anfrage zum Knoten weitergeleitet wird, überprüft HAProxy, ob der Knoten verfügbar ist.
cookie <value> – der Parameter setzt den Cookie-Wert, der dem Server zugewiesen wird.

Speichern Sie die Konfigurationsänderungen und starten Sie HAProxy neu.

Fazit

Als Ergebnis haben wir eine Konfiguration, die es HAProxy ermöglicht, wie folgt zu funktionieren:

  • Ein Benutzer verbindet sich mit HAProxy.
  • HAProxy führt Gesundheitschecks der Server durch.
  • HAProxy leitet den Benutzer zum Serverknoten mit der geringsten Last weiter, was tatsächlich die Last ausbalanciert.

HAProxy läuft auf Linux und Solaris. Für das Betriebssystem Windows versuchen Sie die fortgeschrittenere Nginx-Lösung.

Wenn Sie Unterstützung bei der Konfiguration von HAProxy oder DataSunrise im Hochverfügbarkeitsmodus benötigen, zögern Sie nicht, uns zu kontaktieren. Unsere Support-Ingenieure werden Ihnen helfen.

Nächste

IoT Datensicherheit

IoT Datensicherheit

Erfahren Sie mehr

Benötigen Sie die Hilfe unseres Support-Teams?

Unsere Experten beantworten gerne Ihre Fragen.

Allgemeine Informationen:
[email protected]
Kundenservice und technischer Support:
support.datasunrise.com
Partnerschafts- und Allianz-Anfragen:
[email protected]