Inštalácia nástroja na vyvažovanie zaťaženia HAProxy na CentOS

Preklad článku bol pripravený v predstihu pred začiatkom kurzu "Správca Linuxu. Virtualizácia a klastrovanie"

Inštalácia nástroja na vyvažovanie zaťaženia HAProxy na CentOS

Vyvažovanie záťaže je bežné riešenie pre horizontálne škálovanie webových aplikácií naprieč viacerými hostiteľmi, pričom používateľom poskytuje jediný bod prístupu k službe. HAProxy je jedným z najpopulárnejších open source softvéru na vyrovnávanie záťaže, ktorý tiež poskytuje vysokú dostupnosť a funkcie proxy.

HAProxy sa snaží optimalizovať využitie zdrojov, maximalizovať priepustnosť, minimalizovať čas odozvy a vyhnúť sa preťaženiu jednotlivých zdrojov. Dá sa nainštalovať na rôzne distribúcie Linuxu, ako je CentOS 8, na ktorý sa zameriame v tejto príručke, ako aj na systémy Debian 8 и Ubuntu 16.

Inštalácia nástroja na vyvažovanie zaťaženia HAProxy na CentOS

HAProxy je obzvlášť vhodný pre webové stránky s veľmi vysokou návštevnosťou, a preto sa často používa na zlepšenie spoľahlivosti a výkonu konfigurácií webových služieb s viacerými servermi. Táto príručka popisuje kroky na nastavenie HAProxy ako nástroja na vyvažovanie záťaže na cloudovom hostiteľovi CentOS 8, ktorý potom nasmeruje prevádzku na vaše webové servery.

Predpokladom na dosiahnutie najlepších výsledkov by ste mali mať aspoň dva webové servery a server na vyrovnávanie záťaže. Na webových serveroch musí byť spustená aspoň základná webová služba, ako je nginx alebo httpd, aby sa medzi nimi otestovalo vyrovnávanie záťaže.

Inštalácia HAProxy na CentOS 8

Pretože HAProxy je rýchlo sa vyvíjajúca open source aplikácia, distribúcia, ktorú máte k dispozícii v štandardných úložiskách CentOS, nemusí byť najnovšou verziou. Ak chcete zistiť aktuálnu verziu, spustite nasledujúci príkaz:

sudo yum info haproxy

HAProxy vždy poskytuje tri stabilné verzie, z ktorých si môžete vybrať: dve najnovšie podporované verzie a tretiu, staršiu verziu, ktorá stále dostáva dôležité aktualizácie. Vždy si môžete skontrolovať najnovšiu stabilnú verziu uvedenú na webovej stránke HAProxy a potom sa rozhodnúť, s ktorou verziou chcete pracovať.

V tejto príručke budeme inštalovať najnovšiu stabilnú verziu 2.0, ktorá v čase písania príručky ešte nebola dostupná v štandardných úložiskách. Budete ho musieť nainštalovať z pôvodného zdroja. Najprv si však skontrolujte, či ste splnili potrebné podmienky na stiahnutie a zostavenie programu.

sudo yum install gcc pcre-devel tar make -y

Stiahnite si zdrojový kód pomocou príkazu nižšie. Môžete skontrolovať, či je k dispozícii novšia verzia Stránka na stiahnutie HAProxy.

wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz

Po dokončení sťahovania extrahujte súbory pomocou príkazu nižšie:

tar xzvf ~/haproxy.tar.gz -C ~/

Prejdite do rozbaleného zdrojového adresára:

cd ~/haproxy-2.0.7

Potom skompilujte program pre váš systém:

make TARGET=linux-glibc

A nakoniec nainštalujte samotné HAProxy:

sudo make install

HAProxy je teraz nainštalovaný, ale vyžaduje si ďalšie manipulácie, aby fungoval. Pokračujme v nastavovaní softvéru a služieb nižšie.

Nastavenie HAProxy pre váš server

Teraz pridajte nasledujúce adresáre a štatistický súbor pre položky HAProxy:

sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy 
sudo touch /var/lib/haproxy/stats

Vytvorte symbolický odkaz na 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/haproxy

Ak chcete do vášho systému pridať proxy ako službu, skopírujte súbor haproxy.init z príkladov do vášho adresára /etc/init.d. Upravte povolenia súboru tak, aby sa skript spustil, a potom reštartujte démona systemd:

sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload

Musíte tiež povoliť, aby sa služba automaticky reštartovala pri spustení systému:

sudo chkconfig haproxy on

