HAProxy ist eines der bekanntesten Vertreter. Hiermit lassen sich TCP Verbindungen verteilen, steuern und absichern.
Infrastruktur
Um die Konfiguration anschaulicher zu beschreiben findet sich hier ein Schema der Demoumgebung.
Installation
Unter Debian / Ubuntu erfolgt die Installation über Apt.
sudo apt-get install haproxy
Konfiguration
Zunächst wird eingestellt, dass HAProxy per Initskript gestartet wird. Dies vereinfacht die Verwaltung und Kontrolle.
Hierzu die Datei /etc/default/haproxy editieren.
# Set ENABLED to 1 if you want the init script to start haproxy.
ENABLED=1
Grundeinstellungen
Die eigentliche Konfigurationsdatei /etc/haproxy/haproxy.cfg steuert das Verhalten von HAProxy unter Debian bzw. Ubuntu. Hier lassen sich die einzelnen Cluster und Hosts eintragen.
In der Standardeinstellung sollte der Kopf der Datei wie folgt aussehen.
global
maxconn 4096
user haproxy
group haproxy
daemon
defaults
log global
mode tcp
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
stats enable
stats auth admin:admin
Hierbei sind die zwei stats Optionen interessant. Damit können später über ein integriertes Webinterface Daten zur Lastverteilung auf dem Load Balancer eingesehen werden.
Cluster anlegen
Nun legen wir gemäß des oben abgebildeten Schemas eine Definition in der Datei an.
listen Cluster *:80
balance roundrobin
server Webserver1 192.168.1.11:80 check rise 3 fall 5
server Webserver2 192.168.1.12:80 check rise 3 fall 5
server Webserver3 192.168.1.13:80 check rise 3 fall 5
Somit lauscht HAProxy auf Port 80 auf eingehende Verbindungen.
Hier eine kurze Erklärung der verwendeten Optionen.
- check - Server wird überwacht
- rise 3 - Server wird nach 3 erfolgreichen Healthchecks als up deklariert
- fall 5 - Server wird nach 5 fehlgeschlagenen Healthchecks als down deklariert
Backup / Standby Server
Mit HAProxy besteht auch die Möglichkeit einen Server als Backup zu deklarieren. Dieser wird aktiv, wenn der Healthcheck eines anderen Hosts fehlschlägt.
Nehmen wir an der Host Webserver 3 wird als Backup verwendet. Die Konfiguration würde dann wie folgt aussehen.
listen Cluster *:80
balance roundrobin
server Webserver1 192.168.1.11:80 check rise 3 fall 5
server Webserver2 192.168.1.12:80 check rise 3 fall 5
server Webserver3 192.168.1.13:80 check rise 3 fall 5 backup
Konfiguration übernehmen
Die Konfiguration wird durch ein Neustart des Dienstes übernommen.
sudo service haproxy restart
Damit HAProxy nun bei jedem Systemstart ausgeführt wird, verwenden wir den Befehl update-rc.d.
sudo update-rc.d haproxy defaults
Statistik einsehen
Die Statistiken von HAProxy lassen sich unter der IP-Adresse des Loadbalancers einsehen.
http://192.168.1.120/haproxy?stats
Wie in der Konfigurationsdatei angegeben erfolgt die Authentifizierung über den Benutzer "admin" mit dem Passwort "admin".
Möchte man die Statistik z.B. über Nagios auswerten, besteht auch die Option die Logdaten von HAProxy manuell abzufragen.
Lasttests
Um die Lastverteilung zu prüfen kann man das Tool siege verwenden. In unserem Setup können wir den Loadbalancer mit nachfolgendem Befehl mit 200 gleichzeitigen Sessions befeuern.
siege -c200 http://192.168.1.120
Über das Webinterface von HAProxy sieht man dann sehr gut die Verteilung der Anfragen bzw. Sessions.
Hochverfügbarkeit / Redundanz
Mit nur einem Loadbalancer entsteht ein Single-Point-of-Failure. Daher werden diese in der Regel doppelt ausgelegt.
Um dieses Problem zu Umgehen kann man die Loadbalancer mit Keepalived in ein Cluster schalten.
Fazit
HAProxy ist ein sehr flexibler Dienst zur Realisierung eines Loadbalancers. Die Konfiguration gestaltet sich recht einfach und ist gut strukturiert bzw. dokumentiert.
Similar articles
- NFS Server einrichten mit Ubuntu
- NFS Client einrichten mit Ubuntu
- FTP Server einrichten mit Ubuntu
- Hochverfügbarkeit und Redundanz auf Linux Servern mit Keepalived
- Layer 4 Load Balancing mit IPVS und Debian / Ubuntu
- Tor Proxy Server auf dem Raspberry Pi
- Sicherheit mit einem Reverse Proxy
- Nginx als Reverse Proxy - Installation und Einrichtung
- Netzwerk Penetrationstests mit OpenVAS
- Netzwerkgeschwindigkeit mit Iperf testen
- Virtuelle Netzwerkschnittstellen unter Linux mit MacVLAN
- Ubuntu installieren
- Samba Server einrichten mit Ubuntu
- Jolicloud 1.2 Installation
- USV Management mit APCUPSd auf Debian / Ubuntu
Leave a comment