GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So installieren und konfigurieren Sie den HAProxy-Load-Balancer unter Ubuntu 20.04

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 dieser Anleitung lernen wir, wie man HAProxy Load Balancer unter Ubuntu 20.04 installiert und konfiguriert.

Überprüfen Sie auch:

  • So installieren und konfigurieren Sie HAProxy Load Balancer unter Rocky Linux/Alma Linux 8
  • So installieren und konfigurieren Sie den HAProxy-Load-Balancer unter Debian 11

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

  1. Sicherstellen, dass der Server auf dem neuesten Stand ist
  2. HAProxy installieren
  3. Konfigurieren von HAProxy als Load Balancer
  4. Testen der Einrichtung
  5. Passwort zum Schutz der HAProxy-Statistikseite

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 apt update
sudo apt upgrade -y

2. Haproxy installieren

Das Paket, das Haproxy bereitstellt, ist in den Standard-Debian-Repos verfügbar. Installieren Sie mit diesem Befehl:

sudo apt install -y haproxy

Bestätigen Sie die Installation mit diesem Befehl:

$ apt-cache policy haproxy
haproxy:
  Installed: 2.0.13-2ubuntu0.3
  Candidate: 2.0.13-2ubuntu0.3
  Version table:
 *** 2.0.13-2ubuntu0.3 500
        500 http://eu-west-3.ec2.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
        100 /var/lib/dpkg/status
     2.0.13-2 500
        500 http://eu-west-3.ec2.archive.ubuntu.com/ubuntu focal/main amd64 Packages

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 „“ durch den Namen Ihrer Server auf der Statistikseite und „“ durch die privaten IPs der Server, an die Sie den Webverkehr leiten möchten. Dies ist die Konfiguration, die ich auf meinem Server verwende

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, die dann den Datenverkehr an das Standard-Back-End namens 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. Passwort zum Schutz der HAProxy-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.


Ubuntu
  1. So installieren und konfigurieren Sie den Algo VPN-Server unter Ubuntu 20.04

  2. So installieren und konfigurieren Sie den DHCP-Server unter Ubuntu 20.04

  3. So konfigurieren Sie den HAProxy-Load-Balancer

  4. So installieren und konfigurieren Sie Squid Proxy unter Ubuntu 20.04

  5. So installieren und konfigurieren Sie den HAProxy-Load-Balancer unter Debian 11

So installieren und konfigurieren Sie den Apache-Webserver unter Ubuntu

So installieren und konfigurieren Sie LAMP Server unter Ubuntu

So installieren und konfigurieren Sie den OpenLDAP-Server unter Ubuntu 16.04

So installieren und konfigurieren Sie den VNC-Server unter Ubuntu 20.04

So installieren und konfigurieren Sie VNC auf Ubuntu Server 20.04

So installieren und konfigurieren Sie den DNS-Server unter Ubuntu 16.04 LTS