HaProxy wird von beliebten Websites wie Tumblr, GitHub und StackOverflow verwendet. In dieser Anleitung 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 abgebildet
Hostname IP-Adressenload_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 enthält, wie gezeigt
$ vim /etc/hosts3.19.229.234 server_01
3.17.9.217 server-02
Wenn Sie fertig sind, speichern Sie die Änderungen und verlassen Sie die Konfigurationsdatei.
Gehen Sie nun 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 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: HA-Proxy auf dem Load Balancer installieren und konfigurieren
Da HA Proxy im offiziellen CentOS-Repository verfügbar ist, werden wir es mit dem Paketmanager yum oder dnf installieren.
Aber wie immer zuerst das System aktualisieren
# leckeres UpdateAls nächstes installieren Sie HA Proxy wie gezeigt as
# lecker installiere haproxy
Navigieren Sie nach erfolgreicher Installation zum haproxy-Verzeichnis.
# cd /etc/haproxyBest Practice erfordert, dass wir alle Konfigurationsdateien sichern, bevor wir Änderungen vornehmen. Also sichern Sie die glücklich.cfg Datei umbenennen.
# mv haproxy.cfg haproxy.cfg.backenFahren Sie als nächstes fort und öffnen Sie die Konfigurationsdatei
vim haproxy.cfgStellen Sie sicher, dass Sie die Änderung wie gezeigt vornehmen
#---------------------------------------------------------------------# Globale Einstellungen
#---------------------------------------------------------------------
global
log 127.0.0.1 local2 #Log-Konfiguration
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy #Haproxy wird unter Benutzer und Gruppe "haproxy" ausgeführt
Gruppe haproxy
Dämon
# Statistik Unix-Socket einschalten
Statistik-Socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# gemeinsame Standardeinstellungen, die alle Abschnitte "hören" und "backend" verwenden
# verwenden, wenn nicht in ihrem Block angegeben
#---------------------------------------------------------------------
Standardeinstellungen
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-Anfrage 10 s
Timeout-Warteschlange 1 m
Zeitüberschreitung Verbindung 10 s
Timeout-Client 1 m
Timeout-Server 1m
Timeout http-keep-alive 10s
Zeitüberschreitung 10 s
maxconn 3000
#---------------------------------------------------------------------
#HAProxy-Überwachungskonfiguration
#---------------------------------------------------------------------
listen haproxy3-monitoring *:8080 #Haproxy Monitoring läuft auf Port 8080
Modus http
Option weiterleitenfor
Option httpclose
Statistiken aktivieren
Statistik-Show-Legenden
Statistiken aktualisieren 5s
stats uri /stats #URL für HAProxy-Monitoring
Statistik-Realm Haproxy\ Statistik
stats auth Password123: Password123#User und Passwort für die Anmeldung am Monitoring-Dashboard
Statistikadministrator wenn WAHR
default_backend app-main #Dies ist optional für die Überwachung des Backends
#---------------------------------------------------------------------
# FrontEnd-Konfiguration
#---------------------------------------------------------------------
Frontend-Hauptmenü
binden *:80
Option http-server-close
Option weiterleitenfor
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:\ localhost
#Überprüfen Sie, ob die Serveranwendung aktiv und funktionsfähig ist - 200 Statuscode
server server_01 3.19.229.234:80 check #Nginx1
server server_02 3.17.9.217:80 check #Nginx2
Achten Sie darauf, den Hostnamen und die IP-Adressen des Webservers wie in den letzten beiden Zeilen angegeben zu ändern modify. Änderungen speichern und beenden.
Der nächste Schritt besteht darin, Rsyslog so zu konfigurieren, dass es HAProxy-Statistiken protokollieren kann.
# vim /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 glücklich.conf
# vim /etc/rsyslog.d/haproxy.confFügen Sie die folgenden Zeilen ein, speichern und beenden Sie and
lokal2.=info /var/log/haproxy-access.log #Für Zugriffsprotokolllokal2.Hinweis /var/log/haproxy-info.log #For Service Info – Backend, Loadbalancer
Damit die Änderungen wirksam werden, starten Sie den rsyslog-Daemon wie gezeigt neu:
# systemctl rsyslog neu startenDann starten und aktivieren Sie HAProxy
# systemctl starte rsyslog# systemctl rsyslog aktivieren
Stellen Sie sicher, dass HAProxy ausgeführt wird
# systemctl-status rsyslog
Schritt 3: Nginx installieren und konfigurieren
Jetzt fehlt nur noch die Installation von Nginx. Melden Sie sich bei jedem der Server an und aktualisieren Sie zuerst die Systempakete:
# leckeres UpdateAls nächstes installieren EPEL (Zusatzpakete für Enterprise Linux)
# yum installiere epel-releaseFühren Sie den Befehl aus, um Nginx zu installieren:
# lecker installiere nginxAls nächstes starten und aktivieren Sie Nginx
# systemctl starte nginx# systemctl nginx aktivieren
Wir werden dann den Index ändern.html-Datei in beiden Fällen, um zu demonstrieren oder zu simulieren, wie der Load Balancer den Webverkehr auf beide Server verteilen kann.
Für server_01
# echo "server_01. Hallo ! Willkommen beim ersten Webserver" > index.htmlFür server_02
# echo "server_02. Hallo ! Willkommen auf dem zweiten Webserver" > index.htmlDamit die Änderungen wirksam werden, starten Sie Nginx neu
# systemctl nginx neu startenSchritt 4: Testen, ob der Load Balancer funktioniert
Wir sind endlich 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 anzeigt.html von server_01 und server_02
Jetzt testen wir mit einem Webbrowser. Durchsuchen Sie die IP-Adresse Ihres Load Balancers
http://Load-Balancer-IP-AdresseAuf der ersten Seite werden Inhalte von einem der Webserver angezeigt
Aktualisieren Sie nun die Webseite und prüfen Sie, ob Inhalte vom anderen Webserver angezeigt werden
Perfekt ! Der Lastenausgleich verteilt den IP-Verkehr gleichmäßig zwischen den beiden Webservern !
Dies schließt dieses Tutorial ab, wie Sie HAProxy auf CentOS 8 installieren und konfigurieren können. Ihr Feedback wird sehr geschätzt.