HAProxy Load Balancer: Konfiguration für Hochverfügbarkeit
HAProxy ist der branchenführende Open-Source Load Balancer für TCP- und HTTP-basierte Anwendungen. In dieser Anleitung konfigurieren Sie HAProxy für Produktionsumgebungen mit SSL-Terminierung, Health Checks, Sticky Sessions und Hochverfügbarkeit.
Installation und Grundkonfiguration
Installieren Sie HAProxy aus dem offiziellen PPA für die neueste stabile Version:
sudo apt update
sudo apt install haproxy
sudo systemctl enable haproxy
haproxy -v
Erstellen Sie die Hauptkonfiguration in /etc/haproxy/haproxy.cfg:
global
log /dev/log local0
maxconn 4096
user haproxy
group haproxy
daemon
ssl-default-bind-options ssl-min-ver TLSv1.2
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
retries 3
Diese globalen Einstellungen begrenzen die maximale Anzahl gleichzeitiger Verbindungen und legen sichere TLS-Standards fest. Die Timeout-Werte sind für typische Webanwendungen optimiert.
Backend-Server und Health Checks
Definieren Sie Frontend und Backend mit HTTP-Health-Checks:
frontend web_front
bind *:80
bind *:443 ssl crt /etc/haproxy/certs/domain.pem
redirect scheme https if !{ ssl_fc }
default_backend web_servers
backend web_servers
balance roundrobin
option httpchk GET /health
http-check expect status 200
cookie SERVERID insert indirect nocache
server web1 192.168.1.10:8080 check cookie web1 inter 3s fall 3 rise 2
server web2 192.168.1.11:8080 check cookie web2 inter 3s fall 3 rise 2
server web3 192.168.1.12:8080 check cookie web3 inter 3s fall 3 rise 2
Der Parameter inter 3s definiert das Health-Check-Intervall, fall 3 markiert einen Server nach drei fehlgeschlagenen Checks als offline und rise 2 bringt ihn nach zwei erfolgreichen Checks wieder online. Die Cookie-basierte Session-Affinität stellt sicher, dass Benutzer beim gleichen Backend-Server bleiben.
Rate Limiting und Sicherheit
Schützen Sie Ihre Anwendung vor übermäßigem Datenverkehr mit Rate Limiting:
frontend web_front
stick-table type ip size 100k expire 30s store http_req_rate(10s)
http-request track-sc0 src
http-request deny deny_status 429 if { sc_http_req_rate(0) gt 100 }
Fügen Sie Security-Header für zusätzlichen Schutz hinzu:
http-response set-header X-Frame-Options SAMEORIGIN
http-response set-header X-Content-Type-Options nosniff
http-response set-header Strict-Transport-Security "max-age=31536000; includeSubDomains"
Überprüfen Sie die Konfiguration vor dem Neustart mit haproxy -c -f /etc/haproxy/haproxy.cfg und aktivieren Sie die HAProxy-Statistikseite für die Überwachung.
Hochverfügbarkeit mit Keepalived
Für einen ausfallsicheren Betrieb konfigurieren Sie Keepalived mit einer virtuellen IP:
sudo apt install keepalived
Erstellen Sie /etc/keepalived/keepalived.conf auf dem primären Server:
vrrp_script check_haproxy {
script "/usr/bin/systemctl is-active haproxy"
interval 2
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
virtual_ipaddress {
192.168.1.100/24
}
track_script {
check_haproxy
}
}
Auf dem sekundären Server ändern Sie state auf BACKUP und priority auf 90. Das Health-Check-Skript überwacht den HAProxy-Dienst und senkt die Priorität, wenn HAProxy ausfällt, sodass der Backup-Server die virtuelle IP übernimmt.