So richten Sie Haproxy als Lastausgleich für Nginx auf CentOS 8 ein

So richten Sie Haproxy als Lastausgleich für Nginx auf CentOS 8 ein

Um die Verfügbarkeit der Webanwendungen, die Skalierbarkeit und die hohe Leistung zu gewährleisten, ist es jetzt üblich, Technologien zu implementieren, die Redundanz einführen, z. Stellen Sie beispielsweise eine Gruppe von Servern ein, die alle dieselben Anwendungen ausführen und dann vor ihnen Lastausgleichsanlage bereitstellen, um den Verkehr zu verteilen.

Haproxy ist eine Open-Source, leistungsstarke, hohe Leistung, zuverlässige, sichere und weit verbreitete hohe Verfügbarkeit TCP/HTTP Laden Sie den Balancer, den Proxy -Server und den SSL/TLS -Terminator für Websites mit sehr hohem Verkehrsmittel. Es läuft zuverlässig gut auf Linux, Solaris, FreeBSD, OpenBSD sowie AIX -Betriebssysteme.

Diese Anleitung zeigt, wie Sie einen dedizierten Hochverfügbarkeits -Lastausgleich mit Einrichtungen einrichten Haproxy An Centos 8 den Verkehr in einer Gruppe von zu steuern Nginx Webserver. Es zeigt auch, wie man konfiguriert SSL/TLS Kündigung in Haproxy.

Voraussetzungen:

Insgesamt 4 Server mit minimaler CentOS 8 -Installation.

Testumgebung einrichten

----------- Haproxy Server -Setup ----------- Ha Proxy Server - Hostname: Haproxy -Server.Tecmint.Lan; IP: 10.42.0.247 Test Site Domain: www.Tecmint.Lan ----------- Client -Webserver Setup ----------- Webserver Nr. 1 - Hostname: WebRV1.Tecmint.Lan; IP: 10.42.0.200 Webserver #2 - Hostname: WebRV2.Tecmint.Lan; IP: 10.42.0.21 Webserver #3 - Hostname: WebRV3.Tecmint.Lan; IP: 10.42.0.34 

Schritt 1: Einrichten von Nginx HTTP -Server auf den Client -Maschinen

1. Melden Sie sich in alle Ihre an Centos 8 Client -Maschinen und installieren Sie die Nginx Webserver mit dem DNF -Paket -Manager wie gezeigt.

# DNF Installieren Sie Nginx 

2. Als nächstes starten Sie die Nginx Ermöglichen Sie den Service, dass Sie vorerst automatisch am Systemstart beginnen und bestätigen, dass er in Betrieb ist, indem Sie den Status unter Verwendung der SystemCTL -Befehle überprüfen (dies auf allen Client -Maschinen ausführen).

# Systemctl start nginx # systemctl aktivieren nginx # systemctl status nginx 

3. Wenn der Firewalld -Dienst auf allen Client -Maschinen ausgeführt wird (die Sie durch Ausführen von SystemCTL Start Firewalld überprüfen können) müssen Sie die hinzufügen Http Und Https Dienste in der Firewall -Konfiguration, mit der Anforderungen des Lastbalancers durch die Firewall an die gelangen können Nginx Webserver. Dann die neu laden Firewall Service, um die neuen Änderungen zu bewirken (tun Sie dies auf allen Client -Maschinen).

# 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 Maschinen und testen Sie, ob die Nginx Die Installation funktioniert gut. Verwenden Sie die Client -IPs, um zu navigieren, sobald Sie die sehen Nginx Testseite bedeutet, dass der auf dem Client -Computer installierte Webserver ordnungsgemäß funktioniert.

Testen Sie die NGINX -Installation auf allen CentOS 8 Client -Maschinen

5. Als nächstes müssen wir Testseiten auf den Client -Maschinen erstellen, die wir später verwenden werden, um die zu testen Haproxy aufstellen.

