Server Verwaltung · 4 min read · Nov 12, 2025
Lastverteilung von Webservern mit HAProxy auf Ubuntu 14.04
Was ist HAProxy?
HAProxy (High Availability Proxy) ist ein Open-Source-Lastenausgleich, der jeden TCP-Dienst ausbalancieren kann. HAProxy ist eine kostenlose, sehr schnelle und zuverlässige Lösung, die Lastenausgleich, hohe Verfügbarkeit und Proxy-Dienste für TCP- und HTTP-basierte Anwendungen bietet. Es eignet sich besonders gut für Websites mit sehr hohem Traffic und betreibt viele der meistbesuchten Websites der Welt.
Seit seiner Existenz ist es zum De-facto-Standard für Open-Source-Lastenausgleich geworden. Obwohl es sich nicht selbst bewirbt, wird es weit verbreitet genutzt. Unten ist ein einfaches Diagramm, wie die Einrichtung aussieht: 
Installation von HAProxy
Ich benutze Ubuntu 14.04 und installiere es mit:
apt-get install haproxySie können die Version überprüfen mit:
haproxy -vWir müssen HAProxy aktivieren, damit es durch das Init-Skript /etc/default/haproxy gestartet wird. Setzen Sie die ENABLED-Option auf 1 wie folgt:
ENABLED=1Um zu überprüfen, ob diese Änderung korrekt vorgenommen wurde, führen Sie das Init-Skript von HAProxy ohne Parameter aus. Sie sollten Folgendes sehen:
$ service haproxy
reload restart start status stop HAProxy ist jetzt installiert. Lassen Sie uns nun eine Einrichtung erstellen, in der wir 2 (zwei) Apache-Webserver-Instanzen und 1 (eine) HAProxy-Instanz haben. Unten sind die Einrichtungsinformationen:
Wir werden drei Systeme verwenden, die virtuell über VirtualBox erstellt wurden: Instanz 1 - Lastenausgleich Hostname: haproxy OS: Ubuntu Private IP: 192.168.205.15 Instanz 2 - Webserver 1 Hostname: webser01 OS: Ubuntu mit LAMP Private IP: 192.168.205.16 ** Instanz 2 - Webserver 2 Hostname: webserver02 OS: Ubuntu mit LAMP Private IP: 192.168.205.17
Hier ist das Diagramm, wie die Einrichtung aussieht:
Lassen Sie uns nun HAProxy konfigurieren.
Konfiguration von HAProxy
Sichern Sie die Originaldatei, indem Sie sie umbenennen:
mv /etc/haproxy/haproxy.cfg{,.original}Wir erstellen unsere eigene haproxy.cfg-Datei. Verwenden Sie Ihren bevorzugten Texteditor, um die Datei /etc/haproxy/haproxy.cfg wie folgt zu erstellen:
global
log /dev/log local0
log 127.0.0.1 local1 notice
maxconn 4096
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen webfarm 0.0.0.0:80
mode http
stats enable
stats uri /haproxy?stats
balance roundrobin
option httpclose
option forwardfor
server webserver01 192.168.205.16:80 check
server webserver02 192.168.205.17:80 checkErklärung:
global
log /dev/log local0
log 127.0.0.1 local1 notice
maxconn 4096
user haproxy
group haproxy
daemonDie Log-Direktive erwähnt einen Syslog-Server, an den Protokollnachrichten gesendet werden.
Die maxconn-Direktive gibt die Anzahl der gleichzeitigen Verbindungen an der Front-End an. Der Standardwert beträgt 2000 und sollte entsprechend der Konfiguration Ihres Systems angepasst werden.
Die Benutzer- und Gruppendirektiven ändern den HAProxy-Prozess auf den angegebenen Benutzer/die angegebene Gruppe. Diese sollten nicht geändert werden.
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000Der obige Abschnitt enthält die Standardwerte. Die Option redispatch aktiviert die Sitzungsumverteilung im Falle von Verbindungsfehlern. Die Sitzungsbindung wird also überschrieben, wenn eine Webserver-Instanz ausfällt.
Die retries-Direktive legt die Anzahl der Wiederholungen fest, die bei einer Webserver-Instanz nach einem Verbindungsfehler durchgeführt werden sollen.
Die Werte, die geändert werden müssen, sind die verschiedenen Timeout-Direktiven. Die contimeout-Option gibt die maximale Zeit an, die gewartet werden soll, damit ein Verbindungsversuch zu einer Webserver-Instanz erfolgreich ist.
Die clitimeout- und srvtimeout-Direktiven gelten, wenn der Client oder Server erwartet wird, Daten während des TCP-Prozesses zu bestätigen oder zu senden. HAProxy empfiehlt, die Client- und Server-Timeouts auf denselben Wert zu setzen.
listen webfarm 0.0.0.0:80
mode http
stats enable
stats uri /haproxy?stats
balance roundrobin
option httpclose
option forwardfor
server webserver01 192.168.205.16:80 check
server webserver02 192.168.205.17:80 checkDer obige Block enthält die Konfiguration für sowohl das Frontend als auch das Backend. Wir konfigurieren HAProxy, um auf Port 80 für webfarm zu hören, was nur ein Name zur Identifizierung einer Anwendung ist.
Die stats-Direktiven aktivieren die Verbindungsstatistikseite. Diese Seite kann mit der im stats uri genannten URL aufgerufen werden, in diesem Fall ist es http://192.168.205.15/haproxy?stats, eine Demo dieser Seite kann hier angesehen werden.
Die balance-Direktive gibt den zu verwendenden Lastenausgleichsalgorithmus an. Verfügbare Algorithmusoptionen sind:
- Round Robin (roundrobin),
- Statischer Round Robin (static-rr),
- Wenigste Verbindungen (leastconn),
- Quelle (source),
- URI (uri) und
- URL-Parameter (url_param).
Informationen zu jedem Algorithmus können aus der offiziellen Dokumentation abgerufen werden.
Die server-Direktive erklärt einen Backend-Server, die Syntax lautet:
server [:port] [param*] Der Name, den wir hier angeben, erscheint in Protokollen und Warnungen. Es gibt einige weitere Parameter, die von dieser Direktive unterstützt werden, und wir werden den check-Parameter in diesem Artikel verwenden. Die check-Option aktiviert die Gesundheitsprüfungen der Webserver-Instanz, andernfalls wird die Webserver-Instanz immer als verfügbar betrachtet.
Sobald Sie mit der Konfiguration fertig sind, starten Sie den HAProxy-Dienst:
sudo service haproxy startTesten von Lastenausgleich und Failover
Wir werden den Servernamen in die Standarddatei index.html einfügen, die standardmäßig unter /var/www/index.html zu finden ist.
Auf der Instanz 2 - Webserver 1 (webserver01 mit IP- 192.168.205.16) fügen Sie die folgende Zeile hinzu:
sudo sh -c "echo Hostname: webserver01 (192.168.205.16)
>> /var/www/index.html"Auf der Instanz 3 - Webserver 2 (webserver02 mit IP- 192.168.205.17) fügen Sie die folgende Zeile hinzu:
sudo sh -c "echo Hostname: webserver02 (192.168.205.17)
>> /var/www/index.html"Öffnen Sie nun den Webbrowser auf dem lokalen Computer und rufen Sie die HAProxy-IP auf, d.h. http://192.168.205.15
Jedes Mal, wenn Sie den Tab aktualisieren, sehen Sie, dass die Last auf jeden Webserver verteilt wird. Unten ist ein Screenshot meines Browsers:
Beim ersten Besuch von http://192.168.205.15 erhalte ich: 
Und beim zweiten Mal, d.h. wenn ich die Seite aktualisiere, erhalte ich: 
Sie können auch die HAProxy-Statistiken überprüfen, indem Sie http://192.168.205.15/haproxy?stats besuchen.
Es gibt noch mehr, was Sie mit dieser Einrichtung tun können. Einige Ideen sind:
- Nehmen Sie einen oder beide Webserver offline, um zu testen, was passiert, wenn Sie auf HAProxy zugreifen.
- Konfigurieren Sie HAProxy, um eine benutzerdefinierte Wartungsseite bereitzustellen.
- Konfigurieren Sie die Weboberfläche, damit Sie die HAProxy-Statistiken visuell überwachen können.
- Ändern Sie den Scheduler in etwas anderes als Round-Robin.
- Konfigurieren Sie Priorisierungen/Gewichte für bestimmte Server.
Das ist alles!
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.