Installieren des HAProxy Load Balancer unter CentOS

Die Übersetzung des Artikels wurde am Vorabend des Kursbeginns erstellt Linux-Administrator. Virtualisierung und Clustering»

Installieren des HAProxy Load Balancer unter CentOS

Lastausgleich ist eine gängige Lösung zum Skalieren von Webanwendungen über mehrere Hosts hinweg und bietet Benutzern gleichzeitig einen einzigen Zugriffspunkt auf einen Dienst. HAProxy ist eine der beliebtesten Open-Source-Lastausgleichssoftware, die auch Hochverfügbarkeit und Proxying-Funktionalität bietet.

HAProxy zielt darauf ab, die Ressourcennutzung zu optimieren, den Durchsatz zu maximieren, die Antwortzeit zu minimieren und die Überlastung einzelner Ressourcen zu vermeiden. Es kann auf einer Vielzahl von Linux-Distributionen installiert werden, beispielsweise auf CentOS 8, auf das wir uns in diesem Handbuch konzentrieren werden, sowie auf Systemen Debian 8 и Ubuntu 16.

Installieren des HAProxy Load Balancer unter CentOS

HAProxy eignet sich besonders für sehr stark frequentierte Websites und wird daher häufig zur Verbesserung der Zuverlässigkeit und Leistung von Webservice-Konfigurationen mit mehreren Servern eingesetzt. In dieser Anleitung werden die Schritte zum Einrichten von HAProxy als Load Balancer auf einem CentOS 8-Cloud-Host beschrieben, der dann den Datenverkehr an Ihre Webserver weiterleitet.

Als Voraussetzung für beste Ergebnisse sollten Sie über mindestens zwei Webserver und einen Lastausgleichsserver verfügen. Auf Webservern muss mindestens ein grundlegender Webdienst wie Nginx oder httpd ausgeführt werden, um den Lastausgleich zwischen ihnen zu überprüfen.

Installation von HAProxy unter CentOS 8

Da es sich bei HAProxy um eine sich schnell entwickelnde Open-Source-Anwendung handelt, handelt es sich bei der in den Standard-CentOS-Repositorys verfügbaren Distribution möglicherweise nicht um die neueste Version. Um die neueste Version herauszufinden, führen Sie den folgenden Befehl aus:

sudo yum info haproxy

HAProxy stellt immer drei stabile Versionen zur Auswahl: die beiden aktuellsten unterstützten Versionen und die dritte, ältere Version, die noch wichtige Updates erhält. Sie können jederzeit die neueste stabile Version auf der HAProxy-Website überprüfen und dann entscheiden, mit welcher Version Sie arbeiten möchten.

In diesem Handbuch installieren wir die neueste stabile Version 2.0, die zum Zeitpunkt des Schreibens noch nicht in den Standard-Repositorys verfügbar war. Sie müssen es von der Originalquelle installieren. Prüfen Sie jedoch zunächst, ob Sie die notwendigen Voraussetzungen zum Herunterladen und Kompilieren des Programms erfüllt haben.

sudo yum install gcc pcre-devel tar make -y

Laden Sie den Quellcode mit dem folgenden Befehl herunter. Sie können unter überprüfen, ob eine neuere Version verfügbar ist HAProxy-Downloadseite.

wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz

Sobald der Download abgeschlossen ist, extrahieren Sie die Dateien mit dem folgenden Befehl:

tar xzvf ~/haproxy.tar.gz -C ~/

Wechseln Sie in das entpackte Quellverzeichnis:

cd ~/haproxy-2.0.7

Kompilieren Sie dann das Programm für Ihr System:

make TARGET=linux-glibc

Und schließlich HAProxy selbst installieren:

sudo make install

Jetzt ist HAProxy installiert, es sind jedoch einige zusätzliche Manipulationen erforderlich, damit es funktioniert. Fahren wir mit der Einrichtung der unten aufgeführten Software und Dienste fort.

Einrichten von HAProxy für Ihren Server

Fügen Sie nun die folgenden Verzeichnisse und Statistikdateien für HAProxy-Einträge hinzu:

sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy 
sudo touch /var/lib/haproxy/stats

Erstellen Sie einen symbolischen Link für die Binärdateien, damit Sie HAProxy-Befehle als normaler Benutzer ausführen können:

sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

Wenn Sie den Proxy als Dienst zu Ihrem System hinzufügen möchten, kopieren Sie die Datei haproxy.init aus den Beispielen in Ihr Verzeichnis /etc/init.d. Bearbeiten Sie die Berechtigungen der Datei, damit das Skript ausgeführt wird, und laden Sie dann den systemd-Daemon neu:

sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload

Sie müssen außerdem zulassen, dass der Dienst beim Systemstart automatisch neu gestartet wird:

sudo chkconfig haproxy on

Der Einfachheit halber wird außerdem empfohlen, einen neuen Benutzer hinzuzufügen, um HAProxy auszuführen:

sudo useradd -r haproxy

Anschließend können Sie die installierte Versionsnummer noch einmal mit dem folgenden Befehl überprüfen:

haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/