----------- Webserver #1 ----------- # cp/usr/share/nginx/html/Index.html/usr/shary/nginx/html/Index.html.orig # echo "Site von WebSRV1 zeigt.Tecmint.lan ">/usr/shary/nginx/html/Index.html ----------- Webserver #2 ----------- # cp/usr/share/nginx/html/Index.html/usr/shary/nginx/html/Index.html.orig # echo "Site von WebSRV2 zeigt.Tecmint.lan ">/usr/shary/nginx/html/Index.html ----------- Webserver #3 ----------- # cp/usr/share/nginx/html/Index.html/usr/shary/nginx/html/Index.html.orig # echo "Site von WebSRV3 zeigt.Tecmint.lan ">/usr/shary/nginx/html/Index.html 

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

6. Installieren Sie nun die Haproxy Paket auf der Haproxy Server durch Ausführen des folgenden Befehls.

# DNF Installieren Sie Haproxy 

7. Als nächstes starten Sie die Haproxy Service, ermöglichen Sie den automatischen Start am Systemstart und überprüfen Sie seinen Status.

# Systemctl Start Haproxy # SystemCTL Aktivieren Sie Haproxy # SystemCTL -Status Haproxy 
Überprüfen Sie den Haproxy -Status in CentOS 8

8. Jetzt konfigurieren wir die HAPROXY mithilfe der folgenden Konfigurationsdatei.

# vi/etc/haproxy/haproxy.CFG 

Die Konfigurationsdatei ist in vier Hauptabschnitte unterteilt.

  • globale Einstellungen - Legt prozessweite Parameter fest.
  • Standardeinstellungen - In diesem Abschnitt werden Standardparameter für alle anderen Abschnitte nach seiner Deklaration festgelegt.
  • Frontend - In diesem Abschnitt wird eine Reihe von Hörbindungen beschrieben, die Client -Verbindungen akzeptieren.
  • Backend - In diesem Abschnitt wird eine Reihe von Servern beschrieben, zu denen der Proxy eine Verbindung zu weiteren eingehenden Verbindungen herstellt.

Um die Optionen unter zu verstehen globale Einstellungen Und Standardeinstellungen, Lesen Sie die Haproxy -Dokumentation (Link am Ende des Artikels angegeben). Für diese Anleitung werden wir die Standardeinstellungen verwenden.

Einrichten von Haproxy -Protokollierung

9. Haproxy Wenn Sie einmal bereitgestellt werden, spielt dies eine wichtige Rolle in Ihrer IT -Infrastruktur, wodurch die Konfiguration der Protokollierung für sie eine grundlegende Anforderung ist. Auf diese Weise können Sie Einblicke in jede Verbindung zu Ihren Backend -Webservern erhalten.

Der Protokollparameter (im folgenden Screenshot hervorgehoben) erklärt eine globale Syslog Server (z. B. rsyslog die Standardeinstellung in CentOS), die Protokollnachrichten empfangen. Hier kann mehr als ein Server deklariert werden.

Die Standardkonfiguration zeigt auf die Lokalhost (127.0.0.1) Und Lokal2 ist der Standard -Facility -Code, der zur Identifizierung von Haproxy -Protokollnachrichten unter identifiziert wird rsyslog.

Haproxy Standard -Protokollparameter

10. Als nächstes müssen Sie das sagen rsyslog Server, wie man empfängt und verarbeitet Haproxy Protokollnachrichten. Öffnen Sie die RSYSLog -Konfigurationsdatei nach /etc/rsyslog.Conf oder erstellen Sie eine neue Datei innerhalb der /etc/rsyslog.D Verzeichnis zum Beispiel /etc/rsyslog.D/Haproxy.Conf.

# vi /etc /rsyslog.D/Haproxy.Conf 

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

$ Modload iMUDP $ UDPSERVERADDRESS 127.0.0.1 $ udpserverrun 514 

Fügen Sie diese Linien auch hinzu, um sie zu unterweisen rsyslog Um auf zwei separate Protokolldateien basierend auf dem Schweregrad zu schreiben, wo Lokal2 ist der in der Haproxy -Konfiguration oben definierte Facility -Code oben.

Lokal2.*/var/log/hraproxy-traffic.Log Local2.Hinweis/var/log/hraproxy-admin.Protokoll 

11. Speichern Sie die Datei und schließen Sie sie. Dann starten Sie die neu neu rsyslog Service zur Anwendung der jüngsten Änderungen.

# SystemCTL Neustart Rsyslog neu starten 

