Haproxy ist aufgrund seiner Effizienz, Zuverlässigkeit und seines geringen Speicher- und CPU-Fußabdrucks beliebt für den Lastausgleich. Load-Balancing ist eine gängige Lösung für die horizontale Verteilung von Webanwendungen auf mehrere Hosts, während den Nutzern ein einziger Zugriffspunkt auf den Dienst bereitgestellt wird.
Es ist für die Installation auf den wichtigsten Linux-Distributionen verfügbar. In diesem Handbuch erfahren Sie, wie Sie HAProxy Load Balancer unter Rocky Linux 8 installieren und konfigurieren. Dieses Handbuch funktioniert auch mit anderen RHEL 8-basierten Distributionen wie Alma Linux und Oracle Linux.
Überprüfen Sie auch:
- So installieren und konfigurieren Sie den HAProxy-Load-Balancer unter Debian 11
- So installieren und konfigurieren Sie den HAProxy-Load-Balancer unter Ubuntu 20.04
HAProxy-Load-Balancing-Algorithmen
Die Ausgleichsalgorithmen werden verwendet, um zu entscheiden, zu welchem Server im Backend jede Verbindung übertragen wird. Einige der nützlichen Optionen umfassen die folgenden:
- Roundrobin: Jeder Server wird abwechselnd entsprechend seiner Gewichtung verwendet. Dies ist der reibungsloseste und fairste Algorithmus, wenn die Verarbeitungszeit der Server gleichmäßig verteilt bleibt. Dieser Algorithmus ist dynamisch, sodass die Servergewichte spontan angepasst werden können.
- Leastconn:Der Server mit der niedrigsten Anzahl an Verbindungen wird ausgewählt. Round-Robin wird zwischen Servern mit derselben Last durchgeführt. Die Verwendung dieses Algorithmus wird bei langen Sitzungen wie LDAP, SQL, TSE usw. empfohlen, ist aber nicht sehr gut für kurze Sitzungen wie HTTP geeignet.
- Erster: Der erste Server mit verfügbaren Verbindungsslots erhält die Verbindung. Die Server werden von der niedrigsten numerischen Kennung bis zur höchsten ausgewählt, was standardmäßig der Position des Servers in der Farm entspricht. Sobald ein Server seinen maxconn-Wert erreicht, wird der nächste Server verwendet.
- Quelle:Die Quell-IP-Adresse wird gehasht und durch die Gesamtgewichtung der laufenden Server geteilt, um anzugeben, welcher Server die Anfrage erhält. Auf diese Weise erreicht dieselbe Client-IP-Adresse immer denselben Server, während die Server gleich bleiben.
Inhaltsverzeichnis
- Sicherstellen, dass der Server auf dem neuesten Stand ist
- HAProxy installieren
- Konfigurieren von HAProxy als Loadbalancer
- Testen der Einrichtung
1. Sicherstellen, dass der Server auf dem neuesten Stand ist
Bevor Sie fortfahren, stellen Sie sicher, dass der Server auf dem neuesten Stand ist. Verwenden Sie diesen Befehl, um dies zu erreichen:
sudo dnf -y update
2. Haproxy installieren
Das Paket, das Haproxy bereitstellt, ist in den standardmäßigen Rocky Linux Repos verfügbar. Installieren Sie mit diesem Befehl:
sudo dnf install -y haproxy
Bestätigen Sie die Installation mit diesem Befehl:
$ rpm -qi haproxy
Name : haproxy
Version : 1.8.27
Release : 2.el8
Architecture: x86_64
Install Date: Tue 11 Jan 2022 09:39:45 PM UTC
Group : System Environment/Daemons
Size : 4446585
License : GPLv2+
Signature : RSA/SHA256, Wed 19 May 2021 05:13:23 AM UTC, Key ID 15af5dac6d745a60
Source RPM : haproxy-1.8.27-2.el8.src.rpm
Build Date : Wed 19 May 2021 02:37:50 AM UTC
Build Host : ord1-prod-x86build004.svc.aws.rockylinux.org
Relocations : (not relocatable)
Packager : [email protected]
Vendor : Rocky
URL : http://www.haproxy.org/
Summary : HAProxy reverse proxy for high availability environments
Description :
HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high
availability environments. Indeed, it can:
- route HTTP requests depending on statically assigned cookies
- spread load among several servers while assuring server persistence
through the use of HTTP cookies
- switch to backup servers in the event a main one fails
- accept connections to special ports dedicated to service monitoring
- stop accepting connections without breaking existing ones
- add, modify, and delete HTTP headers in both directions
- block requests matching particular patterns
- report detailed status to authenticated users from a URI
intercepted from the application
Sie können die installierte Versionsnummer mit dem folgenden Befehl überprüfen.
haproxy -v
Dies ist die Ausgabe auf meinem Rechner
$ haproxy -v
HA-Proxy version 1.8.27-493ce0b 2020/11/06
Copyright 2000-2020 Willy Tarreau <[email protected]>
Die Installation ist dann abgeschlossen. Fahren Sie unten mit den Anweisungen fort, wie Sie den Load Balancer konfigurieren, um Anfragen an Ihre Webserver umzuleiten.
3. HAProxy als Load Balancer konfigurieren
Um HAProxy als Load Balancer zu konfigurieren, müssen wir ihm mitteilen, auf welche Art von Verbindungen er lauschen soll und wohin die Verbindungen weitergeleitet werden sollen. Dazu erstellen Sie eine Konfigurationsdatei /etc/haproxy/haproxy.cfg
mit den definierenden Einstellungen.
Load-Balancing auf Schicht 4
Nach der Installation verfügt HAProxy bereits über eine Vorlage zum Konfigurieren des Lastenausgleichs. Öffnen Sie die Konfigurationsdatei mit Ihrem Texteditor, ich verwende vim:
sudo vim /etc/haproxy/haproxy.cfg
Fügen Sie diesen Inhalt hinzu, um die Listening-Schnittstelle und die Back-End-Schnittstelle zu konfigurieren, auf die der Datenverkehr verteilt wird.
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server <server1 name> <private IP 1>:80 check
server <server2 name> <private IP 2>:80 check
Ersetzen Sie auf der Statistikseite den
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server web_server_1 10.70.5.41:80 check
server web_server_2 10.70.5.187:80 check
Das Obige definiert einen Layer-4-Load-Balancer mit einem Front-End-Namen http_front , der auf die Portnummer 80 lauscht, der den Datenverkehr dann an das Standard-Back-End mit dem Namen http_back weiterleitet. Der zusätzliche Statistik-URI /haproxy?stats
aktiviert die Statistikseite unter dieser angegebenen Adresse.
Load-Balancing auf Layer 7
Wir können den Load Balancer auch so konfigurieren, dass er auf Layer 7 arbeitet. Dies ist nützlich, wenn sich Teile Ihrer Webanwendung auf verschiedenen Hosts befinden. Dies kann durch Konditionierung der Verbindungsübergabe zB durch die URL erreicht werden.
Öffnen Sie die Konfigurationsdatei mit Ihrem Texteditor, ich verwende vim:
sudo vim /etc/haproxy/haproxy.cfg
Fügen Sie dann diese Konfiguration hinzu
frontend http_front
bind *:80
stats uri /haproxy?stats
acl url_blog path_beg /blog
use_backend blog_back if url_blog
default_backend http_back
backend http_back
balance roundrobin
server <server name> <private IP>:80 check
server <server name> <private IP>:80 check
backend blog_back
server <server name> <private IP>:80 check
server <server name> <private IP>:80 check
Das Front-End deklariert eine ACL-Regel namens url_blog , die für alle Verbindungen mit Pfaden gilt, die mit /blog beginnen. Use_backend definiert, dass Verbindungen, die der Bedingung url_blog entsprechen, vom Backend namens blog_back bereitgestellt werden sollen, während alle anderen Anfragen vom Standard-Backend verarbeitet werden.
Auf der Backend-Seite richtet die Konfiguration zwei Servergruppen ein, http_back wie zuvor und die neue mit dem Namen blog_back , die speziell Verbindungen zu example.com/blog bereitstellt.
Nachdem Sie die Konfigurationen vorgenommen haben, speichern Sie die Datei und starten Sie HAProxy mit dem nächsten Befehl neu.
sudo systemctl restart haproxy
Wenn Sie beim Start Fehler oder Warnungen erhalten, überprüfen Sie die Konfiguration auf Tippfehler und versuchen Sie dann erneut, neu zu starten.
SSL konfigurieren
Wenn Sie eine private Schlüsseldatei und eine Zertifikatsdatei haben, die Sie mit HAProxy verwenden möchten, kombinieren Sie sie mit diesem Befehl.
cat citizix.fullchain.pem citizix.key > citizix.pem
Konfigurieren Sie dann HAProxy so, dass das SSL-Zertifikat auf dem Frontend verwendet wird.
frontend http_front
bind *:80
bind *:443 ssl crt /etc/letsencrypt/live/apps.citizix.com/citizix.pem
4. Einrichtung testen
Öffnen Sie bei konfiguriertem und ausgeführtem HAProxy die öffentliche IP Ihres Load Balancer-Servers in einem Webbrowser und überprüfen Sie, ob Sie korrekt mit Ihrem Backend verbunden sind. Der Parameter stats uri in der Konfiguration aktiviert die Statistikseite unter der definierten Adresse.
http://<Haproxy public IP>/haproxy?stats
Wenn Sie die Statistikseite laden und alle Ihre Server grün aufgelistet sind, war Ihre Konfiguration erfolgreich!
Die Statistikseite enthält einige hilfreiche Informationen, um Ihre Webhosts im Auge zu behalten, einschließlich Betriebs- und Ausfallzeiten und Sitzungszahlen. Wenn ein Server rot aufgeführt ist, überprüfen Sie, ob der Server eingeschaltet ist und Sie ihn vom Load-Balancer-Rechner aus anpingen können.
Falls Ihr Load-Balancer nicht antwortet, überprüfen Sie, ob HTTP-Verbindungen nicht von einer Firewall blockiert werden. Bestätigen Sie außerdem mit dem folgenden Befehl, dass HAProxy ausgeführt wird.
sudo systemctl status haproxy
5. Passwortschutz der Statistikseite
Die Statistikseite einfach am Frontend auflisten zu lassen, ist jedoch für jedermann öffentlich zugänglich, was vielleicht keine so gute Idee ist. Stattdessen können Sie es auf eine eigene Portnummer einrichten, indem Sie das folgende Beispiel am Ende Ihrer haproxy.cfg
hinzufügen Datei. Ersetzen Sie den Nutzernamen und das Passwort durch etwas Sicheres.
listen stats bind *:8181 stats enable stats uri / stats realm Haproxy\ Statistics stats auth username:password
Nachdem Sie die neue Listengruppe hinzugefügt haben, entfernen Sie den alten Verweis auf die Statistik-URI aus der Front-End-Gruppe. Wenn Sie fertig sind, speichern Sie die Datei und starten Sie HAProxy erneut.
sudo systemctl restart haproxy
Öffnen Sie dann den Load Balancer erneut mit der neuen Portnummer und melden Sie sich mit dem Benutzernamen und dem Passwort an, die Sie in der Konfigurationsdatei festgelegt haben.
http://<load balancer public IP>:8181
Überprüfen Sie, ob Ihre Server immer noch alles grün melden, und öffnen Sie dann nur die Load-Balancer-IP ohne Portnummern in Ihrem Webbrowser.
http://<load balancer public IP>/
Wenn Ihre Backend-Server zumindest leicht unterschiedliche Zielseiten haben, werden Sie feststellen, dass Sie jedes Mal, wenn Sie die Seite neu laden, die Antwort von einem anderen Host erhalten.
Schlussfolgerungen
Das ist es! In diesem Handbuch haben wir gelernt, wie HAProxy installiert und konfiguriert wird, um den Datenverkehr auszugleichen. Dies erhöht die Leistung und Verfügbarkeit Ihrer Webanwendung.