In unserem Fall sollte die Version 2.0.7 sein, wie in der Beispielausgabe oben gezeigt.

Schließlich ist die Standard-Firewall in CentOS 8 für dieses Projekt recht restriktiv. Verwenden Sie die folgenden Befehle, um die erforderlichen Dienste zu aktivieren und die Firewall zurückzusetzen:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload

Einrichten eines Load Balancers

Das Einrichten von HAProxy ist ein ziemlich einfacher Vorgang. Im Wesentlichen müssen Sie HAProxy lediglich mitteilen, welche Verbindungen es abhören und wohin es diese weiterleiten soll.

Dies geschieht durch die Erstellung einer Konfigurationsdatei /etc/haproxy/haproxy.cfg mit definierenden Einstellungen. Sie können sich über HAProxy-Konfigurationsoptionen informieren auf der Dokumentationsseitewenn du mehr darüber wissen willst.

Lastausgleich auf der Transportschicht (Schicht 4)

Beginnen wir mit der Grundeinrichtung. Erstellen Sie eine neue Konfigurationsdatei, zum Beispiel mit vi mit folgendem Befehl:

sudo vi /etc/haproxy/haproxy.cfg

Fügen Sie der Datei die folgenden Abschnitte hinzu. Ersetzen Servername derjenige, der Ihre Server auf der Statistikseite aufrufen soll, und private_ip - private IP-Adressen der Server, an die Sie den Webverkehr leiten möchten. Sie können private IP-Adressen überprüfen im UpCloud-Kontrollfeld und auf der Registerkarte Privates Netzwerk im menü Netzwerk.

global
   log /dev/log local0
   log /dev/log local1 notice
   chroot /var/lib/haproxy
   stats timeout 30s
   user haproxy
   group haproxy
   daemon

defaults
   log global
   mode http
   option httplog
   option dontlognull
   timeout connect 5000
   timeout client 50000
   timeout server 50000

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   default_backend http_back

backend http_back
   balance roundrobin
   server server_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

Dies definiert einen Transportschicht-Lastausgleichsdienst (Schicht 4) mit dem externen Namen http_front, der Port 80 überwacht und den Datenverkehr dann an das Standard-Backend mit dem Namen http_back weiterleitet. Zusätzliche Statistiken /haproxy?stats verbindet die Statistikseite mit der angegebenen Adresse.

Verschiedene Lastausgleichsalgorithmen.

Durch die Angabe von Servern im Backend-Abschnitt kann HAProxy diese Server nach Möglichkeit für den Lastausgleich gemäß dem Round-Robin-Algorithmus verwenden.

Mithilfe von Ausgleichsalgorithmen wird bestimmt, an welchen Server im Backend jede Verbindung gesendet wird. Hier sind einige der nützlichen Optionen:

  • Roundrobin: Jeder Server wird der Reihe nach entsprechend seinem Gewicht verwendet. Dies ist der reibungsloseste und fairste Algorithmus, wenn die Verarbeitungszeit der Server gleichmäßig verteilt bleibt. Dieser Algorithmus ist dynamisch, sodass Sie das Gewicht des Servers im laufenden Betrieb anpassen können.
  • Mindestverbindung: Es wird der Server mit den wenigsten Verbindungen ausgewählt. Round-Robin wird zwischen Servern mit derselben Auslastung durchgeführt. Die Verwendung dieses Algorithmus wird für lange Sitzungen wie LDAP, SQL, TSE usw. empfohlen, ist jedoch für kurze Sitzungen wie HTTP nicht sehr geeignet.
  • Zuerst: Der erste Server mit verfügbaren Verbindungssteckplätzen empfängt die Verbindung. Server werden von der niedrigsten bis zur höchsten numerischen ID ausgewählt, was standardmäßig der Position des Servers in der Farm entspricht. Sobald der Server den maxconn-Wert erreicht, wird der nächste Server verwendet.
  • Quelle: Die Quell-IP-Adresse wird gehasht und durch die Gesamtgewichtung der laufenden Server dividiert, um zu bestimmen, welcher Server die Anfrage empfängt. Somit wird dieselbe Client-IP-Adresse immer an denselben Server gesendet, während die Server unverändert bleiben.

Konfigurieren des Lastausgleichs auf der Anwendungsschicht (Schicht 7)

Eine weitere verfügbare Option besteht darin, den Load Balancer so zu konfigurieren, dass er auf der Anwendungsschicht (Schicht 7) arbeitet. Dies ist nützlich, wenn sich Teile Ihrer Webanwendung auf verschiedenen Hosts befinden. Dies lässt sich erreichen, indem die Übertragung der Verbindung, beispielsweise per URL, gedrosselt wird.

Öffnen Sie die HAProxy-Konfigurationsdatei mit einem Texteditor:

sudo vi /etc/haproxy/haproxy.cfg

Anschließend richten Sie die Frontend- und Backend-Segmente gemäß dem folgenden Beispiel ein:

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_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

backend blog_back
   server server_name3 private_ip3:80 check

