HAProxy steht für High Availability Proxy. In C geschrieben, ist es eine kostenlose und Open-Source-TCP/HTTP-Load-Balancer- und Proxying-Lösung für TCP- und HTTP-basierte Anwendungen. HAProxy wird verwendet, um die Leistung einer Serverumgebung zu verbessern, indem die Arbeitslast auf mehrere Server verteilt wird.
HAProxy ermöglicht es einer Anwendung, im Falle eines Ausfalls automatisch neu zu starten oder die Arbeit auf einen anderen Server umzuleiten. Dieser leistungsstarke, zuverlässige und sichere Load Balancer ist der am weitesten verbreitete und wurde speziell für Websites mit sehr hohem Datenverkehr entwickelt.
In diesem Tutorial zeigen wir Ihnen, wie Sie mit HAProxy unter CentOS 8 einen Hochverfügbarkeits-Load-Balancer einrichten.
Voraussetzungen
- Drei frische CentOS 8-VPS auf der Atlantic.Net Cloud-Plattform
- Ein auf jedem VPS konfiguriertes Root-Passwort
Für dieses Tutorial verwenden wir das folgende Setup:
HAProxy-Server: – Hostname:Haproxy-IP:192.168.0.10
Webserver 1:- Hostname:web1 IP:192.168.0.11
Webserver 2:- Hostname:web2 IP:192.168.0.12
Schritt 1 – Erstellen Sie einen Atlantic.Net Cloud-Server
Melden Sie sich zunächst bei Ihrem Atlantic.Net Cloud Server an. Erstellen Sie einen neuen Server und wählen Sie CentOS 8 als Betriebssystem mit mindestens 1 GB RAM. Stellen Sie über SSH eine Verbindung zu Ihrem Cloud-Server her und melden Sie sich mit den oben auf der Seite hervorgehobenen Anmeldeinformationen an.
Sobald Sie sich bei Ihrem CentOS 8-Server angemeldet haben, führen Sie den folgenden Befehl aus, um Ihr Basissystem mit den neuesten verfügbaren Paketen zu aktualisieren.
dnf update -y
Schritt 2 – Nginx installieren und konfigurieren
Hinweis:Führen Sie diesen Schritt auf WebServer 1 und WebServer2 aus
Zuerst müssen Sie den Nginx-Webserver auf den Instanzen web1 und web2 installieren.
Sie können Nginx installieren, indem Sie den folgenden Befehl ausführen:
dnf install nginx -y
Starten Sie nach der Installation von Nginx den Nginx-Dienst und aktivieren Sie ihn so, dass er beim Booten auf beiden Instanzen gestartet wird:
systemctl start nginx systemctl enable nginx
Ändern Sie als Nächstes die index.html Datei auf jeder Instanz.
Ändern Sie index.html Datei auf web1 Instanz mit dem folgenden Befehl:
echo "This is My First Nginx Web Server" > /usr/share/nginx/html/index.html
Ändern Sie index.html Datei auf web2 Instanz mit dem folgenden Befehl:
echo "This is My Second Nginx Web Server" > /usr/share/nginx/html/index.html
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Schritt 3 – HAProxy installieren und konfigurieren
Hinweis:Führen Sie diesen Schritt auf HAProxy Server aus
Installieren Sie zuerst HAProxy auf der Haproxy-Serverinstanz mit dem folgenden Befehl:
dnf install haproxy -y
Sichern Sie nach Abschluss der Installation die Haproxy-Standardkonfigurationsdatei:
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg-bak
Die Konfigurationsdatei ist in vier Hauptabschnitte unterteilt.
- globale Einstellungen: Wird verwendet, um prozessweite Parameter einzustellen.
- Standard: Wird verwendet, um Standardparameter für alle anderen Abschnitte festzulegen.
- Frontend: Wird verwendet, um zu definieren, wie auf HAProxy extern zugegriffen wird, um den Zugriff auf das Backend zu ermöglichen.
- Backend: Wird verwendet, um eine Reihe von Servern zu definieren, mit denen sich der Proxy verbindet, um eingehende Verbindungen weiterzuleiten.
Erstellen Sie als Nächstes eine neue Haproxy-Konfigurationsdatei mit dem folgenden Befehl:
nano /etc/haproxy/haproxy.cfg
Fügen Sie die folgenden Zeilen hinzu, die Ihrer Infrastruktur entsprechen:
#———————————————————————
global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon
# Statistik-Unix-Socket einschalten
stats socket /var/lib/haproxy/stats
# Systemweite Krypto-Richtlinien nutzen
ssl-default-bind-ciphers PROFILE=SYSTEM ssl-default-server-ciphers PROFILE=SYSTEM
#———————————————————————
defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000
#———————————————————————
# Haupt-Frontend, das an die Backends weiterleitet
#———————————————————————
frontend haproxy_balancer # define the name of the frontend. bind 192.168.0.10:80 # IP address of HAProxy server option http-server-close option forwardfor stats uri /haproxy?stats # Specify the HAProxy status page. default_backend webservers
#———————————————————————
# Round-Robin-Ausgleich zwischen den verschiedenen Backends
#———————————————————————
Backend-Webserver # Geben Sie einen Namen an, um eine Anwendung zu identifizieren
mode http balance roundrobin # defines the roundrobin load balancer scheduling algorithm option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost server nginx-web1 192.168.0.11:80 check # IP address of the first backend server server nginx-web2 192.168.0.12:80 check # IP address of the second backend server
Hinweis:Stellen Sie sicher, dass Sie die obige IP-Adresse mit der IP-Adresse ergänzen, die für Ihre Serverkonfiguration relevant ist
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Überprüfen Sie dann die Haproxy-Konfigurationsdatei mit dem folgenden Befehl auf Fehler:
haproxy -c -f /etc/haproxy/haproxy.cfg
Sie sollten die folgende Ausgabe erhalten:
Configuration file is valid
Starten Sie schließlich den Haproxy-Dienst und ermöglichen Sie ihm, beim Booten mit dem folgenden Befehl zu starten:
systemctl start haproxy systemctl enable haproxy
Sie können Haproxy auch mit dem folgenden Befehl verifizieren:
systemctl status haproxy
Sie sollten die folgende Ausgabe erhalten:
haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2020-04-24 02:14:55 EDT; 5min ago Process: 1371 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q (code=exited, status=0/SUCCESS) Main PID: 1373 (haproxy) Tasks: 2 (limit: 6087) Memory: 2.8M CGroup: /system.slice/haproxy.service ├─1373 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid └─1374 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid Apr 24 02:14:55 haproxy systemd[1]: Starting HAProxy Load Balancer... Apr 24 02:14:55 haproxy systemd[1]: Started HAProxy Load Balancer.
Schritt 4 – HAProxy-Protokollierung konfigurieren
Mit der HAProxy-Protokollierung können Sie Statistiken zu jeder Verbindung zu Ihren Backend-Webservern anzeigen.
Sie können rsyslog konfigurieren, indem Sie die Datei /etc/rsyslog.conf:
bearbeitennano /etc/rsyslog.conf
Entkommentieren Sie die folgende Zeile:
module(load="imudp") input(type="imudp" port="514")
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Als Nächstes müssen Sie einen rsyslog-Server konfigurieren, um HAProxy-Protokollmeldungen zu empfangen und zu verarbeiten.
Erstellen Sie dazu eine neue Konfigurationsdatei haproxy.conf:
nano /etc/rsyslog.d/haproxy.conf
Fügen Sie die folgenden Zeilen hinzu:
local2.=info /var/log/haproxy-access.log local2.notice /var/log/haproxy-info.log
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie dann den rsyslog-Dienst neu und aktivieren Sie ihn beim Booten mit dem folgenden Befehl:
systemctl restart rsyslog systemctl enable rsyslog
Schritt 5 – HAProxy Load Balancing testen
An diesem Punkt ist HAProxy installiert und konfiguriert. Es ist an der Zeit zu testen, ob das Load-Balancing funktioniert oder nicht.
Öffnen Sie Ihren Webbrowser und geben Sie Ihre HAProxy-IP http://192.168.0.10 ein. Sie sollten den Inhalt Ihres ersten Nginx-Webservers auf dem folgenden Bildschirm sehen:
Aktualisieren Sie als Nächstes die Webseite. Sie sollten den Inhalt Ihres zweiten Nginx-Webservers auf dem folgenden Bildschirm sehen:
Sie können den Status von Haproxy über die URL http://192.168.0.10/haproxy?stats anzeigen. Auf dem folgenden Bildschirm sollten Sie den Zustand Ihrer Server, aktuelle Anforderungsraten, Antwortzeiten und andere Messwerte sehen:
Schlussfolgerung
In der obigen Anleitung haben wir gelernt, wie man einen Hochverfügbarkeits-Load-Balancer mit HAProxy auf CentOS 8 einrichtet. Sie können jetzt ganz einfach Load-Balancing entwerfen und konfigurieren, um es an Ihre IT-Infrastruktur und die Anforderungen Ihrer Anwendung anzupassen; Probieren Sie es auf VPS-Hosting von Atlantic.Net aus.