HAProxy je zkratka pro High Availability Proxy. Je napsaný v C a je to bezplatný a open-source TCP/HTTP Load Balancer a proxy řešení pro aplikace založené na TCP a HTTP. HAProxy se používá ke zlepšení výkonu serverového prostředí rozložením zátěže na více serverů.
HAProxy umožňuje automatické restartování aplikace nebo přesměrování práce na jiný server v případě selhání. Tento výkonný, vysoce výkonný, spolehlivý a bezpečný nástroj pro vyrovnávání zatížení je nejrozšířenější a byl speciálně navržen pro webové stránky s velmi vysokou návštěvností.
V tomto tutoriálu vám ukážeme, jak nastavit nástroj pro vyrovnávání zatížení vysoké dostupnosti pomocí HAProxy na CentOS 8.
Předpoklady
- Tři nové CentOS 8 VPS na cloudové platformě Atlantic.Net
- Heslo uživatele root nakonfigurované na každém VPS
V tomto kurzu použijeme následující nastavení:
HAProxy Server: – název hostitele:haproxy IP:192.168.0.10
Webový server 1:- název hostitele:web1 IP:192.168.0.11
Webový server 2:- název hostitele:web2 IP:192.168.0.12
Krok 1 – Vytvoření cloudového serveru Atlantic.Net
Nejprve se přihlaste ke svému cloudovému serveru Atlantic.Net. Vytvořte nový server a jako operační systém vyberte CentOS 8 s alespoň 1 GB RAM. Připojte se ke svému cloudovému serveru přes SSH a přihlaste se pomocí přihlašovacích údajů zvýrazněných v horní části stránky.
Jakmile se přihlásíte k serveru CentOS 8, spusťte následující příkaz a aktualizujte svůj základní systém nejnovějšími dostupnými balíčky.
aktualizace dnf -y
Krok 2 – Instalace a konfigurace Nginx
Poznámka:Dokončete tento krok na WebServer 1 a WebServer2
Nejprve budete muset nainstalovat webový server Nginx na instance web1 a web2.
Nginx můžete nainstalovat spuštěním následujícího příkazu:
dnf nainstalovat nginx -y
Po instalaci Nginx spusťte službu Nginx a povolte její spuštění při spuštění v obou instancích:
systemctl spustit nginxsystemctl povolit nginx
Dále upravte index.html soubor pro každou instanci.
Upravte index.html soubor na web1 instance pomocí následujícího příkazu:
echo "Toto je můj první webový server Nginx"> /usr/share/nginx/html/index.html
Upravte index.html soubor na web2 instance pomocí následujícího příkazu:
echo "Toto je můj druhý webový server Nginx"> /usr/share/nginx/html/index.html
Po dokončení uložte a zavřete soubor.
Krok 3 – Instalace a konfigurace HAProxy
Poznámka:Dokončete tento krok na serveru HAProxy
Nejprve nainstalujte HAProxy na instanci serveru haproxy pomocí následujícího příkazu:
dnf install haproxy -y
Po dokončení instalace zálohujte výchozí konfigurační soubor haproxy:
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg-bak
Konfigurační soubor je rozdělen do čtyř hlavních částí.
- globální nastavení: Používá se k nastavení parametrů celého procesu.
- výchozí: Používá se k nastavení výchozích parametrů pro všechny ostatní sekce.
- frontend: Používá se k definování způsobu externího přístupu k HAProxy, aby se umožnil přístup k backendu.
- backend: Používá se k definování sady serverů, ke kterým se bude proxy připojovat za účelem předávání příchozích spojení.
Dále vytvořte nový konfigurační soubor haproxy pomocí následujícího příkazu:
nano /etc/haproxy/haproxy.cfg
Přidejte následující řádky, které odpovídají vaší infrastruktuře:
#————————————————————————
globallog 127.0.0.1 local2chroot /var/lib/haproxypidfile /var/run/haproxy.pidmaxconn 4000user haproxygroup haproxydaemon
# zapněte statistiky unix socket
stats socket /var/lib/haproxy/stats
# využívat celosystémové krypto-politiky
ssl-default-bind-ciphers PROFILE=SYSTEMssl-default-server-ciphers PROFILE=SYSTEM
#————————————————————————
výchozí režim httplog globaloption httplogoption dontlognulloption http-server-closeoption forwardfor 127.0.0.0/8option redispatchretries 3timeout http-request 10stimeout fronta 1mtimeout připojení 10stimeout klient 1mtimeout kontrola 1mtimeout server 1mtimeout 1mtimeout#————————————————————————
# hlavní frontend, který slouží jako proxy k backendům
#————————————————————————
frontend haproxy_balancer # definovat název frontend.bind 192.168.0.10:80 # IP adresa HAProxy serveroption http-server-closeoption forwardforstats uri /haproxy?stats # Určete stránku stavu HAProxy.default_backend webservers#————————————————————————
# kruhové vyvažování mezi různými backendy
#————————————————————————
backend webservers # Zadejte název pro identifikaci aplikace
režim httpbalance roundrobin # definuje algoritmus pro vyrovnávání zátěže pro vyrovnávání zátěže httpchk HEAD / HTTP/1.1\r\nHost:\ localhostserver nginx-web1 192.168.0.11:80 check # IP adresa prvního backend serverserver2 nginx.0.1 :80 zkontrolujte # IP adresu druhého backend serveruPoznámka:Ujistěte se, že jste upravili výše uvedenou IP adresu o IP relevantní pro nastavení vašeho serveru
Po dokončení uložte a zavřete soubor. Poté pomocí následujícího příkazu zkontrolujte konfigurační soubor haproxy, zda neobsahuje chyby:
haproxy -c -f /etc/haproxy/haproxy.cfgMěli byste získat následující výstup:
Konfigurační soubor je platnýNakonec spusťte službu haproxy a povolte její spuštění při spouštění pomocí následujícího příkazu:
systemctl spustit haproxysystemctl povolit haproxyHaproxy můžete také ověřit pomocí následujícího příkazu:
systemctl status haproxyMěli byste získat následující výstup:
haproxy.service – HAProxy Load Balancer
Načteno:načteno (/usr/lib/systemd/system/haproxy.service; zakázáno; přednastaveno dodavatelem:zakázáno)Aktivní:aktivní (běží) od pá 2020-04-24 02:14:55 EDT; Před 5 minutamiProces:1371 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q (kód=ukončeno, stav=0/ÚSPĚCH)Hlavní PID:1373 (haproxy)Úkoly:2 (limit:6087)Paměť:2,8MCGroup :/system.slice/haproxy.service├─1373 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid└─1374 /usr/sbin/haproxy -Ws - f /etc/haproxy/haproxy.cfg -p /run/haproxy.pidApr 24 02:14:55 haproxy systemd[1]:Spouštění HAProxy Load Balancer...Apr 24 02:14:55 haproxy systemd[1]:Spuštěno HAProxy Load Balancer.
Krok 4 – Konfigurace protokolování HAProxy
Protokolování HAProxy vám umožňuje vidět statistiky každého připojení k vašim backendovým webovým serverům.
Rsyslog můžete nakonfigurovat úpravou souboru /etc/rsyslog.conf:
nano /etc/rsyslog.conf
Odkomentujte následující řádek:
module(load="imudp")input(type="imudp" port="514")
Po dokončení uložte a zavřete soubor. Dále budete muset nakonfigurovat server rsyslog pro příjem a zpracování zpráv protokolu HAProxy.
Chcete-li tak učinit, vytvořte nový konfigurační soubor haproxy.conf:
nano /etc/rsyslog.d/haproxy.conf
Přidejte následující řádky:
local2.=info /var/log/haproxy-access.loglocal2.notice /var/log/haproxy-info.log
Po dokončení uložte a zavřete soubor. Poté restartujte službu rsyslog a povolte její spuštění při spuštění pomocí následujícího příkazu:
restart systemctl rsyslogsystemctl povolí rsyslog
Krok 5 – Test HAProxy Load Balancing
V tomto okamžiku je HAProxy nainstalován a nakonfigurován. Je čas otestovat, zda vyrovnávání zátěže funguje nebo ne.
Otevřete webový prohlížeč a zadejte svou HAProxy IP http://192.168.0.10. Na následující obrazovce byste měli vidět obsah vašeho prvního webového serveru Nginx:
Dále obnovte webovou stránku. Na následující obrazovce byste měli vidět obsah vašeho druhého webového serveru Nginx:
Stav haproxy můžete zobrazit pomocí adresy URL http://192.168.0.10/haproxy?stats. Na následující obrazovce byste měli vidět stav vašich serverů, aktuální četnost požadavků, doby odezvy a další metriky:
Závěr
Ve výše uvedené příručce jsme se naučili, jak nastavit vyrovnávání zátěže s vysokou dostupností pomocí HAProxy na CentOS 8. Nyní můžete snadno navrhnout a nakonfigurovat vyrovnávání zátěže tak, aby vyhovovalo požadavkům vaší IT infrastruktury a aplikací; vyzkoušejte to na VPS Hosting od Atlantic.Net.