Konfigurieren von Haproxy Front-End und Back-Ends

12. In diesem Abschnitt werden wir demonstrieren, wie die Front-End- und Back-End-Proxies konfiguriert werden können. Zurückgehen zur Haproxy Konfigurationsdatei und ändern Sie die Standardabschnitte für Front-End- und Backend wie folgt. Wir werden nicht in eine detaillierte Erklärung für jeden Parameter eingehen, Sie können sich immer auf die offizielle Dokumentation beziehen.

Die folgende Konfiguration definiert a Hören Abschnitt verwendet, um die zu servieren Haproxy -Statistiken Buchseite. Der binden Der Parameter weist eine bestimmte IP -Adresse einen Hörer zu (* für alle in diesem Fall) und Hafen (9000).

Die Statistiken ermöglichen Die Einstellung ermöglicht die Statistikseite, auf die mit dem zugegriffen wird URI /Statistiken (ich.e http: // server_ip: 9000/statistics).

Die Statistiken Auth Die Einstellung wird zum Hinzufügen einer grundlegenden Authentifizierung beim Zugriff auf die Seite verwendet (Ersetzen Haproxy Und [E -Mail geschützt] mit einem Benutzernamen und Passwort Ihrer Wahl).

Hörenstatistiken BIND *: 9000 STATS ENABLE STATS STATS STE-Version Statistiken URI /STATS STATS-Administrator Wenn Localhost-Statistiken Auth Haproxy: [E-Mail geschützt] 

13. Die nächste Konfiguration definiert einen Frontend -Abschnitt mit dem Namen Tl (Sie können einen Namen Ihres Geschmacks geben). Der Modus Parameter definiert den Modus, in dem Haproxy in Betrieb ist.

Der ACL (Zugriffskontrollliste) Der Parameter wird verwendet, um eine Entscheidung basierend auf aus der Anfrage extrahierten Inhalten zu treffen. In diesem Beispiel wird die Anfrage als einfach angesehen Http Wenn es nicht vorbei ist SSL.

Dann ist die HTTP-Request-Set-Header Die Einstellung wird verwendet, um der Anforderung einen HTTP -Header hinzuzufügen. Dies hilft zu informieren Nginx dass die anfängliche Anfrage befreit wurde Http (oder über Port 80).

Der default_backend oder use_backend Die Richtlinie definiert die Backend -Server in diesem Fall auf, auf die auf Tl_web_servers.

Beachten Sie, dass Haproxy wird eine zurückgeben "503 Service Nicht verfügbarer FehlerWenn eine Anfrage nicht von a geleitet wird use_backend oder default_backend Richtlinie.

Frontend TL Bind 

14. Dann müssen wir einen Backend -Abschnitt definieren, in dem die Gleichgewicht Einstellung definiert, wie Haproxy Wählt die Back-End-Server aus, um eine Anforderung zu verarbeiten, wenn keine Persistenzmethode diese Auswahl überschreibt.

Der Plätzchen Richtlinie ermöglicht Cookie-basiert Beharrlichkeit weist es an Haproxy um einen Cookie namens zu senden Serverid dem Kunden und um es mit dem zu verbinden AUSWEIS des Servers, der die erste Antwort gab.

Der Server Die Richtlinie wird verwendet, um die stromaufwärts gelegenen Server im Format zu definieren Sever_Name (e.G Webrv1), Server_ip: Port Und Optionen.

Eine Schlüsseloption ist überprüfen was sagt Haproxy Um die Verfügbarkeit eines Servers zu überprüfen und auf der Statistikseite zu melden.

Backend TL_Web_Servers -Modus HTTP Balance RoundRobin Option HTTPCHK Head / Cookie ServerUid Inventieren Sie indirekte Nocache Server WebRV1 10.42.0.200: 80 Cookie WebRV1 überprüfen Server WebRV2 10.42.0.21:80 Cookie WebRV2 überprüfen Server WebRV3 10.42.0.34:80 Cookie WebRV3 überprüfen 

Kommentieren Sie alle anderen Frontend- und Backend -Abschnitte, 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 jetzt die neu Haproxy Service zur Anwendung der neuen Änderungen.

# Systemctl Neustart Haproxy 

16. Stellen Sie als nächstes sicher, dass die Http (Hafen 80) Und Https (Hafen 433) Dienste werden in der Firewall eröffnet, um Kundenanfragen wie folgt zu akzeptieren. Auch offener Hafen 9000 In der Firewall zum Zugriff auf die STATS -Seite 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-Relad 

Schritt 3: Testen von Haproxy -Setup und Anzeigestatistik

17. Jetzt ist es Zeit, die zu testen Haprxoy aufstellen. Fügen Sie auf dem lokalen Desktop -Computer, auf dem Sie auf alle Server zugreifen, die folgende Zeile in den hinzu /etc/hosts Datei, mit der wir die Dummy -Site -Domäne 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 -Domäne.

http: // 10.42.0.247/oder http: // www.Tecmint.lan/ 
Überprüfen Sie das Haproxy -Setup

19. Zugreifen auf die Haproxy Statistikseite verwenden Sie die folgende Adresse.

http: // 10.42.0.247: 9000/Statistiken 

Verwenden Sie dann den Benutzernamen und das Kennwort, das Sie in der Haproxy -Konfigurationsdatei definiert haben (siehe STATS -Authaut -Parameter).

Haproxy -Statistik -Anmeldeseite

Nach einem erfolgreichen Login landen Sie am Haproxy Statistikseite, auf der Sie Kennzahlen zeigen, die die Gesundheit Ihrer Server, aktuelle Anforderungsraten, Reaktionszeiten und vieles mehr abdecken.

Um zu demonstrieren, wie der Statusbericht über die 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 werden wir demonstrieren, wie man konfiguriert SSL/TLS um alle Mitteilungen zwischen dem Haproxy -Server und dem Client zu sichern. Hafroxy unterstützt vier Major Https Konfigurationsmodi, aber für diese Anleitung werden wir verwenden SSL/TLS abladen.

In SSL/TLS Ausladungsmodus, Haproxy Entschlüsselt den Datenverkehr auf der Kundenseite und wird im klaren Verkehr an die Backend-Server angeschlossen.

Wir werden zunächst die erstellen Zertifikat Und Taste Wie gezeigt (beantworten Sie die Fragen entsprechend, basierend auf Ihren Unternehmensdetails während der Erstellung von Zertifikaten, 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.Schlüssel -out/etc/ssl/tecmint.Lan.CRT # CD/etc/ssl/tecmint.Lan/ # Cat Tecmint.CRT Tecmint.Schlüssel> Tecmint.pem # ls -l 
Erstellen Sie SSL für Haproxy

21. Als nächstes öffnen Sie die Haproxy Konfigurationsdatei (/etc/hraproxy/hraproxy.CFG) und bearbeiten Sie den Front-End-Abschnitt.

Frontend TL Bind *: 80 Bind *: 443 SSL CRT/etc/ssl/tecmint.Lan/Tecmint.PEM -Umleitungsschema https wenn !oder 
Konfigurieren Sie Haproxy Front-End mit SSL

Speichern Sie die Datei und schließen Sie sie.

22. Starten Sie dann den Haproxy -Service neu, um die neuen Änderungen anzuwenden.

# Systemctl Neustart Haproxy.Service 

23. Öffnen Sie als nächstes einen Webbrowser und versuchen Sie noch einmal auf die Website zuzugreifen. Der Browser zeigt einen Fehler aufgrund des selbstsignierten Zertifikats an, klicken Sie auf Fortschrittlich fortfahren.

Haproxy SSL -Verbindungsfehler Fahren Sie mit der Verbindung fort Zugriff auf Site über https

Das ist alles fürs Erste! Jede Webanwendung hat ihre eigenen Anforderungen. Sie müssen Lastausgleich entwerfen und konfigurieren, um Ihre IT -Infrastruktur und die Anforderungen der Anwendung zu erfüllen.

Um mehr Einblicke in einige der in diesem Handbuch verwendeten Konfigurationsoptionen zu erhalten, und im Allgemeinen in der Verwendung Haproxy, Siehe die offizielle Dokumentation der Haproxy Community Edition oder die Haproxy Enterprise -Versionsdokumentation. Sie können Fragen oder Gedanken über das Feedback -Formular unten veröffentlichen.