DataSunrise sponsert AWS re:Invent 2024 in Las Vegas, bitte besuchen Sie uns am Stand #2158 von DataSunrise

Load Balancing mit HAProxy

Load Balancing mit HAProxy

HAProxy ist ein kostenloses Software-Tool, das als Load Balancer und Reverse-Proxy-Server für TCP- und HTTP-basierte Anwendungen fungiert. Das Tool verteilt Verbindungsanfragen auf mehrere Serverknoten. Mit sehr wenig Ressourcenverbrauch ermöglicht es die Handhabung großer Mengen von HTTP- und HTTPS-Verkehr. Darüber hinaus führt HAProxy Server-Gesundheitschecks durch und leitet Benutzer im Falle eines Serverausfalls zu einem funktionierenden Knoten weiter, was es zu einer hilfreichen Failover-Lösung macht.

Angesichts der zuvor genannten Vorteile haben wir HAProxy konfiguriert, um Verbindungen für MySQL RDBMS und unsere Benutzeroberfläche zu verteilen.

In diesem Artikel behandeln wir die Schritte zum Load Balancing für drei DataSunrise-Proxies im Hochverfügbarkeitsmodus an den folgenden Adressen: 192.168.1.100, 192.168.1.101, 192.168.1.102.

Voraussetzungen

Es gibt mehrere Schritte, die vor 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, einen lokalen oder entfernten Speicherort für eine Konfigurationsregisterkarte 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, und die Portnummer der Web-UI der Instanz (standardmäßig 11000).
  3. Geben Sie auf der Registerkarte Dictionary location die Datenbank an, die zur Speicherung der DataSunrise-Konfiguration (Dictionary) verwendet wird. Alle Server, die so konfiguriert sind, dass sie diese Datenbank verwenden, teilen sich gemeinsame Konfigurationseinstellungen (einschließlich gemeinsamer Anmeldeinformationen für den Zugriff auf Web-UIs).

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

Instanz erstellen

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

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

  1. Öffnen Sie die DataSunrise GUI und gehen Sie zum Unterabschnitt 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. Sobald die Instanz erstellt ist, wählen Sie die neu erstellte Instanz aus der Liste aus und klicken Sie auf Edit.
  5. Ein Fenster mit den 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 Proxies auf den Slave-Maschinen in derselben Instanz und geben Sie den entsprechenden Servernamen und Hostnamen für jeden Proxy an.

Am Ende sieht die Instanzkonfiguration wie folgt aus:

HAProxy

Konfigurieren von HAProxy für MySQL

Die Konfiguration von HAProxy für Datenbankverwaltungssysteme ist ziemlich einfach. Unten werden wir HAProxy so konfigurieren, dass es als Verbindungsvermittler für DataSunrise-Proxies 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 Sie 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 führt Gesundheitschecks durch und verteilt Verbindungen entsprechend der Anzahl der Verbindungen am Serverknoten. Es leitet den Benutzer an den Server mit der geringsten Anzahl an Verbindungen weiter.

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

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

Für die vollständige Liste der Balancing-Algorithmen siehe das HAProxy Configuration Manual.

Im Falle eines Serverausfalls wird die Verbindung geschlossen. Der Benutzer muss sich erneut verbinden und HAProxy wird eine neue Datenbankverbindung zu dem verfügbaren Server mit der geringsten Anzahl von Verbindungen herstellen.


HAProxy

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

Konfigurieren von HAProxy als Load Balancer für DataSunrise-Backend-Service (GUI)

In diesem Abschnitt werden wir die Schritte zum Load Balancing für drei DataSunrise-Proxies 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

Konfigurationsübersicht

Inaktivitätszeit des Benutzers

timeout client <timeout> – legt die maximale Inaktivitätszeit des Benutzers fest, nach der die Verbindung geschlossen wird (Millisekunden).
timeout server <timeout> – legt die maximale Inaktivitätszeit des Servers fest, nach der die Verbindung geschlossen wird (Millisekunden).

Protokoll der Instanz

mode { tcp|http } – definiert das Protokoll der Instanz. In unserem Fall wird das Balancing auf HTTP-Protokollebene durchgeführt. Die Client-Anfrage wird vor dem Verbinden mit einem Server eingehend analysiert. Jede Anfrage, die nicht RFC-konform ist, wird abgelehnt. Schicht-7-Filterung, -Verarbeitung und -Umschaltung sind möglich.
HAProxy kann auch auf TCP-Ebene balancieren, aber die Besonderheiten von Webanwendungen, die eine Benutzersitzungsbedingung haben, machen es schwierig, ein richtiges Load Balancing durchzuführen, ohne die Möglichkeit zu haben, bestimmte Teile von HTTP-Anfragen zu analysieren oder zu modifizieren. Wir verwenden den HTTP-Modus, weil wir HAProxy benötigen, um ein Persistenz-Cookie zuzuweisen und zu lesen, das HAProxy ermöglicht zu bestimmen, zu welchem Server der Benutzer geleitet werden muss. Somit wird der Webserver korrekt mit der Benutzersitzung arbeiten.

Abhöradresse und -port

bind [<address>]:<port_range> – Die Bind-Option definiert eine oder mehrere Abhö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 folgendes Format haben:

-----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 unverschlüsselten HTTP-Verbindungen auf Port 11000 zum HTTPS-Schema weiter. Benutzer können den Administrationsdienst somit nicht ohne Verschlüsselung nutzen.

Persistentes Cookie

cookie HA_BACKEND_ID insert. Die gegebene Option definiert das persistente Cookie. Nach der ersten Anfrage sendet HAProxy ein Cookie an den Benutzer. Entsprechend dem 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 definiert, 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 willkürlicher Name der Instanz, der nur zur Identifikation 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-Services.
Die Option check aktiviert den Gesundheitscheck-Mechanismus. Bevor die Client-Anfrage an den Knoten weitergeleitet wird, prü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.

Schlussfolgerung

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

  • Ein Benutzer verbindet sich mit HAProxy.
  • HAProxy prüft die Server-Gesundheit.
  • HAProxy leitet den Benutzer zum Serverknoten mit der geringsten Auslastung weiter, wodurch die Last tatsächlich verteilt wird.

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

Wenn Sie Hilfe bei der Konfiguration von HAProxy oder DataSunrise im Hochverfügbarkeitsmodus benötigen, wenden Sie sich bitte an uns. Unsere Supportingenieure helfen Ihnen gerne weiter.

Nächste

Wie beeinflusst das Internet der Dinge die Datensicherheit?

Wie beeinflusst das Internet der Dinge die 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]