GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So richten Sie HAProxy als Load Balancer für Nginx unter CentOS 8 ein

Um eine maximale Verfügbarkeit, Skalierbarkeit und hohe Leistung von Webanwendungen zu gewährleisten, ist es heute üblich, Technologien zu implementieren, die Redundanz einführen, wie z. B. Server-Clustering und Lastausgleich. Beispielsweise das Einrichten eines Clusters von Servern, auf denen alle dieselbe(n) Anwendung(en) ausführen, und dann das Bereitstellen von Load Balancer(s) vor ihnen, um den Datenverkehr zu verteilen.

HAProxy ist ein leistungsstarkes, leistungsstarkes, zuverlässiges, sicheres und weit verbreitetes Open-Source-TCP/HTTP mit hoher Verfügbarkeit Load Balancer, Proxy-Server und SSL/TLS-Terminator für Websites mit sehr hohem Datenverkehr. Es läuft zuverlässig gut unter Linux , Solaris , FreeBSD , OpenBSD sowie AIX-Betriebssysteme.

Diese Anleitung zeigt, wie Sie mit HAProxy einen dedizierten Hochverfügbarkeits-Load-Balancer einrichten auf CentOS 8 um den Datenverkehr in einem Cluster von NGINX zu steuern Webserver. Außerdem wird gezeigt, wie SSL/TLS konfiguriert wird Terminierung in HAProxy .

Voraussetzungen:

Insgesamt 4 Server mit minimaler Installation von CentOS 8.

Einrichtung der Testumgebung

----------- HAProxy-Server-Setup ----------- HA-Proxy-Server – Hostname:haproxy-server.tecmint.lan; IP:10.42.0.247Test-Site-Domäne:www.tecmint.lan----------- Client-Webserver-Setup ----------- Webserver Nr. 1 – Hostname:websrv1.tecmint.lan; IP:10.42.0.200Webserver #2 - Hostname:websrv2.tecmint.lan; IP:10.42.0.21Webserver #3 - Hostname:websrv3.tecmint.lan; IP:10.42.0.34

Schritt 1:Einrichten des Nginx-HTTP-Servers auf den Client-Rechnern

1. Melden Sie sich bei all Ihrem CentOS 8 an Client-Computer und installieren Sie Nginx Webserver, der den dnf-Paketmanager wie gezeigt verwendet.

# dnf Nginx installieren

2. Als nächstes starten Sie Nginx aktivieren Sie ihn vorerst so, dass er beim Systemstart automatisch startet, und bestätigen Sie, dass er betriebsbereit ist, indem Sie seinen Status mit den systemctl-Befehlen überprüfen (tun Sie dies auf allen Client-Rechnern).

# systemctl start nginx# systemctl enable nginx# systemctl status nginx

3. Wenn der Firewalld-Dienst auf allen Client-Rechnern ausgeführt wird (was Sie überprüfen können, indem Sie systemctl start firewalld ausführen), müssen Sie außerdem HTTP hinzufügen und HTTPS Dienste in der Firewall-Konfiguration, um Anfragen vom Load Balancer durch die Firewall zu Nginx passieren zu lassen Webserver. Laden Sie dann die Firewalld neu Dienst, um die neuen Änderungen zu übernehmen (tun Sie dies auf allen Client-Rechnern).

# firewall-cmd --zone=public --permanent --add-service=http# firewall-cmd --zone=public --permanent --add-service=https# firewall-cmd --reload 

4. Öffnen Sie als Nächstes einen Webbrowser auf Ihren lokalen Computern und testen Sie, ob die Nginx Installation funktioniert gut. Verwenden Sie die Client-IPs zum Navigieren, sobald Sie Nginx sehen Testseite bedeutet dies, dass der auf dem Client-Rechner installierte Webserver ordnungsgemäß funktioniert.

Testen Sie die Nginx-Installation auf allen CentOS 8-Clientcomputern

5. Als nächstes müssen wir Testseiten auf den Client-Rechnern erstellen, die wir später zum Testen des HAProxy verwenden werden einrichten.

----------- Webserver Nr. 1 ----------- # cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig# echo "Site von websrv1.tecmint.lan wird angezeigt"> /usr/share/nginx/html/ index.html----------- Webserver #2 ----------- # cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig# echo "Site von websrv2.tecmint.lan wird angezeigt"> /usr/share/nginx/html/ index.html----------- Webserver #3 ----------- # cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig# echo "Site von websrv3.tecmint.lan wird angezeigt"> /usr/share/nginx/html/ index.html

Schritt 2:Installieren und Konfigurieren von HAProxy Server auf CentOS 8

