Překlad článku byl vyhotoven před začátkem kurzu

Zatížení vyvažování je běžné řešení pro horizontální škálování webových aplikací napříč několika hostiteli s poskytováním jediné přístupové špičky pro uživatele k službě. je jedním z nejpopulárnějších programů pro vyvažování zátěže s otevřeným zdrojovým kódem, který také zajišťuje vysokou dostupnost a funkčnost proxy.
HAProxy usiluje o optimalizaci využití zdrojů, maximalizaci propustnosti, minimalizaci doby odezvy a vyvarování se přetížení jednotlivého zdroje. Může být nainstalována na mnoha distribucích Linuxu, jako je CentOS 8, na které se v tomto průvodci zaměříme, a také v systémech a .

HAProxy je zvláště vhodná pro webové stránky s velmi vysokým provozem, a proto se často používá ke zvýšení spolehlivosti a výkonu konfigurací webových služeb s několika servery. Tento průvodce popisuje kroky k nastavení HAProxy jako vyvažovače zátěže na cloudovém hostiteli CentOS 8, který poté směruje provoz na vaše webové servery.
Jako nutnost pro dosažení nejlepších výsledků byste měli mít alespoň dva webové servery a server pro vyvažování zátěže. Na webových serverech by měla být spuštěna alespoň základní webová služba, jako je nginx nebo httpd, aby bylo možné zkontrolovat vyvažování zátěže mezi nimi.
Instalace HAProxy na CentOS 8
Vzhledem k tomu, že HAProxy je rychle se vyvíjející aplikace s otevřeným zdrojovým kódem, distribuce, kterou máte k dispozici ve standardních repozitářích CentOS, nemusí být nejnovější verzí. Abyste zjistili aktuální verzi, proveďte následující příkaz:
sudo yum info haproxyHAProxy vždy nabízí na výběr tři stabilní verze: dvě poslední podporované verze a třetí, starší, která stále dostává kritická aktualizace. Vždy se můžete podívat na nejnovější stabilní verzi uvedenou na webu HAProxy a poté se rozhodnout, kterou verzi chcete použít.
V této příručce budeme instalovat nejnovější stabilní verzi 2.0, která zatím nebyla dostupná ve standardních repozitářích v době psaní příručky. Budete ji muset nainstalovat z primárního zdroje. Nejprve si však zkontrolujte, zda máte splněny potřebné podmínky pro stažení a kompilaci programu.
sudo yum install gcc pcre-devel tar make -yStáhněte zdrojový kód pomocí níže uvedeného příkazu. Můžete zkontrolovat, zda je dostupná novější verze na .
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gzPo dokončení stahování rozbalte soubory pomocí následujícího příkazu:
tar xzvf ~/haproxy.tar.gz -C ~/Přejděte do rozbaleného adresáře se zdrojovými kódy:
cd ~/haproxy-2.0.7Poté zkompilujte program pro váš systém:
make TARGET=linux-glibcA nakonec nainstalujte samotnou HAProxy:
sudo make installNyní je HAProxy nainstalována, ale její provoz vyžaduje další úpravy. Pokračujme v konfiguraci softwaru a služeb níže.
Konfigurace HAProxy pro váš server
Nyní přidejte následující adresáře a soubor se statistikami pro záznamy HAProxy:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/statsVytvořte symbolický odkaz pro binární soubory, abyste mohli spouštět příkazy HAProxy jako běžný uživatel:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxyPokud chcete přidat proxy server do systému jako službu, zkopírujte soubor haproxy.init z examples do svého adresáře /etc/init.d. Upravte oprávnění k souboru, aby byl skript spustitelný, a poté restartujte démon systemd:
sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reloadMusíte také povolit službě automatické spuštění při startu systému:
sudo chkconfig haproxy onPro pohodlí se také doporučuje přidat nového uživatele pro spuštění HAProxy:
sudo useradd -r haproxyPoté můžete znovu zkontrolovat číslo nainstalované verze pomocí následujícího příkazu:
haproxy -v
HA-Proxy verze 2.0.7 2019/09/27 - https://haproxy.org/V našem případě by měla být verze 2.0.7, jak je uvedeno v příkladu výstupu výše.
Nakonec je firewall v CentOS 8 ve výchozím nastavení poměrně restriktivní pro tento projekt. Použijte následující příkazy pro povolení potřebných služeb a restartování firewallu:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reloadNastavení vyrovnávače zátěže
Nastavení HAProxy je poměrně jednoduchý proces. V podstatě stačí říct HAProxy, jaká spojení má sledovat a kam je má přesměrovávat.
To se provádí vytvořením konfiguračního souboru /etc/haproxy/haproxy.cfg s určujícími nastaveními. Můžete si přečíst o parametrech konfigurace HAProxy , pokud se chcete dozvědět více.
Vyrovnávání zátěže na transportní úrovni (layer 4)
Začněme základním nastavením. Vytvořte nový konfigurační soubor, například pomocí vi s následujícím příkazem:
sudo vi /etc/haproxy/haproxy.cfgPřidejte do souboru následující sekce. Nahradíte server_name tím, co by mělo odkazovat na vaše servery na stránce statistiky, a private_ip — privátními IP adresami serverů, na které chcete směrovat webový provoz. Můžete zkontrolovat privátní IP adresy a na kartě Private network v nabídce Síť.
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server server_name1 private_ip1:80 check
server server_name2 private_ip2:80 checkTo definuje vyrovnávač zátěže na transportní úrovni (layer 4) s externím názvem http_front, který poslouchá na portu 80, a poté směruje provoz na výchozí backend s názvem http_back. Další statistiky /haproxy?stats připojí stránku statistik na dané adrese.
Různé algoritmy vyrovnávání zátěže.
Určení serverů v sekci backendu umožňuje HAProxy používat tyto servery pro vyrovnávání zátěže podle algoritmu round-robin, kdykoli je to možné.
Algoritmy vyrovnávání zátěže se používají k tomu, aby určili, na který server v backendu se každé spojení přenáší. Zde jsou některé užitečné možnosti:
- Roundrobin: každý server se používá střídavě podle své hmotnosti. To je nejplynulejší a nejférovější algoritmus, když je čas zpracování serverů rovnoměrně rozložen. Tento algoritmus je dynamický a umožňuje regulaci hmotnosti serveru za běhu.
- Leastconn: server s nejmenším počtem připojení je vybrán. Cyklus probíhá mezi servery se stejnou zátěží. Použití tohoto algoritmu se doporučuje pro dlouhé relace, jako jsou LDAP, SQL, TSE atd., ale příliš se nehodí pro krátké relace, jako je HTTP.
- První: první server s dostupnými sloty pro připojení získává spojení. Servery jsou vybírány od nejnižšího číselného identifikátoru po nejvyšší, což defaultně odpovídá postavení serveru ve farmě. Jakmile server dosáhne hodnoty maxconn, použije se další server.
- Zdroj: IP adresa zdroje je hashována a rozdělena na celkovou váhu spuštěných serverů, aby se určil, který server bude přijímat žádost. Takto bude stejná IP adresa klienta vždy přidělena stejnému serveru, zatímco servery zůstávají neměnné.
Nastavení vyvažování zátěže na aplikační úrovni (layer 7)
Další dostupnou možností je nastavit vyvažovač zátěže pro provoz na aplikační úrovni (layer 7), což je užitečné, když jsou části vaší webové aplikace umístěny na různých hostitelích. Toho lze dosáhnout regulací předání spojení, například podle URL.
Otevřete konfigurační soubor HAProxy pomocí textového editoru:
sudo vi /etc/haproxy/haproxy.cfgPoté nakonfigurujte segmenty frontend a backend podle následujícího příkladu:
frontend http_front
bind *:80
stats uri /haproxy?stats
acl url_blog path_beg /blog
use_backend blog_back if url_blog
default_backend http_back
backend http_back
balance roundrobin
server server_name1 private_ip1:80 check
server server_name2 private_ip2:80 check
backend blog_back
server server_name3 private_ip3:80 checkFrontend vyhlašuje pravidlo ACL s názvem url_blog, které se aplikuje na všechna připojení s cestami začínajícími na /blog. Use_backend určuje, že spojení odpovídající podmínce url_blog by měla obsluhovat backend s názvem blog_back, zatímco všechny ostatní požadavky jsou zpracovány defaultním backendem.
Na straně backendu konfigurace vytváří dvě skupiny serverů: http_back, jak bylo dříve, a novou, nazvanou blog_back, která obsluhuje spojení s example.com/blog.
Po změně nastavení uložte soubor a restartujte HAProxy pomocí následujícího příkazu:
sudo systemctl restart haproxyPokud se při spuštění objeví varování nebo chybová hlášení, zkontrolujte konfiguraci a ujistěte se, že jste vytvořili všechny potřebné soubory a složky, a poté zkuste znovu restartovat.
Testování nastavení
Jakmile je HAProxy nakonfigurováno a spuštěno, otevřete veřejnou IP adresu serveru vyrovnávače zátěže v prohlížeči a zkontrolujte, zda se správně připojujete k backendu. Parametr stats uri v konfiguraci vytváří stránku statistik na zadané adrese.
http://load_balancer_public_ip/haproxy?statsKdyž načtete stránku statistik, pokud se všechny vaše servery zobrazují zeleně, nastavení proběhlo úspěšně!

