V tomto článku vysvětlíme nezbytné kroky k instalaci a konfiguraci HAProxy Load Balancer na Ubuntu 18.04 LTS. Než budete pokračovat v tomto tutoriálu, ujistěte se, že jste přihlášeni jako uživatel s právy sudo. Všechny příkazy v tomto tutoriálu by měly být spouštěny jako uživatel bez oprávnění root.
HAProxy je linuxový nástroj s otevřeným zdrojovým kódem, který poskytuje vysokou dostupnost vyvažování zátěže a služby proxy pro síťové aplikace založené na TCP a HTTP. Díky své snadné integraci do stávajících architektur, vhodnosti pro weby s vysokou návštěvností, extrémní spolehlivosti a zaměření na vyšší kompatibilitu je standardně dodáván většinou mainstreamových linuxových distribucí.
Nainstalujte HAProxy na Ubuntu
Krok 1. Podrobnosti sítě
V zájmu jednoduchosti budeme u instancí předpokládat následující adresy IP a názvy hostitelů:
- haproxy-server :veřejná IP adresa 198.18.0.1
- backend-server1 :soukromá IP adresa 172.16.0.1 , veřejná IP adresa 198.18.0.1
- backend-server2 :soukromá IP adresa 172.16.0.2 , veřejná IP adresa 198.18.0.2
Krok 2. Než začnete instalovat jakýkoli balíček na svůj server Ubuntu, vždy doporučujeme ujistit se, že jsou všechny systémové balíčky aktualizovány.
sudo apt update sudo apt upgrade
Krok 3. Nainstalujte HaProxy na Ubuntu 18.04 LTS.
HaProxy je k dispozici v úložišti softwaru Ubuntu, takže jej můžeme nainstalovat pomocí správce balíčků spuštěním příkazu níže:
sudo add-apt-repository ppa:vbernat/haproxy-1.8 sudo apt-get update sudo apt-get install haproxy
Krok 4. Konfigurace vyvažování zátěže pomocí HAProxy.
Nyní upravte výchozí konfigurační soubor haproxy /etc/haproxy/haproxy.cfg a spusťte konfiguraci:
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
Takže na konec souboru přidejte obsah níže:
frontend ourwebsitefrontend bind *:80 mode http default_backend ourwebsiteendpoin
Parametr bind říká HaProxy, aby naslouchala na portu 80 pro připojení. Na konci textu jsme specifikovali ourwebsiteendpoint jako směrnici, kde jsou umístěny naše koncové body. Nyní můžeme pokračovat a přidat podrobnosti o konfiguraci backendu následovně:
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
Nyní, pokud chcete, můžete povolit statistiku Haproxy přidáním následující konfigurace do konfiguračního souboru HAProxy:
listen stats bind :32600 stats enable stats uri / stats hide-version stats auth username:password
Krok 5. Konečný konfigurační soubor HAProxy.
Konečný konfigurační soubor může vypadat takto:
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
Poté restartujte server HaProxy a znovu načtěte změny:
sudo service haproxy restart
Krok 6. Testování konfigurace.
V této fázi máme plně funkční nastavení HAProxy. Na každém uzlu webového serveru mám ukázkovou stránku index.html zobrazující název hostitele serverů, takže můžeme snadno rozlišovat mezi webovými stránkami serverů.
Nyní přejděte k portu 80 na IP 198.18.0.1 (jak je nakonfigurováno výše) ve webovém prohlížeči a stiskněte tlačítko Obnovit. Uvidíte, že HAProxy odesílá požadavky na backend server jeden po druhém (podle kruhového algoritmu).
To je vše, co potřebujete k instalaci HAProxy Load na Ubuntu 18.04. Doufám, že vám tento rychlý tip pomůže. Pokud máte dotazy nebo návrhy, neváhejte zanechat komentář níže.