Pre pohodlie sa tiež odporúča pridať nového používateľa na spustenie HAProxy:

sudo useradd -r haproxy

Potom môžete znova 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.

Napokon, predvolený firewall v CentOS 8 je pre tento projekt dosť obmedzujúci. Na povolenie požadovaných služieb a resetovanie brány firewall použite nasledujúce príkazy:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload

Nastavenie vyvažovača zaťaženia

Nastavenie HAProxy je pomerne jednoduchý proces. V podstate všetko, čo musíte urobiť, je povedať HAProxy, aké spojenia má počúvať a kam ich má prenášať.

To sa dosiahne vytvorením konfiguračného súboru /etc/haproxy/haproxy.cfg s definovaním nastavení. Môžete si prečítať o možnostiach konfigurácie HAProxy na stránke dokumentácieak o tom chcete vedieť viac.

Vyvažovanie zaťaženia na transportnej vrstve (vrstva 4)

Začnime základným nastavením. Vytvorte nový konfiguračný súbor, napríklad pomocou vi s príkazom nižšie:

sudo vi /etc/haproxy/haproxy.cfg

Pridajte do súboru nasledujúce sekcie. Nahradiť názov servera čo by malo volať vaše servery na stránke so štatistikami a private_ip — súkromné ​​adresy IP serverov, na ktoré chcete nasmerovať webovú prevádzku. Môžete skontrolovať súkromné ​​​​IP adresy na ovládacom paneli UpCloud a na karte Súkromná sieť v ponuke 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 check

Toto definuje vyvažovač záťaže transportnej vrstvy (vrstva 4) externe s názvom http_front počúvajúci na porte 80, ktorý potom posiela prenos do predvoleného backendu s názvom http_back. Dodatočná štatistika /haproxy?stats pripojí stránku so štatistikou k zadanej adrese.

Rôzne algoritmy na vyrovnávanie záťaže.

Zadanie serverov v sekcii backend umožňuje HAProxy použiť tieto servery na vyvažovanie záťaže podľa algoritmu round-robin, ak je to možné.

Algoritmy vyvažovania sa používajú na určenie, na ktorý server v backende sa každé pripojenie prenesie. Tu sú niektoré z užitočných možností:

  • Roundrobin: Každý server sa používa postupne podľa jeho hmotnosti. Toto je najplynulejší a najspravodlivejší algoritmus, keď čas spracovania serverov zostáva rovnomerne rozdelený. Tento algoritmus je dynamický a umožňuje prispôsobovanie hmotnosti servera za behu.
  • Leastconn: je vybratý server s najmenším počtom pripojení. Round robin sa vykonáva medzi servermi s rovnakým zaťažením. Použitie tohto algoritmu sa odporúča pre dlhé relácie, ako sú LDAP, SQL, TSE atď., ale nie je príliš vhodné pre krátke relácie, ako je HTTP.
  • Najprv: Prvý server s dostupnými slotmi na pripojenie prijme pripojenie. Servery sa vyberajú od najnižšieho číselného ID po najvyššie, ktoré je predvolene nastavené na pozíciu servera vo farme. Keď server dosiahne maxconn, použije sa ďalší server.
  • zdroj: Zdrojová IP adresa je hašovaná a delená celkovou váhou spustených serverov, aby sa určilo, ktorý server prijme požiadavku. Týmto spôsobom bude rovnaká adresa IP klienta vždy smerovať na rovnaký server, zatiaľ čo servery zostanú rovnaké.

Nastavenie vyvažovania záťaže na úrovni aplikácie (vrstva 7)

Ďalšou dostupnou možnosťou je nakonfigurovať nástroj na vyrovnávanie zaťaženia tak, aby sa spúšťal na aplikačnej vrstve (vrstva 7), čo je užitočné, keď sú časti vašej webovej aplikácie umiestnené na rôznych hostiteľoch. To sa dá dosiahnuť obmedzením prenosu spojenia, napríklad URL.

Otvorte konfiguračný súbor HAProxy pomocou textového editora:

sudo vi /etc/haproxy/haproxy.cfg

Potom nakonfigurujte 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 check

Frontend deklaruje pravidlo ACL s názvom url_blog, ktoré platí pre všetky pripojenia s cestami začínajúcimi na /blog. Use_backend určuje, že pripojenia zodpovedajúce podmienke url_blog by mal obsluhovať backend s názvom blog_back a všetky ostatné požiadavky spracováva predvolený backend.