6. Installieren Sie nun den HAProxy Paket auf dem HAProxy Server, indem Sie den folgenden Befehl ausführen.

# dnf installiere Haproxy

7. Als nächstes starten Sie HAProxy aktivieren, beim Systemstart automatisch starten und seinen Status überprüfen.

# systemctl start haproxy# systemctl enable haproxy# systemctl status haproxy

Überprüfen Sie den HAProxy-Status in CentOS 8

8. Jetzt konfigurieren wir den HAProxy mit der folgenden Konfigurationsdatei.

# vi /etc/haproxy/haproxy.cfg

Die Konfigurationsdatei ist in vier Hauptabschnitte unterteilt.

  • globale Einstellungen – setzt prozessweite Parameter.
  • Standards – Dieser Abschnitt setzt Standardparameter für alle anderen Abschnitte nach seiner Deklaration.
  • Frontend – Dieser Abschnitt beschreibt eine Reihe von Listening-Sockets, die Client-Verbindungen akzeptieren.
  • Backend – Dieser Abschnitt beschreibt eine Reihe von Servern, mit denen sich der Proxy verbindet, um eingehende Verbindungen weiterzuleiten.

Um die Optionen unter globale Einstellungen zu verstehen und Standards , lesen Sie die HAProxy-Dokumentation (Link am Ende des Artikels). Für diese Anleitung verwenden wir die Standardeinstellungen.

HAProxy-Protokollierung einrichten

9. HAProxy wenn die Bereitstellung eine wichtige Rolle in Ihrer IT-Infrastruktur spielt, ist die Konfiguration der Protokollierung dafür eine Grundvoraussetzung; Dadurch erhalten Sie Einblicke in jede Verbindung zu Ihren Back-End-Webservern.

Der Protokollparameter (hervorgehoben im folgenden Screenshot) deklariert ein globales Syslog Server (z. B. rsyslog, der Standard in CentOS), der Protokollmeldungen empfängt. Hier kann mehr als ein Server angegeben werden.

Die Standardkonfiguration zeigt auf den localhost (127.0.0.1 ) und local2 ist der standardmäßige Einrichtungscode, der verwendet wird, um HAProxy-Protokollmeldungen unter rsyslog zu identifizieren .

HAProxy-Standardprotokollparameter

10. Als nächstes müssen Sie das rsyslog mitteilen Server, wie er HAProxy empfängt und verarbeitet Log-Meldungen. Öffnen Sie die rsyslog-Konfigurationsdatei in /etc/rsyslog.conf oder erstellen Sie eine neue Datei in /etc/rsyslog.d Verzeichnis, zum Beispiel /etc/rsyslog.d/haproxy.conf .

# vi /etc/rsyslog.d/haproxy.conf

Kopieren Sie die folgende Konfiguration und fügen Sie sie ein, um das Protokoll mit UDP zu erfassen auf dem Standardport 514 .

$ModLoad imudp $UDPServerAddress 127.0.0.1 $UDPServerRun 514 

Fügen Sie auch diese Zeilen hinzu, um rsyslog anzuweisen um basierend auf dem Schweregrad in zwei separate Protokolldateien zu schreiben, wobei local2 ist der in der HAProxy-Konfiguration oben definierte Einrichtungscode.

local2.* /var/log/haproxy-traffic.log local2.notice /var/log/haproxy-admin.log

11. Speichern Sie die Datei und schließen Sie sie. Starten Sie dann das rsyslog neu Dienst, um die letzten Änderungen zu übernehmen.

# systemctl rsyslog neu starten

Konfigurieren von HAProxy Frontend und Backends

12. In diesem Abschnitt zeigen wir, wie die Front-End- und Back-End-Proxys konfiguriert werden. Gehen Sie zurück zum HAProxy Konfigurationsdatei und ändern Sie die standardmäßigen Front-End- und Back-End-Abschnitte wie folgt. Wir werden nicht auf eine detaillierte Erklärung der einzelnen Parameter eingehen, Sie können sich jederzeit auf die offizielle Dokumentation beziehen.

Die folgende Konfiguration definiert ein listen Abschnitt, der verwendet wird, um die HAProxy-Statistiken bereitzustellen Seite. Die Bindung Der Parameter weist einen Listener einer bestimmten IP-Adresse zu (* für alle in diesem Fall) und Port (9000 ).

