Dies ist eine alte Version des Dokuments!
HAProxy ist eine kostenlose Open-Source-Software, die einen Hochverfügbarkeits-Load-Balancer (Layer 4 im OSI Modell) und Reverse-Proxy für TCP- und HTTP-basierte Anwendungen bereitstellt, die Anforderungen auf mehrere Server verteilen.
apt install haproxy
Hauptconfig unter:
/etc/haproxy/haproxy.cfg
See also HAProxy configuration tutorials
Der globale Abschnitt befindet sich oben in Ihrer Konfigurationsdatei. Er definiert Anweisungen auf Prozessebene, beispielsweise die maximale Anzahl zulässiger Verbindungen, den Speicherort der Protokolle und den Benutzer und die Gruppe, unter der der Prozess ausgeführt werden soll. Das folgende Beispiel zeigt nur einige der verfügbaren Optionen:
global maxconn 60000 log 127.0.0.1 local0 log 127.0.0.1 local1 notice user haproxy group haproxy chroot /var/empty
In einem Abschnitt „defaults“ werden allgemeine Einstellungen gespeichert, die von den nachfolgenden Frontend- und Backend-Abschnitten übernommen werden. Er kann auch lange Konfigurationen durch Reduzierung doppelter Zeilen verkürzen. Beispiel für eine Standardkonfiguration: Durch Hinzufügen von Standardeinstellungen zur Konfiguration können Sie Einstellungen definieren, die gegebenenfalls von allen darunter liegenden Abschnitten übernommen werden. Beispielsweise ist „mode“ sowohl auf ein Frontend als auch auf ein Backend anwendbar, „balance“ hingegen nur auf Backends. Nicht alle Anweisungen können in „defaults“ aufgenommen werden, z.B. die Zeilen „bind“ und „server“.
defaults mode http balance roundrobin # Inherits mode frontend website bind :80 default_backend web_servers # Inherits mode and balance backend web_servers server s1 192.168.1.25:80 server s2 192.168.1.26:80
Ein „frontend“ Abschnitt definiert die IP-Adressen und Ports, mit denen Clients eine Verbindung herstellen können. Sie können beliebig viele Frontend-Abschnitte hinzufügen, um verschiedene Websites oder Anwendungen im Internet verfügbar zu machen.
frontend foo.com mode http bind 192.168.1.5:80 default_backend foo_servers frontend db.foo.com mode tcp bind 192.168.1.15:3306 default_backend db_servers
Ein „backend“ Abschnitt definiert einen Serverpool, an den der Load Balancer Anfragen weiterleitet. Sie können beliebig viele Backend-Abschnitte hinzufügen. Jedes Backend-Schlüsselwort wird durch eine Bezeichnung, z. B. „web_servers“, von anderen unterschieden.
frontend foo_and_bar mode http bind :80 use_backend foo_servers if { req.hdr(host) -i foo.com } use_backend bar_servers if { req.hdr(host) -i bar.com } backend foo_servers mode http balance roundrobin server foo1 192.168.1.25:80 check server foo2 192.168.1.26:80 check server foo3 192.168.1.27:80 check backend bar_servers mode http balance roundrobin server bar1 192.168.1.35:80 check server bar2 192.168.1.36:80 check server bar3 192.168.1.37:80 check
frontend stats mode http bind :8404 stats enable stats refresh 10s stats uri /stats stats show-modules