Das Frontend deklariert eine ACL-Regel namens url_blog, die für alle Verbindungen gilt, deren Pfade mit /blog beginnen. Use_backend gibt an, dass Verbindungen, die der Bedingung url_blog entsprechen, vom Backend namens blog_back bedient werden sollen und alle anderen Anfragen vom Standard-Backend verarbeitet werden.

Im Backend richtet die Konfiguration zwei Servergruppen ein: http_back wie zuvor und eine neue namens blog_back, die Verbindungen zu example.com/blog verwaltet.

Nachdem Sie die Einstellungen geändert haben, speichern Sie die Datei und starten Sie HAProxy mit dem folgenden Befehl neu:

sudo systemctl restart haproxy

Wenn Sie beim Start Warnungen oder Fehlermeldungen erhalten, überprüfen Sie die Konfiguration auf eventuelle Warnungen und stellen Sie sicher, dass Sie alle erforderlichen Dateien und Ordner erstellt haben. Versuchen Sie dann erneut, neu zu starten.

Testen des Setups

Sobald HAProxy konfiguriert ist und ausgeführt wird, öffnen Sie die öffentliche IP-Adresse des Load Balancer-Servers in einem Browser und prüfen Sie, ob Sie sich korrekt mit dem Backend verbunden haben. Der Stats-URI-Parameter in der Konfiguration erstellt eine Statistikseite an der angegebenen Adresse.

http://load_balancer_public_ip/haproxy?stats

Wenn beim Laden der Statistikseite alle Ihre Server grün sind, war die Einrichtung erfolgreich!

Installieren des HAProxy Load Balancer unter CentOS

Die Statistikseite enthält einige nützliche Informationen zum Verfolgen Ihrer Webhosts, einschließlich Betriebs-/Ausfallzeiten und Anzahl der Sitzungen. Wenn der Server rot markiert ist, stellen Sie sicher, dass der Server aktiv ist und dass Sie ihn vom Load Balancer aus anpingen können.

Wenn Ihr Load Balancer nicht reagiert, stellen Sie sicher, dass HTTP-Verbindungen nicht durch eine Firewall blockiert werden. Stellen Sie außerdem sicher, dass HAProxy mit dem folgenden Befehl funktioniert:

sudo systemctl status haproxy

Schutz der Statistikseite mit einem Passwort

Wenn die Statistikseite jedoch nur im Frontend aufgeführt ist, ist sie für die Öffentlichkeit zugänglich, was möglicherweise keine gute Idee ist. Stattdessen können Sie ihm Ihre eigene Portnummer zuweisen, indem Sie das folgende Beispiel am Ende Ihrer haproxy.cfg-Datei hinzufügen. Ersetzen Benutzername и Passwort zu etwas Sicherem:

listen stats
   bind *:8181
   stats enable
   stats uri /
   stats realm Haproxy Statistics
   stats auth username:password

Entfernen Sie nach dem Hinzufügen der neuen Listener-Gruppe die alte Statistik-URI-Referenz aus der Frontend-Gruppe. Wenn Sie fertig sind, speichern Sie die Datei und starten Sie HAProxy neu.

sudo systemctl restart haproxy

Anschließend öffnen Sie den Load Balancer erneut mit der neuen Portnummer und melden sich mit dem Benutzernamen und Passwort an, die Sie in der Konfigurationsdatei angegeben haben.

http://load_balancer_public_ip:8181

Stellen Sie sicher, dass alle Ihre Server noch grün sind, und öffnen Sie dann nur die Load-Balancer-IP ohne Portnummern in Ihrem Browser.

http://load_balancer_public_ip/

Wenn Sie auf Ihren internen Servern zumindest einige verschiedene Landingpages haben, werden Sie feststellen, dass Sie jedes Mal, wenn Sie die Seite neu laden, eine Antwort von einem anderen Host erhalten. Sie können verschiedene Ausgleichsalgorithmen im Konfigurationsabschnitt ausprobieren oder sehen vollständige Dokumentation.

Fazit: HAProxy Load Balancer

Herzlichen Glückwunsch zur erfolgreichen Einrichtung Ihres HAProxy Load Balancers! Selbst mit einem einfachen Load-Balancing-Setup können Sie die Leistung und Verfügbarkeit Ihrer Webanwendung erheblich verbessern. Diese Anleitung ist lediglich eine Einführung in den Lastausgleich mit HAProxy, der viel mehr kann, als in einer Kurzanleitung zur Einrichtung beschrieben werden kann. Wir empfehlen, mit verschiedenen Konfigurationen zu experimentieren umfangreiche Dokumentationverfügbar für HAProxy und beginnen Sie dann mit der Planung des Lastausgleichs für Ihre Produktionsumgebung.

Durch die Verwendung mehrerer Hosts zum Schutz Ihres Webservices mit Spielraum kann der Load Balancer selbst immer noch eine Fehlerquelle darstellen. Sie können die Hochverfügbarkeit weiter verbessern, indem Sie eine Floating-IP zwischen mehreren Load Balancern einrichten. Mehr dazu erfahren Sie in unserem Artikel über Floating-IP-Adressen auf UpCloud.

Mehr zum Kurs Linux-Administrator. Virtualisierung und Clustering»***

Source: habr.com

Kommentar hinzufügen