In diesem Artikel haben wir die notwendigen Schritte zur Installation und Konfiguration von HAProxy Load Balancer auf Ubuntu 18.04 LTS erklärt. Bevor Sie mit diesem Tutorial fortfahren, vergewissern Sie sich, dass Sie als Benutzer mit sudo-Berechtigungen angemeldet sind. Alle Befehle in diesem Tutorial sollten als Nicht-Root-Benutzer ausgeführt werden.
HAProxy ist ein Open-Source-Linux-Tool, das Hochverfügbarkeits-Load-Balancing und Proxy-Dienste für TCP- und HTTP-basierte Netzwerkanwendungen bereitstellt. Aufgrund seiner einfachen Integration in bestehende Architekturen, seiner Eignung für stark frequentierte Websites, seiner extremen Zuverlässigkeit und seines Fokus auf Aufwärtskompatibilität wird es standardmäßig von den meisten Mainstream-Linux-Distributionen ausgeliefert.
Installieren Sie HAProxy auf Ubuntu
Schritt 1. Netzwerkdetails
Wir gehen der Einfachheit halber von folgenden IP-Adressen und Hostnamen für die Instanzen aus:
- haproxy-server :öffentliche IP-Adresse 198.18.0.1
- backend-server1 :private IP-Adresse 172.16.0.1 , öffentliche IP-Adresse 198.18.0.1
- backend-server2 :private IP-Adresse 172.16.0.2 , öffentliche IP-Adresse 198.18.0.2
Schritt 2. Bevor Sie mit der Installation eines Pakets auf Ihrem Ubuntu-Server beginnen, empfehlen wir immer, sicherzustellen, dass alle Systempakete aktualisiert sind.
sudo apt update sudo apt upgrade
Schritt 3. Installieren Sie HaProxy auf Ubuntu 18.04 LTS.
HaProxy ist im Ubuntu-Software-Repository verfügbar, sodass wir es mit dem Paketmanager installieren können, indem Sie den folgenden Befehl ausführen:
sudo add-apt-repository ppa:vbernat/haproxy-1.8 sudo apt-get update sudo apt-get install haproxy
Schritt 4. Load-Balancing-Konfiguration mit HAProxy.
Bearbeiten Sie nun die Haproxy-Standardkonfigurationsdatei /etc/haproxy/haproxy.cfg und starten Sie die Konfiguration:
sudo nano /etc/haproxy/haproxy.cfg
global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon # Default SSL material locations ca-base /etc/ssl/certs crt-base /etc/ssl/private # Default ciphers to use on SSL-enabled listening sockets. # For more information, see ciphers(1SSL). This list is from: # https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256::RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS ssl-default-bind-options no-sslv3 defaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 errorfile 400 /etc/haproxy/errors/400.http errorfile 403 /etc/haproxy/errors/403.http errorfile 408 /etc/haproxy/errors/408.http errorfile 500 /etc/haproxy/errors/500.http errorfile 502 /etc/haproxy/errors/502.http errorfile 503 /etc/haproxy/errors/503.http errorfile 504 /etc/haproxy/errors/504.http
Fügen Sie also gegen Ende der Datei den folgenden Inhalt hinzu:
frontend ourwebsitefrontend bind *:80 mode http default_backend ourwebsiteendpoin
Der bind-Parameter weist HaProxy an, Port 80 auf Verbindungen abzuhören. Am Ende des Textes haben wir als Anweisung, wo sich unsere Endpunkte befinden, unseren Website-Endpunkt angegeben. Wir können jetzt fortfahren und die Backend-Konfigurationsdetails wie folgt hinzufügen:
backend ourwebsiteendpoint
balance roundrobin
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpchk HEAD / HTTP/1.1\r\nHost:localhost
server backend-server1 172.16.0.1:8080 check
server backend-server2 172.16.0.2:8080 check
Wenn Sie möchten, können Sie jetzt Haproxy-Statistiken aktivieren, indem Sie die folgende Konfiguration in der HAProxy-Konfigurationsdatei hinzufügen:
listen stats bind :32600 stats enable stats uri / stats hide-version stats auth username:password
Schritt 5. Endgültige HAProxy-Konfigurationsdatei.
Die endgültige Konfigurationsdatei könnte wie folgt aussehen:
global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon # Default SSL material locations ca-base /etc/ssl/certs crt-base /etc/ssl/private # Default ciphers to use on SSL-enabled listening sockets. # For more information, see ciphers(1SSL). This list is from: # https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM$ ssl-default-bind-options no-sslv3 defaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 errorfile 400 /etc/haproxy/errors/400.http errorfile 403 /etc/haproxy/errors/403.http errorfile 408 /etc/haproxy/errors/408.http errorfile 500 /etc/haproxy/errors/500.http errorfile 502 /etc/haproxy/errors/502.http errorfile 503 /etc/haproxy/errors/503.http errorfile 504 /etc/haproxy/errors/504.http frontend ourwebsitefrontend bind *:80 mode http default_backend ourwebsiteendpoint backend ourwebsiteendpoint balance roundrobin option forwardfor http-request set-header X-Forwarded-Port %[dst_port] http-request add-header X-Forwarded-Proto https if { ssl_fc } option httpchk HEAD / HTTP/1.1\r\nHost:localhost server backend-server1 172.16.0.1:8080 check server backend-server2 172.16.0.2:8080 check listen stats bind :32600 stats enable stats uri / stats hide-version stats auth username:password
Starten Sie dann den HaProxy-Server neu, um die Änderungen neu zu laden:
sudo service haproxy restart
Schritt 6. Testen der Konfiguration.
In diesem Stadium haben wir ein voll funktionsfähiges HAProxy-Setup. An jedem Webserver-Knoten habe ich eine index.html-Demoseite, die den Hostnamen des Servers zeigt, sodass wir leicht zwischen Server-Webseiten unterscheiden können.
Greifen Sie nun im Webbrowser auf Port 80 auf IP 198.18.0.1 (wie oben konfiguriert) zu und klicken Sie auf Refresh. Sie werden sehen, dass HAProxy Anfragen nacheinander an den Backend-Server sendet (gemäß Round-Robin-Algorithmus).
Das ist alles, was Sie tun müssen, um HAProxy Load auf Ubuntu 18.04 zu installieren. Ich hoffe, Sie finden diesen schnellen Tipp hilfreich. Wenn Sie Fragen oder Anregungen haben, können Sie unten einen Kommentar hinterlassen.