Preklad článku bol pripravený v predstihu pred začiatkom kurzu

Vyvažovanie zaťaženia je bežné riešenie pre horizontálne škálovanie webových aplikácií na viacerých hostiteľoch, ktoré používateľom poskytuje jediný prístupový bod k službe. je jedným z najpopulárnejších programov na vyvažovanie zaťaženia s otvoreným zdrojovým kódom, ktorý tiež poskytuje vysokú dostupnosť a funkčnosť proxy.
HAProxy sa snaží optimalizovať využívanie zdrojov, maximalizovať priepustnosť, minimalizovať čas odozvy a zabrániť preťaženiu každého jednotlivého zdroja. Môže byť nainštalovaný na mnohých distribúciách Linuxu, ako je CentOS 8, na ktorom sa zameriame v tejto príručke, ako aj v systémoch a .

HAProxy je obzvlášť vhodný pre webové stránky s veľmi vysokou návštevnosťou, a preto sa často používa na zvýšenie spoľahlivosti a výkonu konfigurácií webových služieb s viacerými servermi. V tejto príručke sú opísané kroky na nastavenie HAProxy ako vyvažovača zaťaženia na cloudovom hoste CentOS 8, ktorý následne smeruje prevádzku na vaše webové servery.
Aby ste dosiahli najlepšie výsledky, mali by ste mať aspoň dva webové servery a server pre vyvažovanie zaťaženia. Na webových serveroch by mala byť spustená aspoň základná webová služba, ako je nginx alebo httpd, aby ste mohli skontrolovať vyvažovanie zaťaženia medzi nimi.
Inštalácia HAProxy na CentOS 8
Vzhľadom na to, že HAProxy je rýchlo sa vyvíjajúca aplikácia s otvoreným zdrojovým kódom, distribúcia, ktorá je vám k dispozícii v štandardných repozitároch CentOS, nemusí byť najnovšou verziou. Ak chcete zistiť aktuálnu verziu, vykonajte nasledujúci príkaz:
sudo yum info haproxyHAProxy vždy ponúka na výber tri stabilné verzie: dve najnovšie podporované verzie a tretiu, staršiu verziu, ktorá stále dostáva kritické aktualizácie. Vždy môžete skontrolovať najnovšiu stabilnú verziu uvedenú na stránke HAProxy a potom sa rozhodnúť, s ktorou verziou chcete pracovať.
V tomto sprievodcovi budeme inštalovať najnovšiu stabilnú verziu 2.0, ktorá nebola k dispozícii v štandardných repozitároch v čase písania tohto sprievodcu. Budete ju musieť nainštalovať z pôvodného zdroja. Ale najprv skontrolujte, či máte splnené potrebné podmienky na stiahnutie a kompiláciu programu.
sudo yum install gcc pcre-devel tar make -yStiahnite si zdrojový kód pomocou nižšie uvedeného príkazu. Môžete skontrolovať, či existuje novšia verzia na .
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gzPo dokončení sťahovania rozbaľte súbory pomocou nasledujúceho príkazu:
tar xzvf ~/haproxy.tar.gz -C ~/Prejdite do rozbaleného adresára so zdrojovými kódmi:
cd ~/haproxy-2.0.7Následne skompilujte program pre váš systém:
make TARGET=linux-glibcA nakoniec nainštalujte samotnú HAProxy:
sudo make installTeraz je HAProxy nainštalovaná, ale pre jej fungovanie sú potrebné niektoré ďalšie úpravy. Pokračujme v nastavení softvéru a služieb nižšie.
Nastavenie HAProxy pre váš server
Teraz pridajte nasledujúce adresáre a súbor štatistiky pre záznamy HAProxy:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/statsVytvorte symbolický odkaz pre binárne súbory, aby ste mohli spúšťať príkazy HAProxy ako bežný používateľ:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxyAk chcete pridať proxy server do systému ako službu, skopírujte súbor haproxy.init z examples do svojho adresára /etc/init.d. Upraviť prístupové práva k súboru, aby sa skript mohol vykonávať, a potom reštartujte 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-reloadTakisto musíte povoliť službe automatické reštartovanie pri spustení systému:
sudo chkconfig haproxy onPre pohodlie sa taktiež odporúča pridať nového používateľa na spúšťanie HAProxy:
sudo useradd -r haproxyPo tomto môžete ešte raz skontrolovať číslo nainštalovanej verzie pomocou nasledujúceho príkazu:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/V našom prípade by mala byť verzia 2.0.7, ako je uvedené v príklade výstupu vyššie.
Nakoniec je firewall v CentOS 8 predvolene dosť reštriktívny pre tento projekt. Použite nasledujúce príkazy na povolenie potrebných služieb a reštartovanie firewallu:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reloadNastavenie vyvažovača zaťaženia
Nastavenie HAProxy je celkom jednoduchý proces. V podstate, všetko, čo musíte urobiť, je informovať HAProxy, aké pripojenia má počúvať a kam ich má preposlať.
To sa vykonáva vytvorením konfiguračného súboru /etc/haproxy/haproxy.cfg s určujúcimi nastaveniami. Môžete si prečítať o parametroch konfigurácie HAProxy , ak sa chcete o tom dozvedieť viac.
Vyvažovanie zaťaženia na úrovni prenosu (layer 4)
Začneme so základným nastavením. Vytvorte nový konfiguračný súbor, napríklad pomocou vi s nasledujúcim príkazom:
sudo vi /etc/haproxy/haproxy.cfgPridajte do súboru nasledujúce sekcie. Nahraďte server_name tým, čo by malo označovať vaše servery na štatistickej stránke, a private_ip — privátnymi IP adresami serverov, na ktoré chcete posielať webový prenos. Môžete skontrolovať privátne IP adresy a na karte Private network v menu Sieť.
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 vyvažovač zaťaženia na úrovni prenosu (layer 4) s vonkajším menom http_front, ktorý počúva na porte 80, a potom prenáša prenos na predvolený backend s názvom http_back. Ďalšia štatistika /haproxy?stats pripojí štatistickú stránku na uvedenej adrese.
Rôzne algoritmy vyvažovania zaťaženia.
Určenie serverov v sekcii backend umožňuje HAProxy využívať tieto servery na vyvažovanie zaťaženia podľa algoritmu cyklického prechodu, keď je to možné.
Algoritmy vyvažovania sa používajú na určovanie toho, na ktorý server v backend sa posiela každé pripojenie. Tu sú niektoré užitočné možnosti:
- Roundrobin: každý server sa používa striedavo podľa svojej váhy. To je najplynulejší a najfairerší algoritmus, keď sú doby spracovania servermi rovnomerne rozdelené. Tento algoritmus je dynamický, čo umožňuje regulovať váhu servera za behu.
- Leastconn: server s najmenším počtom spojení je vybraný. Cyklický prístup sa vykonáva medzi servermi s rovnakou záťažou. Použitie tohto algoritmu sa odporúča pre dlhé relácie, ako sú LDAP, SQL, TSE atď., ale nie je veľmi vhodné pre krátke relácie, ako je HTTP.
- Prvý: prvý server s dostupnými slotmi na pripojenie získa spojenie. Servery sú vyberané od najnižšieho číselného identifikátora po najvyšší, ktorý zodpovedá pozícii servera vo farmáre. Akonáhle server dosiahne hodnotu maxconn, používa sa nasledujúci server.
- Zdroj: IP adresa zdroja sa hashuje a delí na spoločnú váhu spustených serverov, aby sa určil, ktorý server bude prijímať požiadavku. Takže tá istá IP adresa klienta bude vždy priradená k tomu istému serveru, zatiaľ čo servery zostanú nezmenené.
Nastavenie vyrovnávania zaťaženia na aplikačnej úrovni (úroveň 7)
Ďalšia dostupná možnosť je nastaviť vyrovnávač zaťaženia na aplikačnej úrovni (úroveň 7), čo je užitočné, ak sú časti vašej webovej aplikácie umiestnené na rôznych hostiteľoch. Toto môže byť dosiahnuté regulovaním prenosu spojenia, napríklad podľa URL.
Otvorí súbor konfigurácie HAProxy v textovom editore:
sudo vi /etc/haproxy/haproxy.cfgPotom nastavte segmenty frontend a backend podľa príkladu nižšie:
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 vyhlasuje pravidlo ACL s názvom url_blog, ktoré sa aplikuje na všetky spojenia s cestami začínajúcimi na /blog. Use_backend určuje, že spojenia, ktoré vyhovujú podmienke url_blog, by mali byť obsluhované backendom s názvom blog_back, a všetky ostatné požiadavky sú spracovávané backendom podľa vlastného nastavenia.
Na strane backendu konfigurácia nastavuje dve skupiny serverov: http_back, ako predtým, a novú, nazvanú blog_back, ktorá obsluhuje spojenia s example.com/blog.
Po zmene nastavení uložte súbor a reštartujte HAProxy pomocou nasledujúcej príkazu:
sudo systemctl restart haproxyAk ste pri spustení dostali nejaké varovania alebo chybové hlásenia, skontrolujte konfiguráciu na ich prítomnosť a uistite sa, že ste vytvorili všetky potrebné súbory a zložky, a potom skúste znova reštartovať.
Testovanie nastavenia
Keď je HAProxy nakonfigurované a spustené, otvorte verejnú IP adresu servera vyrovnávača záťaže vo webovom prehliadači a skontrolujte, či ste sa správne pripojili na backend. Parameter stats uri v konfigurácii vytvára štatistickú stránku na uvedenej adrese.
http://load_balancer_public_ip/haproxy?statsKeď načítate štatistickú stránku, ak sa všetky vaše servery zobrazujú zeleno, nastavenie bolo úspešné!

