
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.