Na strane backendu konfigurácia nastaví dve skupiny serverov: http_back, ako predtým, a nový s názvom blog_back, ktorý sa stará o pripojenia k example.com/blog.

Po zmene nastavení uložte súbor a reštartujte HAProxy pomocou nasledujúceho príkazu:

sudo systemctl restart haproxy

Ak sa počas spúšťania zobrazia nejaké varovania alebo chybové hlásenia, skontrolujte ich v konfigurácii a uistite sa, že ste vytvorili všetky potrebné súbory a priečinky, potom skúste reštartovať znova.

Testovanie nastavenia

Po nakonfigurovaní a spustení HAProxy otvorte verejnú IP adresu servera na vyrovnávanie záťaže v prehliadači a skontrolujte, či ste správne pripojení k backendu. Parameter stats uri v konfigurácii vytvorí štatistickú stránku na zadanej adrese.

http://load_balancer_public_ip/haproxy?stats

Ak sa pri načítaní stránky so štatistikami všetky vaše servery zobrazujú nazeleno, nastavenie bolo úspešné!

Inštalácia nástroja na vyvažovanie zaťaženia HAProxy na CentOS

Stránka so štatistikami obsahuje niekoľko užitočných informácií na sledovanie vašich webových hostiteľov vrátane času vzostupu a výpadku a počtu relácií. Ak je server označený červenou farbou, uistite sa, že je server zapnutý a že ho môžete pingnúť zo stroja na vyrovnávanie záťaže.

Ak váš nástroj na vyrovnávanie zaťaženia nereaguje, skontrolujte, či pripojenia HTTP nie sú blokované bránou firewall. Tiež sa uistite, že HAProxy funguje pomocou príkazu nižšie:

sudo systemctl status haproxy

Ochrana štatistickej stránky heslom

Ak je však štatistická stránka jednoducho uvedená na frontende, potom je otvorená pre každého, čo nemusí byť dobrý nápad. Namiesto toho mu môžete priradiť vlastné číslo portu pridaním nižšie uvedeného príkladu na koniec súboru haproxy.cfg. Nahradiť meno и heslo pre niečo bezpečné:

listen stats
   bind *:8181
   stats enable
   stats uri /
   stats realm Haproxy Statistics
   stats auth username:password

Po pridaní novej skupiny poslucháčov odstráňte starý odkaz uri štatistiky zo skupiny frontendu. Po dokončení uložte súbor a reštartujte HAProxy.

sudo systemctl restart haproxy

Potom znova otvorte nástroj na vyrovnávanie zaťaženia s novým číslom portu a prihláste sa pomocou používateľského mena a hesla, ktoré ste zadali v konfiguračnom súbore.

http://load_balancer_public_ip:8181

Uistite sa, že všetky vaše servery sú stále zelené a potom v prehliadači otvorte iba IP vyrovnávača zaťaženia bez akýchkoľvek čísel portov.

http://load_balancer_public_ip/

Ak máte na svojich back-end serveroch aspoň rôzne vstupné stránky, všimnete si, že pri každom opätovnom načítaní stránky dostanete odpoveď od iného hostiteľa. Môžete vyskúšať rôzne vyvažovacie algoritmy v sekcii konfigurácie alebo sa pozrieť kompletnú dokumentáciu.

Záver: HAProxy Load Balancer

Blahoželáme k úspešnému nastaveniu vášho vyrovnávača zaťaženia HAProxy! Dokonca aj so základným nastavením vyrovnávania záťaže môžete výrazne zlepšiť výkon a dostupnosť svojej webovej aplikácie. Táto príručka je len úvodom do vyvažovania záťaže pomocou HAProxy, ktorá dokáže oveľa viac, než čo možno pokryť v príručke rýchleho nastavenia. Odporúčame experimentovať s použitím rôznych konfigurácií rozsiahlu dokumentáciu, dostupné pre HAProxy a potom začnite plánovať vyvažovanie záťaže pre vaše produkčné prostredie.

Použitím viacerých hostiteľov na ochranu vašej webovej služby s rezervou môže samotný nástroj na vyvažovanie záťaže stále predstavovať bod zlyhania. Vysokú dostupnosť môžete ďalej zlepšiť inštaláciou plávajúcej IP medzi viacerými vyrovnávačmi zaťaženia. Viac sa o tom dozviete v našom článok o plávajúcich IP adresách na UpCloud.

Viac o kurze "Správca Linuxu. Virtualizácia a klastrovanie"***

Zdroj: hab.com

Pridať komentár