Štatistická stránka obsahuje niektoré užitočné informácie na sledovanie vašich webhostingov, vrátane doby prevádzky/vypnutia a počtu relácií. Ak je server označený červenou farbou, uistite sa, že server je zapnutý a že ho môžete pingiť z vyrovnávača záťaže.
Ak váš vyrovnávač záťaže neodpovedá, uistite sa, že HTTP pripojenia nie sú blokované firewallom. Taktiež sa uistite, že HAProxy funguje pomocou nasledujúceho príkazu:
sudo systemctl status haproxyOchrana štatistickej stránky pomocou hesla
Avšak, ak je štatistická stránka jednoducho uvedená vo frontende, je otvorená pre verejnosť, čo nemusí byť najlepším nápadom. Namiesto toho jej môžete priradiť vlastné číslo portu pridaním nasledujúceho príkladu na koniec vášho súboru haproxy.cfg. Nahraďte username a password niečím bezpečným:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:passwordPo pridaní novej skupiny poslucháčov odstráňte starý odkaz na stats uri zo skupiny frontend. Keď dokončíte, uložte súbor a reštartujte HAProxy.
sudo systemctl restart haproxyPotom znova otvorte vyrovnávač záťaže s novým číslom portu a prihláste sa s používateľským menom a heslom, ktoré ste uviedli v konfiguračnom súbore.
http://load_balancer_public_ip:8181Uistite sa, že všetky vaše servery sa stále zobrazujú zeleno, a potom otvorte len IP vyrovnávača záťaže bez akýchkoľvek čísel portov vo vašom prehliadači.
http://load_balancer_public_ip/Ak máte na svojich interných serveroch aspoň nejakú rozmanitosť cieľových stránok, všimnete si, že zakaždým, keď načítate stránku, dostávate odpoveď od iného hostiteľa. Môžete vyskúšať rôzne algoritmy vyrovnávania zaťaženia v sekcii konfigurácie alebo sa oboznámiť s .
Záver: vyrovnávač zaťaženia HAProxy
Gratulujeme k úspešnému nastaveniu vyrovnávača zaťaženia HAProxy! Aj s základným nastavením vyrovnávania zaťaženia môžete výrazne zvýšiť výkon a dostupnosť vašej webovej aplikácie. Tento návod je len úvodom do vyrovnávania zaťaženia s HAProxy, ktoré je schopné oveľa viac, ako je možné opísať v stručnej inštalačnej príručke. Odporúčame experimentovať s rôznymi konfiguráciami pomocou , dostupnej pre HAProxy, a potom pristúpiť k plánovaniu vyrovnávania zaťaženia pre vaše produkčné prostredie.
Používaním viacerých hostiteľov na ochranu vášho webového servisu pomocou rezervy výkonu, sám vyrovnávač zaťaženia môže predstavovať bod zlyhania. Ešte viac môžete zvýšiť vysokú dostupnosť nastavením plávajúcej IP medzi viacerými vyrovnávačmi zaťaženia. O tom sa môžete dozvedieť viac v našej .
Viac informácií o kurze ***
Zdroj: habr.com
