HaProxy wird von beliebten Websites wie Tumblr, GitHub und StackOverflow verwendet. In diesem Leitfaden führen wir Sie durch die Installation von HAProxy in einem Setup von Webservern, die mit Nginx betrieben werden.
Laboreinrichtung
3 Instanzen von CentOS 7-Servern wie gezeigt
Hostname IP-Adressen
load_balancer 3.17.12.132
server_01 3.19.229.234
server_02 3.17.9.217
Schritt 1: Bearbeiten Sie die Datei /etc/hosts für den Load Balancer
Melden Sie sich zunächst beim Load-Balancer-System an und ändern Sie die Datei /etc/hosts so, dass sie die Hostnamen und IP-Adressen der beiden Webserver wie gezeigt enthält
$ Weil / etc / Gastgeber
3.19.229.234 server_01
3.17.9.217 server-02
Wenn Sie fertig sind, speichern Sie die Änderungen und beenden Sie die Konfigurationsdatei.
Gehen Sie jetzt zu jedem der Webserver und aktualisieren Sie die /etc/hosts Datei mit der IP-Adresse und dem Hostnamen des Load Balancers
3.17.12.132 Load-BalancerBestätigen Sie anschließend, dass Sie den Load-Balancer von server_01 aus anpingen können
Und ebenso von server_02
Stellen Sie außerdem sicher, dass Sie die Server vom Load Balancer aus anpingen können.
Perfekt ! alle Server können mit dem Load Balancer kommunizieren!
Schritt 2: Installieren und konfigurieren Sie den HA-Proxy auf dem Load Balancer
Da HA Proxy im offiziellen CentOS-Repository leicht verfügbar ist, werden wir es mit dem yum- oder dnf-Paketmanager installieren.
Aber wie immer zuerst das System aktualisieren
# Yum UpdateInstallieren Sie als Nächstes den HA-Proxy wie gezeigt
# Yum installieren glücklichNavigieren Sie nach erfolgreicher Installation zum Haproxy-Verzeichnis.
# CD / etc / glücklichBest Practice erfordert, dass wir jede Konfigurationsdatei sichern, bevor wir Änderungen vornehmen. Also Backup der haproxy.cfg Datei durch Umbenennen.
# mv haproxy.cfg haproxy.cfg.bakFahren Sie als Nächstes fort und öffnen Sie die Konfigurationsdatei
Weil haproxy.cfgStellen Sie sicher, dass Sie die Änderung wie gezeigt vornehmen
#------------------------------------------------------------- --------------------# Globale Einstellungen
#------------------------------------------------------------- --------------------
global
log 127.0.0.1 local2 #Protokollkonfiguration
Chroot / war / lib / glücklich
pid-Datei / war / Lauf / haproxy.pid
maxconn 4000
Benutzer haproxy #Haproxy läuft unter Benutzer und Gruppe 'haproxy'
Gruppe Haproxy
Dämon
# Statistik-Unix-Socket einschalten
Statistik-Buchse / war / lib / glücklich / Statistiken
#------------------------------------------------------------- --------------------
# allgemeine Standardeinstellungen, die alle Abschnitte 'listen' und 'backend' haben
# verwenden, wenn nicht in ihrem Block angegeben
#------------------------------------------------------------- --------------------
Voreinstellungen
Modus http
log global
Option httplog
Option dontlognull
Option http-server-close
Option forwardfor außer 127.0.0.0 / 8
Option Redispatch
wiederholt 3
timeout http-request 10s
Timeout-Warteschlange 1 Min
Zeitüberschreitung Verbindung 10 s
Zeitüberschreitung Client 1 Min
Timeout-Server 1 Min
timeout http-keep-alive 10s
Zeitüberschreitung 10 s
maxconn 3000
#------------------------------------------------------------- --------------------
#HAProxy-Überwachungskonfiguration
#------------------------------------------------------------- --------------------
höre haproxy3-monitoring * : 8080 #Haproxy Monitoring wird auf Port 8080 ausgeführt
Modus http
Option weiterleitenfür
Option httpclose
Statistiken aktivieren
Statistiken zeigen Legenden
Statistikaktualisierung 5s
Statistiken uri / Statistiken #URL für die HAProxy-Überwachung
Statistikbereich Haproxy\ Statistiken
Statistik-Authentifizierung Passwort123: Passwort123 #Benutzer und Passwort für die Anmeldung am Überwachungs-Dashboard
Statistik-Administrator wenn WAHR
default_backend App-Main #Dies ist optional für die Überwachung des Backends
#------------------------------------------------------------- --------------------
# Frontend-Konfiguration
#------------------------------------------------------------- --------------------
Frontend Haupt
binden * : 80
Option http-server-close
Option weiterleitenfür
default_backend App-Main
#------------------------------------------------------------- --------------------
# BackEnd Round Robin als Balance-Algorithmus
#------------------------------------------------------------- --------------------
Backend-App-Main
Balance-Roundrobin #Balance-Algorithmus
Option httpchk HEAD / HTTP / 1.1 \r\nHost:\ lokaler Host
#Überprüfen Sie, ob die Serveranwendung aktiv und funktionsfähig ist – Statuscode 200
server server_01 3.19.229.234: 80 prüfen #Nginx1
server server_02 3.17.9.217: 80 prüfen #Nginx2
Stellen Sie sicher, dass Sie den Hostnamen und die IP-Adressen des Webservers wie in den letzten beiden Zeilen angegeben ändern. Speichern Sie die Änderungen und beenden Sie.
Der nächste Schritt besteht darin, Rsyslog so zu konfigurieren, dass es HAProxy-Statistiken protokollieren kann.
# Weil / etc / rsyslog.confStellen Sie sicher, dass Sie die folgenden Zeilen auskommentieren, um UDP-Verbindungen zuzulassen
$ModLoad imudp$UDPServerRun 514
Fahren Sie als Nächstes fort und erstellen Sie eine neue Konfigurationsdatei haproxy.conf
# Weil / etc / rsyslog.d / haproxy.confFügen Sie die folgenden Zeilen ein, speichern und beenden Sie
local2.=info / war / Protokoll / haproxy-access.log #Für Zugriffsprotokolllocal2.notice / war / Protokoll / haproxy-info.log #Für Serviceinformationen - Backend, Loadbalancer
Damit die Änderungen wirksam werden, starten Sie den rsyslog-Daemon wie gezeigt neu:
# systemctl startet rsyslog neuStarten und aktivieren Sie dann HAProxy
# systemctl rsyslog starten# systemctl aktiviert rsyslog
Stellen Sie sicher, dass HAProxy ausgeführt wird
# systemctl-Status rsyslogSchritt 3: Nginx installieren und konfigurieren
Jetzt bleibt nur noch die Installation von Nginx. Melden Sie sich bei jedem der Server an und aktualisieren Sie zuerst die Systempakete:
# Yum UpdateAls nächstes installieren Sie EPEL (Extra Packages for Enterprise Linux)
# Yum installieren warme FreigabeFühren Sie den folgenden Befehl aus, um Nginx zu installieren:
# Yum installieren nginxAls nächstes starten und aktivieren Sie Nginx
# systemctl nginx starten# systemctl aktiviert nginx
Wir werden dann die Datei index.html in beiden Fällen ändern, um zu demonstrieren oder zu simulieren, wie der Load Balancer den Webverkehr auf beide Server verteilen kann.
Für server_01
# Echo 'server_01. Hey ! Willkommen beim ersten Webserver' > index.htmlFür server_02
# Echo 'server_02. Hey ! Willkommen auf dem zweiten Webserver' > index.htmlDamit die Änderungen wirksam werden, starten Sie Nginx neu
# systemctl startet nginx neuSchritt 4: Testen, ob der Load Balancer funktioniert
Endlich sind wir an dem Punkt angelangt, an dem wir sehen wollen, ob die Konfiguration funktioniert. Melden Sie sich also beim Load Balancer an und führen Sie den Curl-Befehl wiederholt aus
# curl 3.17.12.132Sie sollten eine abwechselnde Ausgabe auf dem Terminal erhalten, die den Wert von index.html von server_01 und server_02 zeigt
Lassen Sie uns nun mit einem Webbrowser testen. Durchsuchen Sie die IP-Adresse Ihres Load Balancers
http: // Load-Balancer-IP-AdresseAuf der ersten Seite werden Inhalte von allen Webservern angezeigt
Aktualisieren Sie nun die Webseite und prüfen Sie, ob sie Inhalte vom anderen Webserver anzeigt
Perfekt ! Der Lastausgleich verteilt den IP-Verkehr gleichmäßig zwischen den beiden Webservern!
Damit ist dieses Tutorial zur Installation und Konfiguration von HAProxy unter CentOS 8 abgeschlossen. Ihr Feedback wird sehr geschätzt.