HAProxy Installation und Konfiguration auf Ubuntu 22.04
HAProxy (High Availability Proxy) ist eine Open-Source Proxy-Anwendung, die sowohl als Reverse-Proxy als auch als Forward-Proxy für TCP- und HTTP-basierte Anwendungen eingesetzt werden kann. Unter Ubuntu 22.04 lässt sich HAProxy installieren, um eingehenden Datenverkehr auf mehrere Backend-Server zu verteilen. Dadurch werden Lasten reduziert und die Gesamtleistung von Anwendungen verbessert.
HAProxy agiert als zentrales Gateway, das alle externen Anfragen an Backend-Server weiterleitet, auf denen Webdienste, Datenbanken oder Dateiverwaltungsanwendungen laufen. Sobald ein Client eine Anfrage stellt, prüft HAProxy diese und leitet sie gemäß den festgelegten Regeln an einen Backend-Server weiter. Der Backend-Server verarbeitet die Anfrage und sendet die Antwort zurück an den Client. Während des gesamten Prozesses dient HAProxy als Einstiegspunkt und verteilt die Last auf die Zielserver entsprechend den Konfigurationseinstellungen.
Voraussetzungen
Stellen Sie innerhalb eines einzelnen Standorts Folgendes sicher:
- Eine Ubuntu 22.04 Instanz als HAProxy-Server bereitstellen.
- Mindestens zwei Ubuntu 22.04 Instanzen als Backend-Server bereitstellen.
- Alle Server an dasselbe VPC 2.0 Netzwerk anbinden.
- Einen Domain-A-Record erstellen, der auf die IP-Adresse des HAProxy-Servers verweist (z. B. haproxy.example.com).
Beispiel einer HAProxy Load-Balancing-Topologie
Das folgende Beispiel zeigt, wie HAProxy Anfragen an Backend-Server mit Apache-Webserver verteilt. Abhängig vom Serverzustand und der gewählten Balancing-Methode leitet HAProxy Client-Verbindungen entsprechend weiter.
Beispiel-HAProxy-Netzwerk
Nachfolgend die IP-Details für jeden Server im VPC 2.0 Netzwerk:
- HAProxy-Server
Öffentlicher Hostname: haproxy.example.com
VPC 2.0 IP: 10.128.0.2 - Server 1
VPC 2.0 IP: 10.128.0.3 - Server 2
VPC 2.0 IP: 10.128.0.4
HAProxy auf Ubuntu 22.04 installieren
Gehen Sie wie folgt auf dem HAProxy-Server vor:
1. Verbindung zum Server via SSH herstellen
$ ssh root@SERVER-IP
2. Einen Nicht-Root-Benutzer mit Sudo-Rechten anlegen
# adduser haproxyadmin && adduser haproxyadmin sudo
3. Zum neuen Benutzer wechseln
# su - haproxyadmin
4. Paketindex aktualisieren
$ sudo apt update
5. HAProxy installieren
$ sudo apt install haproxy -y
Falls die benötigte Version nicht in den Standard-APT-Repositories vorhanden ist, installieren Sie eine bestimmte Version über das vbernat PPA:
$ sudo add-apt-repository ppa:vbernat/haproxy-2.8 -y
6. HAProxy beim Systemstart aktivieren
$ sudo systemctl enable haproxy
7. HAProxy-Status prüfen
$ sudo systemctl status haproxy
Ausgabe:
…
Active: active (running)
Den HAProxy-Server konfigurieren
Die Hauptkonfigurationsdatei von HAProxy unter /etc/haproxy/haproxy.cfg
steuert, wie die Anwendung arbeitet und auf eingehende Verbindungen reagiert. Standardmäßig enthält die Datei folgende Abschnitte:
- global: Definiert, wie HAProxy auf dem System läuft. Optionen sind u. a. Logging, Benutzer-/Gruppenzuordnung, Servicemodus und SSL-Einstellungen.
- defaults: Legt Leistungsparameter wie Timeouts und den Verbindungsmodus fest. Zum Beispiel behandelt
http
sämtlichen Traffic als HTTP, währendtcp
rohe TCP-Verbindungen verarbeitet.
Gehen Sie wie folgt vor, um die Konfiguration um zusätzliche Abschnitte zu erweitern, die festlegen, wie HAProxy die Last an Backend-Server im VPC 2.0 Netzwerk verteilt.
1. Standardkonfiguration sichern
$ sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.backup
2. Konfigurationsdatei bearbeiten
$ sudo nano /etc/haproxy/haproxy.cfg
3. Load-Balancer-Konfiguration hinzufügen
frontend website-frontend
bind *:80,*:443
option httpchk GET /healthcheck
default_backend servers
backend servers
balance roundrobin
server server-1 10.128.0.3:80 weight 1 check
server server-2 10.128.0.4:80 weight 1 check
Erklärung:
- frontend: Der Abschnitt
website-frontend
weist HAProxy an, auf den Ports 80 (HTTP) und 443 (HTTPS) zu lauschen. option httpchk
: Führt Health-Checks auf den Backend-Servern aus.default_backend
: Definiert den Backend-Pool für die Lastverteilung.- backend: Die Gruppe
servers
definiert die eigentlichen Zielserver. balance roundrobin
: Verteilt die Verbindungen gleichmäßig auf die Server.server
: Richtet einzelne Server mit Health-Check-Optionen und Gewichtung für das Load-Balancing ein.
4. HAProxy-Statistiken aktivieren
Fügen Sie folgende Konfiguration hinzu, um ein Monitoring-Dashboard bereitzustellen:
listen stats
bind *:8404
mode http
stats enable
stats uri /stats
stats auth admin:your_password
stats refresh 10s
Mit dieser Konfiguration können Sie eine Echtzeit-Statistikseite aufrufen, die Kennzahlen wie Sitzungen, Anfragen, Antwortzeiten und Fehler anzeigt.
5. HAProxy neu starten
$ sudo systemctl restart haproxy
6. Firewall konfigurieren
Die Uncomplicated Firewall (UFW) blockiert standardmäßig eingehende Verbindungen. Erlauben Sie die benötigten Ports:
HTTP-Traffic erlauben:
$ sudo ufw allow 80/tcp
Zugriff auf die Statistikseite erlauben:
$ sudo ufw allow 3804/tcp
UFW neu laden, um Änderungen zu übernehmen:
$ sudo ufw reload
7. Verbindung zu Backend-Servern testen
Überprüfen Sie die Erreichbarkeit mit ping:
Server 1
$ ping 10.128.0.3
Beispielausgabe:
2 packets transmitted, 2 received, 0% packet loss
Server 2
$ ping 10.128.0.4
Beispielausgabe:
2 packets transmitted, 2 received, 0% packet loss
Backend-Server konfigurieren
HAProxy führt Health-Checks auf den Backend-Servern durch, um deren Verfügbarkeit zu prüfen. Fällt ein Server aus, wird er aus dem Pool entfernt, bis er wieder reagiert. Gehen Sie auf jedem Backend-Server wie folgt vor:
1. Verbindung zum Backend-Server herstellen
$ ssh root@10.128.0.3
2. Neuen Benutzer anlegen
# adduser sysadmin && adduser sysadmin sudo
3. Zum neuen Benutzer wechseln
# su - sysadmin
4. Paketindex aktualisieren
$ sudo apt update
5. Apache Webserver installieren
$ sudo apt install apache2 -y
6. Apache aktivieren
$ sudo systemctl enable apache2
7. Apache Web-Root konfigurieren
Wechseln Sie ins Dokumentenverzeichnis und ersetzen Sie die Standard-Indexdatei:
$ cd /var/www/html/
$ sudo mv index.html index.BAK
$ sudo nano index.html
Server-1 index.html:
Hello!
This content is served by Server 1.
Server-2 index.html:
Hello!
This content is served by Server 2.
8. Dateiberechtigungen zuweisen
$ sudo chown -R www-data:www-data /var/www/html/index.html
9. Apache neu starten
$ sudo systemctl restart apache2
10. Netzwerk-Interface überprüfen
$ ip a
Der Name des VPC-Interfaces sollte in der Ausgabe etwa enp8s0
lauten.
11. HTTP-Traffic über das VPC-Interface zulassen
$ sudo ufw allow in on enp8s0 to any port 80
$ sudo ufw reload
An diesem Punkt verteilt der HAProxy-Server die eingehenden Anfragen gleichmäßig auf die Backend-Server, und jeder Server liefert seine konfigurierte Index-Seite als Antwort zurück.
Auf die beschleunigte Webanwendung mit HAProxy zugreifen
HAProxy verteilt eingehende Anfragen im Round-Robin-Verfahren an die Backend-Server im VPC 2.0 Netzwerk. Abhängig vom Serverzustand werden Anfragen gleichmäßig rotiert, sodass kein einzelner Server überlastet wird. Führen Sie die folgenden Schritte aus, um zu bestätigen, dass Ihre Backend-Server korrekt über HAProxy antworten.
1. Ihre HAProxy-Domain öffnen
Öffnen Sie in einem Webbrowser (z. B. Chrome) die Domain Ihres HAProxy-Servers:
http://haproxy.example.com
Sobald die Seite geladen ist, sollte die Anwendung im Browser angezeigt werden. Die erste Anfrage kann von Server 1 beantwortet werden, während weitere Anfragen an andere Server im Backend-Pool weitergeleitet werden.
Beispiel:
- Erste Anfrage → Server 1 liefert seine Webseite über HAProxy aus.
- Nächste Aktualisierung → Server 2 antwortet mit seinen Inhalten.
- Weitere Aktualisierung → Server 1 antwortet erneut, was den Round-Robin-Algorithmus demonstriert.
2. Auf die HAProxy-Statistikseite zugreifen
Um die HAProxy-Aktivitäten zu überwachen, öffnen Sie die Statistikoberfläche auf Port 8404:
http://haproxy.example.com:8404
Melden Sie sich mit dem administrativen Benutzernamen und Passwort an, die Sie mit der Direktive stats auth
in Ihrer Konfiguration festgelegt haben.
Nach erfolgreicher Anmeldung erscheint das HAProxy-Dashboard im Browser, das Metriken sowohl für Frontend- als auch Backend-Performance anzeigt.
3. Ihre Anwendung überwachen
In der Statistikoberfläche können Sie den Live-Traffic verfolgen, Verbindungsraten einsehen und Leistungsengpässe identifizieren. Dies erleichtert eine effiziente Fehlerbehebung und Optimierung Ihrer Webanwendung.
Fazit
Sie haben HAProxy erfolgreich implementiert und konfiguriert, um den Traffic zwischen mehreren Backend-Servern in einem VPC 2.0 Netzwerk auszugleichen. Mit HAProxy wird Ihre Anwendung robuster und zuverlässiger, da Client-Anfragen intelligent verwaltet werden. Je nach Bedarf können Sie weitere Backend-Server hinzufügen und mit verschiedenen Load-Balancing-Algorithmen experimentieren, um die Gesamtleistung zusätzlich zu verbessern.