Wenn zwei Webserver denselben Dienst ausliefern, aber der Traffic trotzdem sauber verteilt werden soll, ist HAProxy der klassische Schraubenschlüssel im Admin-Werkzeugkasten. Kein Glitzer, kein Kubernetes-Nebelwerfer, einfach ein schneller Load Balancer, der macht, was er soll.
Wir bauen hier ein simples Setup auf Debian: HAProxy vorne, zwei Backend-Webserver hinten, Health Checks aktiv und ein Stats-Dashboard für den schnellen Blick in den Maschinenraum.
Installation auf Debian
Auf einem frischen Debian-System ist HAProxy schnell installiert:
sudo apt update
sudo apt install haproxyDanach prüfen wir kurz, ob der Dienst existiert und systemd ihn nicht beleidigt anschaut:
systemctl status haproxyFalls HAProxy noch nicht automatisch startet:
sudo systemctl enable haproxyUnser Beispiel-Setup
Wir nehmen folgende Struktur:
- HAProxy: 192.168.10.10
- Webserver 1: 192.168.10.21:80
- Webserver 2: 192.168.10.22:80
HAProxy lauscht auf Port 80 und verteilt Requests per Round Robin. Zusätzlich prüfen Health Checks, ob die Backends noch leben. Wenn ein Server wegkippt, bekommt er keinen Traffic mehr. Genau so wollen wir das. Zombies gehören in Filme, nicht in den Request-Pfad.
HAProxy konfigurieren
Die zentrale Datei ist /etc/haproxy/haproxy.cfg. Vorher wie immer: Backup machen. Ja, auch wenn du „nur kurz was änderst“.
sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bakDann konfigurieren wir HAProxy:
# /etc/haproxy/haproxy.cfg
global
log /dev/log local0
log /dev/log local1 notice
daemon
maxconn 2048
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5s
timeout client 50s
timeout server 50s
frontend http_frontend
bind *:80
default_backend web_backend
backend web_backend
balance roundrobin
option httpchk GET /
http-check expect status 200
server web01 192.168.10.21:80 check
server web02 192.168.10.22:80 check
listen stats
bind *:8404
stats enable
stats uri /stats
stats refresh 10s
stats auth admin:SuperGeheimAberBitteAendernKurz zerlegt: frontend nimmt Traffic entgegen. backend definiert die Zielserver. balance roundrobin verteilt gleichmäßig. check aktiviert Health Checks pro Server. Mit option httpchk GET / fragt HAProxy regelmäßig die Startseite ab. Kommt kein 200, wird der Server als kaputt markiert.
Das Stats-Dashboard hängt auf Port 8404 unter /stats. Absichern nicht vergessen. Das Beispiel-Passwort ist natürlich nur Deko mit Warnschild.
Konfiguration testen und Dienst neu laden
Bevor wir HAProxy neu starten und uns selbst aussperren, testen wir die Config:
sudo haproxy -c -f /etc/haproxy/haproxy.cfgWenn Configuration file is valid erscheint, darf systemd ran:
sudo systemctl reload haproxyReload reicht meistens, weil HAProxy dabei die Konfiguration übernimmt, ohne bestehende Verbindungen unnötig zu zerlegen.
Funktion testen
Vom Client aus:
curl -I http://192.168.10.10Wenn deine Webserver unterschiedliche Testseiten haben, siehst du beim mehrfachen Aufruf die Verteilung:
for i in {1..10}; do curl -s http://192.168.10.10; echo; doneDas Dashboard erreichst du unter:
curl -I http://192.168.10.10:8404/statsIm Browser ist es natürlich hübscher. Dort siehst du Backend-Status, Sessions, Response-Zeiten und ob ein Server gerade beleidigt in der Ecke liegt.
Kleine Firewall-Erinnerung
Falls ufw aktiv ist:
sudo ufw allow 80/tcp
sudo ufw allow from 192.168.10.0/24 to any port 8404 proto tcpPort 8404 sollte nicht im Internet herumstehen. Stats-Dashboards sind wie Serverräume: praktisch, aber bitte nicht für Laufkundschaft offenlassen.
Fazit
HAProxy auf Debian ist angenehm unspektakulär. Installieren, Frontend definieren, Backends eintragen, Health Checks aktivieren, Stats anschalten. Danach weißt du, wohin dein Traffic läuft und welcher Server gerade schlappmacht. Für klassische Web-Setups ist das immer noch eine robuste, schnelle und sehr gut debuggbare Lösung. Kein Magie-Nebel. Nur sauberes Load Balancing.