Stránka statistik obsahuje užitečné informace pro sledování vašich webových hostitelů, včetně času provozu/výpadku a počtu relací. Pokud je server označen červeně, ujistěte se, že je server zapnutý a že ho můžete pingnout z vyrovnávače zátěže.
Pokud váš vyrovnávač zátěže neodpovídá, ujistěte se, že HTTP spojení nejsou blokována firewallem. Také se ujistěte, že HAProxy běží pomocí následujícího příkazu:
sudo systemctl status haproxyOchrana stránky statistik pomocí hesla
Pokud je však stránka statistik jednoduše uvedena na frontendu, je otevřena pro veřejné prohlížení, což může být špatný nápad. Místo toho jí můžete přidělit vlastní číslo portu přidáním následujícího příkladu na konec vašeho souboru haproxy.cfg. Nahraďte uživatelské jméno a heslo něčím bezpečným:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:passwordPo přidání nové skupiny posluchačů odstraňte starý odkaz na stats uri z frontové skupiny. Až skončíte, uložte soubor a restartujte HAProxy.
sudo systemctl restart haproxyPoté znovu otevřete vyrovnávač zátěže s novým číslem portu a přihlaste se jménem uživatele a heslem, které jste uvedli v konfiguračním souboru.
http://load_balancer_public_ip:8181Ujistěte se, že všechny vaše servery se stále zobrazují zeleně, a poté otevřete pouze IP vyrovnávače zátěže bez jakýchkoli čísel portů ve vašem prohlížeči.
http://load_balancer_public_ip/Pokud máte na svých interních serverech nějakou rozmanitost cílových stránek, všimnete si, že pokaždé, když stránku znovu načtete, dostanete odpověď od jiného hostitele. Můžete vyzkoušet různé algoritmy vyvažování v sekci konfigurace nebo se seznámit s .
Závěr: Vyvažovač zatížení HAProxy
Blahopřejeme k úspěšné konfiguraci vyvažovače zatížení HAProxy! I s základním nastavením vyvažování zatížení můžete výrazně zvýšit výkon a dostupnost vaší webové aplikace. Tato příručka je pouze úvodem do vyvažování zatížení pomocí HAProxy, která je schopna mnohem víc, než co je možné popsat v krátkém nastavení. Doporučujeme experimentovat s různými konfiguracemi pomocí , dostupné pro HAProxy, a poté začít s plánováním vyvažování zatížení pro vaše produkční prostředí.
Použitím několika hostitelů k ochraně vaší webové služby pomocí záložního výkonu může sám vyvažovač zatížení stále představovat jediné místo selhání. Můžete ještě více zvýšit vysokou dostupnost nastavením plovoucího IP mezi několika vyvažovači zatížení. O tom se můžete dozvědět více v našem .
Další informace o kurzu ***
Zdroj: habr.com
