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 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.

Countryx
United States
United Kingdom
France
Germany
Australia
Afghanistan
Islands
Albania
Algeria
American Samoa
Andorra
Angola
Anguilla
Antarctica
Antigua and Barbuda
Argentina
Armenia
Aruba
Austria
Azerbaijan
Bahamas
Bahrain
Bangladesh
Barbados
Belarus
Belgium
Belize
Benin
Bermuda
Bhutan
Bolivia
Bosnia and Herzegovina
Botswana
Bouvet
Brazil
British Indian Ocean Territory
Brunei Darussalam
Bulgaria
Burkina Faso
Burundi
Cambodia
Cameroon
Canada
Cape Verde
Cayman Islands
Central African Republic
Chad
Chile
China
Christmas Island
Cocos (Keeling) Islands
Colombia
Comoros
Congo, Republic of the
Congo, The Democratic Republic of the
Cook Islands
Costa Rica
Cote D'Ivoire
Croatia
Cuba
Cyprus
Czech Republic
Denmark
Djibouti
Dominica
Dominican Republic
Ecuador
Egypt
El Salvador
Equatorial Guinea
Eritrea
Estonia
Ethiopia
Falkland Islands (Malvinas)
Faroe Islands
Fiji
Finland
French Guiana
French Polynesia
French Southern Territories
Gabon
Gambia
Georgia
Ghana
Gibraltar
Greece
Greenland
Grenada
Guadeloupe
Guam
Guatemala
Guernsey
Guinea
Guinea-Bissau
Guyana
Haiti
Heard Island and Mcdonald Islands
Holy See (Vatican City State)
Honduras
Hong Kong
Hungary
Iceland
India
Indonesia
Iran, Islamic Republic Of
Iraq
Ireland
Isle of Man
Israel
Italy
Jamaica
Japan
Jersey
Jordan
Kazakhstan
Kenya
Kiribati
Korea, Democratic People's Republic of
Korea, Republic of
Kuwait
Kyrgyzstan
Lao People's Democratic Republic
Latvia
Lebanon
Lesotho
Liberia
Libyan Arab Jamahiriya
Liechtenstein
Lithuania
Luxembourg
Macao
Madagascar
Malawi
Malaysia
Maldives
Mali
Malta
Marshall Islands
Martinique
Mauritania
Mauritius
Mayotte
Mexico
Micronesia, Federated States of
Moldova, Republic of
Monaco
Mongolia
Montserrat
Morocco
Mozambique
Myanmar
Namibia
Nauru
Nepal
Netherlands
Netherlands Antilles
New Caledonia
New Zealand
Nicaragua
Niger
Nigeria
Niue
Norfolk Island
North Macedonia, Republic of
Northern Mariana Islands
Norway
Oman
Pakistan
Palau
Palestinian Territory, Occupied
Panama
Papua New Guinea
Paraguay
Peru
Philippines
Pitcairn
Poland
Portugal
Puerto Rico
Qatar
Reunion
Romania
Russian Federation
Rwanda
Saint Helena
Saint Kitts and Nevis
Saint Lucia
Saint Pierre and Miquelon
Saint Vincent and the Grenadines
Samoa
San Marino
Sao Tome and Principe
Saudi Arabia
Senegal
Serbia and Montenegro
Seychelles
Sierra Leone
Singapore
Slovakia
Slovenia
Solomon Islands
Somalia
South Africa
South Georgia and the South Sandwich Islands
Spain
Sri Lanka
Sudan
Suriname
Svalbard and Jan Mayen
Swaziland
Sweden
Switzerland
Syrian Arab Republic
Taiwan, Province of China
Tajikistan
Tanzania, United Republic of
Thailand
Timor-Leste
Togo
Tokelau
Tonga
Trinidad and Tobago
Tunisia
Turkey
Turkmenistan
Turks and Caicos Islands
Tuvalu
Uganda
Ukraine
United Arab Emirates
United States Minor Outlying Islands
Uruguay
Uzbekistan
Vanuatu
Venezuela
Viet Nam
Virgin Islands, British
Virgin Islands, U.S.
Wallis and Futuna
Western Sahara
Yemen
Zambia
Zimbabwe
Choose a topicx
Allgemeine Informationen
Vertrieb
Kundenservice und technischer Support
Partnerschafts- und Allianz-Anfragen
Allgemeine Informationen:
info@datasunrise.com
Kundenservice und technischer Support:
support.datasunrise.com
Partnerschafts- und Allianz-Anfragen:
partner@datasunrise.com