Die Statistiken aktivieren -Einstellung aktiviert die Statistikseite, auf die über die URI /stats zugegriffen wird (z. B. http://server_ip:9000/stats ).

Die Statistik auth Die Einstellung wird verwendet, um eine grundlegende Authentifizierung beim Zugriff auf die Seite hinzuzufügen (ersetzen Sie haproxy und [email protected] mit einem Benutzernamen und Passwort Ihrer Wahl).

listen stats bind *:9000 stats enable stats hide-version stats uri /stats stats admin if LOCALHOST stats auth haproxy:[email protected]

13. Die nächste Konfiguration definiert einen Frontend-Abschnitt namens TL (Sie können einen Namen Ihrer Wahl vergeben). Der Modus Der Parameter definiert den Modus, in dem HAProxy arbeitet.

Die acl Der Parameter (Access Control List) wird verwendet, um eine Entscheidung basierend auf dem aus der Anfrage extrahierten Inhalt zu treffen. In diesem Beispiel wird die Anfrage als einfaches HTTP angesehen wenn es nicht über SSL erfolgt .

Dann der http-request set-header -Einstellung wird verwendet, um der Anforderung einen HTTP-Header hinzuzufügen. Dies hilft, Nginx zu informieren dass die ursprüngliche Anfrage über HTTP gestellt wurde (oder über Port 80 ).

Das default_backend oder use_backend Direktive definiert die Backend-Server, in diesem Fall referenziert durch TL_web_servers .

Beachten Sie, dass HAProxy gibt den Fehler „503 Dienst nicht verfügbar zurück ” wenn eine Anfrage nicht von einem use_backend weitergeleitet wird oder default_backend Richtlinie.

frontend TL bind *:80 mode http acl http ssl_fc,not http-request set-header X-Forwarded-Protocol http if http default_backend TL_web_servers

14. Dann müssen wir einen Backend-Abschnitt definieren, in dem die Balance Einstellung definiert, wie HAProxy wählt die Back-End-Server zum Verarbeiten einer Anfrage aus, wenn keine Persistenzmethode diese Auswahl außer Kraft setzt.

Das Cookie Richtlinie aktiviert Cookie-basiert Persistenz, weist es HAProxy an um ein Cookie namens SERVERID zu senden an den Client zu senden und mit der ID zu verknüpfen des Servers, der die erste Antwort gegeben hat.

Der Server Direktive wird verwendet, um die Upstream-Server im Format sever_name zu definieren (zB websrv1 ), server_IP:port und Optionen .

Eine wichtige Option ist Häkchen was HAProxy mitteilt um die Verfügbarkeit eines Servers zu überprüfen und auf der Statistikseite zu berichten.

Backend TL_web_servers mode http balance roundrobin option httpchk HEAD / cookie SERVERUID insert indirekt nocache server websrv1 10.42.0.200:80 cookie websrv1 check server websrv2 10.42.0.21:80 cookie websrv2 check server websrv3 10.42.0.34:80 cookie websrv3 check 

Kommentieren Sie alle anderen Frontend- und Backend-Abschnitte aus, wie im folgenden Screenshot gezeigt. Speichern Sie die Datei und schließen Sie sie.

Konfigurieren von HAProxy Front-End und Back-Ends

15. Starten Sie nun den HAProxy neu Dienst, um die neuen Änderungen zu übernehmen.

# systemctl Haproxy neu starten

16. Stellen Sie als Nächstes sicher, dass die HTTP (Port 80 ) und HTTPS (Port 433 )-Dienste werden in der Firewall geöffnet, um Client-Anforderungen wie folgt zu akzeptieren. Öffnen Sie außerdem Port 9000 in der Firewall für den Zugriff auf die Statistikseite und laden Sie die Firewall-Einstellungen neu.

# firewall-cmd --zone=public --permanent --add-service=http# firewall-cmd --zone=public --permanent –add-service=https# firewall-cmd --zone=public - -permanent --add-port=9000/tcp# firewall-cmd --reload

Schritt 3:HAProxy-Setup testen und Statistiken anzeigen

17. Jetzt ist es an der Zeit, den HAPrxoy zu testen aufstellen. Fügen Sie auf dem lokalen Desktop-Computer, von dem aus Sie auf alle Server zugreifen, die folgende Zeile in /etc/hosts hinzu Datei, damit wir die Dummy-Site-Domain verwenden können.

10.42.0.247 www.tecmint.lan

18. Öffnen Sie dann einen Browser und navigieren Sie entweder mit der Serveradresse oder der Site-Domain.

http://10.42.0.247/ODERhttp://www.tecmint.lan/

Überprüfen Sie die HAProxy-Einrichtung

19. Zugriff auf HAProxy Statistikseite verwenden Sie die folgende Adresse.

http://10.42.0.247:9000/stats

Verwenden Sie dann den Benutzernamen und das Passwort, die Sie in der HAProxy-Konfigurationsdatei definiert haben (siehe Parameter stats auth).

Anmeldeseite für HAProxy-Statistiken

Nach erfolgreicher Anmeldung landen Sie beim HAProxy Statistikseite, die Ihnen Metriken zeigt, die den Zustand Ihrer Server, aktuelle Anforderungsraten, Antwortzeiten und vieles mehr abdecken.

Um zu demonstrieren, wie der Statusbericht bezüglich der Farbcodes funktioniert, haben wir einen der Back-End-Server eingestellt.

HAProxy-Statistikbericht

Schritt 4:Konfigurieren von HTTPS in HAProxy mit einem selbstsignierten SSL-Zertifikat

20. In diesem letzten Abschnitt zeigen wir Ihnen, wie Sie SSL/TLS konfigurieren um die gesamte Kommunikation zwischen dem HAProxy-Server und dem Client zu sichern. HAProxy unterstützt vier wichtige HTTPS Konfigurationsmodi, aber für diese Anleitung verwenden wir SSL/TLS Entladen.

In SSL/TLS Auslagerungsmodus, HAProxy entschlüsselt den Datenverkehr auf der Client-Seite und wird in klarem Datenverkehr mit den Backend-Servern verbunden.

Wir beginnen mit der Erstellung des Zertifikats und Schlüssel wie gezeigt (beantworten Sie die Fragen entsprechend anhand Ihrer Unternehmensdaten während der Zertifikatserstellung, wie auf dem Screenshot hervorgehoben).

# mkdir /etc/ssl/tecmint.lan# cd /etc/ssl/tecmint.lan/# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/tecmint.lan. key -out /etc/ssl/tecmint.lan.crt# cd /etc/ssl/tecmint.lan/# cat tecmint.crt tecmint.key>tecmint.pem# ls -l

SSL für HAProxy erstellen

21. Öffnen Sie als Nächstes das HAProxy Konfigurationsdatei (/etc/haproxy/haproxy.cfg ) und bearbeiten Sie den Frontend-Abschnitt.

frontend TL bind *:80 bind *:443 ssl crt /etc/ssl/tecmint.lan/tecmint.pem Umleitungsschema https if !{ ssl_fc } mode http acl http ssl_fc,not acl https ssl_fc http-request set- header X-Forwarded-Protocol http wenn http http-request set-header X-Forwarded-Protocol https wenn https default_backend TL_web_servers

HAProxy-Frontend mit SSL konfigurieren

Speichern Sie die Datei und schließen Sie sie.

22. Starten Sie dann den HAProxy-Dienst neu, um die neuen Änderungen zu übernehmen.

# systemctl haproxy.service neu starten

23. Öffnen Sie als Nächstes einen Webbrowser und versuchen Sie erneut, auf die Website zuzugreifen. Der Browser zeigt wegen des selbstsignierten Zertifikats einen Fehler an, klicken Sie auf Erweitert um fortzufahren.

HAProxy-SSL-Verbindungsfehler

Fahren Sie mit Verbindung fort

Zugriff auf die Website über HTTPS

Das ist jetzt alles! Jede Webanwendung hat ihre eigenen Anforderungen. Sie müssen den Lastenausgleich so entwerfen und konfigurieren, dass er den Anforderungen Ihrer IT-Infrastruktur und Anwendung entspricht.

Um mehr Einblicke in einige der Konfigurationsoptionen zu erhalten, die in diesem Handbuch verwendet werden, und allgemein zur Verwendung von HAProxy finden Sie in der offiziellen HAProxy Community Edition-Dokumentation oder der HAProxy Enterprise-Versionsdokumentation. Sie können Fragen oder Gedanken über das Feedback-Formular unten posten.

Sharing is Caring…
Auf Facebook teilenAuf Twitter teilenAuf Linkedin teilenAuf Reddit teilen
Cent OS
  1. So richten Sie einen SFTP-Server unter CentOS ein

  2. So richten Sie einen SysLog-Server unter CentOS 7 / RHEL 7 ein

  3. So richten Sie den NFS-Server unter CentOS 7 / RHEL 7 ein

  4. So konfigurieren Sie den HAProxy-Load-Balancer

  5. So richten Sie die MySQL-Replikation unter CentOS ein

So installieren Sie HAProxy unter CentOS 7

So richten Sie HAProxy als Load Balancer für Nginx in CentOS 7 ein

So installieren Sie Nginx unter CentOS 7

So konfigurieren Sie NGINX auf einem CentOS 7-Server

So richten Sie HAProxy unter CentOS 8 ein

So richten Sie einen NGINX RTMP-Server für das Streaming ein