HAProxy ist ein kostenloser HTTP/TCP-Load-Balancer und Proxy-Server mit hoher Verfügbarkeit. Es verteilt Anfragen auf mehrere Server, um Probleme zu mindern, die sich aus einem Ausfall eines einzelnen Servers ergeben. HA Proxy wird von einer Reihe hochkarätiger Websites verwendet, darunter GitHub, Bitbucket, Stack Overflow, Reddit, Tumblr, Twitter und Tuenti, und wird im OpsWorks-Produkt von Amazon Web Services verwendet.
Hier bei LinuxAPT helfen wir unseren Kunden im Rahmen unserer Server Management Services regelmäßig dabei, entsprechende HAProxy-Konfigurationsabfragen durchzuführen.
In diesem Zusammenhang werden wir untersuchen, wie Sie HAProxy auf Ihrem CentOS 8-System installieren.
Schritte zum Installieren und Konfigurieren von HAProxy unter CentOS 8
1. Systemaktualisierung durchführen
Lassen Sie uns zunächst sicherstellen, dass Ihr System auf dem neuesten Stand ist:
$ sudo alles bereinigen
$ sudo dnf update
2. HAProxy auf dem System installieren
HAProxy ist auf dem standardmäßigen CentOS 8 verfügbar. Verwenden Sie nun den folgenden dnfa-Befehl, um HAProxy zu installieren:
$ sudo dnf install haproxy
Als nächstes müssen wir überprüfen, ob HAProxy jedes Mal startet, wenn wir unseren Server neu starten. Wir können das mit dem folgenden chkconfig-Befehl erreichen:
$ chkconfig Haproxy ein
3. HAProxy konfigurieren
Wir werden eine Konfigurationsdatei /etc/haproxy/haproxy.cfg erstellen, die die notwendigen Einstellungen und Konfigurationen enthält:
$ sudo nano /etc/haproxy/haproxy.cfg
Geben Sie Folgendes in die Datei ein:
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
PID-Datei /var/run/haproxy.pid
maxconn 4000
Benutzer haproxy
Gruppenhaproxy
Dämon
Statistik-Socket /var/lib/haproxy/stats
ssl-default-bind-ciphers PROFILE=SYSTEM
ssl-default-server-chiffren PROFILE=SYSTEM
Voreinstellungen
Modus http
global protokollieren
Option httplog
Option dontlognull
Option http-server-close
Option forwardfor außer 127.0.0.0/8
Option Redispatch
Wiederholungen 3
Timeout http-Request 10s
Timeout-Warteschlange 1m
Zeitüberschreitung verbinden 10s
Zeitüberschreitung Client 1m
Timeout-Server 1m
timeout http-keep-alive 10s
Timeout-Prüfung 10s
maxconn3000
Frontend Haupt
binden *:5000
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static wenn url_static
default_backend-App
Backend statisch
Balance-Roundrobin
Server statisch 127.0.0.1:4331 prüfen
Backend-App
Balance-Roundrobin
Server-App1 127.0.0.1:5001 prüfen
Server-App2 127.0.0.1:5002 prüfen
Server-App3 127.0.0.1:5003 prüfen
server app4 127.0.0.1:5004 prüfen
Sie können die Konfigurationsdetails und weitere Informationen unter dieser URL anzeigen. Sobald Sie HAProxy konfiguriert haben, ist es an der Zeit, den Dienst zu starten:
$ sudo systemctl starte haproxy
$ sudo systemctl aktiviert Haproxy
4. Firewall konfigurieren
Wir werden den HAProxy zur CentOS 8-Firewall hinzufügen und die Regeln mit den folgenden Befehlen aktualisieren:
$ sudo firewall-cmd --add-port=8088/tcp --permanent
$ sudo firewall-cmd --reload
5. HAProxy-Protokollierung konfigurieren
Um die HAProxy-Standardprotokollierung zu konfigurieren, bearbeiten Sie /etc/rsyslog.conf und aktivieren Sie den UDP-Syslog-Empfang auf Port 514:
$ sudo nano /etc/rsyslog.conf
# Bietet UDP-Syslog-Empfang
# Parameter siehe http://www.rsyslog.com/doc/imudp.html
module(load="imudp") # muss nur einmal gemacht werden
Eingabe (Typ ="imudp" Port ="514")
...
*.info;mail.none;authpriv.none;cron.none,local2.none /var/log/messages
local2.* /var/log/haproxy.log
...
Speichern Sie dann die Konfigurationsdatei und führen Sie den folgenden Befehl aus, um nach Fehlern zu suchen:
$ rsyslogd -N1
$ sudo systemctl rsyslog haproxy neu starten
6. Konfigurieren Sie Apache X-Forwarded-For Logging auf Backend-Servern
Jetzt melden wir uns bei den Backend-Servern an und konfigurieren Apache so, dass X-Forwarded-For-Header protokolliert werden. Die Standardzeile, die wir ändern, ist:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" kombiniert
LogFormat "%h %l %u %t \"%r\" %>s %b" üblich
...
Bearbeiten Sie diese Zeile so, dass sie folgendermaßen aussieht:
LogFormat "\"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i \"" kombiniert
LogFormat "%h %l %u %t \"%r\" %>s %b" üblich
...
Speichern Sie die Datei und starten Sie Apache neu:
$ apachectl configtest
$ sudo systemctl startet httpd neu
Wie teste ich HAProxy Load Balancer?
Um zu überprüfen, ob HAProxy in der Lage ist, die HTTP-Anforderungen auszugleichen, navigieren Sie zum Browser und greifen Sie entweder über den Hostnamen oder die IP-Adresse auf HAProxy zu.
Wie starte ich HAProxy neu?
Nachdem Sie entweder Layer 4 oder Layer 7 konfiguriert haben, starten Sie HAProxy mit dem folgenden Befehl neu:
$ systemctl Haproxy neu starten
Ein erfolgreicher Neustart führt zu keiner Ausgabe, was bedeutet, dass HAProxy mit den gerade implementierten Änderungen betriebsbereit ist.