Prevod članka pripremljen je uoči početka kursa

Upravljanje opterećenjem je uobičajeno rešenje za horizontalno skaliranje web aplikacija na više hostova, pružajući korisnicima jedinstvenu tačku pristupa usluzi. je jedan od najpopularnijih programa za upravljanje opterećenjem sa otvorenim kodom, koji takođe osigurava visoku dostupnost i funkcionalnost proxy-a.
HAProxy nastoji optimizovati iskorišćenje resursa, maksimalizovati propusnost, minimizovati vreme odziva i izbjeći preopterećenje svakog pojedinačnog resursa. Može se instalirati na brojnim distribucijama Linux-a, kao što je CentOS 8, na kojem se osvrćemo u ovom vodiču, kao i u sistemima in .

HAProxy je posebno pogodan za web sajtove sa veoma visokim saobraćajem i zato se često koristi za poboljšanje pouzdanosti i performansi konfiguracija web usluga sa više servera. U ovom vodiču su prikazani koraci za podešavanje HAProxy kao upravljača opterećenjem na cloud hostu CentOS 8, koji zatim usmerava saobraćaj na vaše web servere.
Kao neophodan uslov za postizanje najboljih rezultata potrebno je imati najmanje dva web servera i server za upravljanje opterećenjem. Na web serverima treba da bude pokrenuta barem osnovna web usluga, kao što je nginx ili httpd, kako bi se mogla proveriti balansa opterećenja između njih.
Instalacija HAProxy na CentOS 8
S obzirom na to da je HAProxy brzo razvijajuća aplikacija sa otvorenim kodom, verzija dostupna u standardnim repozitorijima CentOS-a možda neće biti najnovija. Da biste saznali aktuelnu verziju, izvršite sledeću komandu:
sudo yum info haproxyHAProxy uvek nudi tri stabilne verzije: dve najnovije podržane verzije i treću, stariju, koja još uvek dobija kritične ažuriranja. Uvek možete proveriti najnoviju stabilnu verziju na HAProxy sajtu, a zatim odlučiti s kojom verzijom želite raditi.
V tem priročniku bomo namestili najnovejšo stabilno različico 2.0, ki še ni bila na voljo v standardnih repozitorijih ob pisanju priročnika. Namestiti jo boste morali iz izvorne kode. Najprej pa preverite, ali so izpolnjeni potrebni pogoji za prenos in kompilacijo programa.
sudo yum install gcc pcre-devel tar make -yPrenesite izvorno kodo s spodnjo ukazno vrstico. Preverite, ali je na voljo novejša različica na .
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gzKo je prenos končan, razpakirajte datoteke s spodnjim ukazom:
tar xzvf ~/haproxy.tar.gz -C ~/Pojdite v razpakirano mapo z izvorno kodo:
cd ~/haproxy-2.0.7Nato skompilirajte program za vaš sistem:
make TARGET=linux-glibcIn na koncu namestite samo HAProxy:
sudo make installZdaj je HAProxy nameščen, vendar so potrebni še nekateri dodatni koraki. Nadaljujmo z nastavitvijo programske opreme in storitev spodaj.
Nastavitev HAProxy za vaš strežnik
Sedaj dodajte naslednje imenike in datoteko statistike za zapise HAProxy:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/statsUstvarite simbolično povezavo za binarne datoteke, da boste lahko izvajali ukaze HAProxy kot navaden uporabnik:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxyČe želite dodati proxy strežnik v sistem kot storitev, kopirajte datoteko haproxy.init iz primerov v svoj imenik /etc/init.d. Uredite dovoljenja za datoteko, da se skripta lahko izvaja, in nato znova zaženite demon systemd:
sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reloadPrav tako morate storitvi omogočiti samodejno ponovno nalaganje ob zagonu sistema:
sudo chkconfig haproxy onZa priročnost je priporočljivo, da dodate novega uporabnika za zagon HAProxy:
sudo useradd -r haproxyPo tem lahko še enkrat preverite številko nameščene različice s spodnjim ukazom:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/V našem primeru mora biti različica 2.0.7, kot je prikazano v zgoraj navedenem izhodu.
Nazadnje je požarni zid v CentOS 8 privzeto precej restriktiven za ta projekt. Uporabite naslednje ukaze, da omogočite potrebne storitve in ponovno zaženete požarni zid:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reloadNastavitev uravnoteževalnika obremenitve
Nastavitev HAProxy je razmeroma preprost postopek. V bistvu morate le povedati HAProxy, katere povezave naj posluša in kam jih je treba preusmeriti.
To se izvede z ustvarjanjem datoteke konfiguracije /etc/haproxy/haproxy.cfg s potrebnimi nastavitev. O parametrih konfiguracije HAProxy lahko preberete , če želite izvedeti več o tem.
Uravnoteženje obremenitve na transportni ravni (layer 4)
Začnimo z osnovno konfiguracijo. Ustvarite novo datoteko konfiguracije, na primer z uporabo vi z naslednjo ukazno vrstico:
sudo vi /etc/haproxy/haproxy.cfgDodajte v datoteko naslednje odseke. Zamenjajte server_name s tistim, kar naj prikazuje vaše strežnike na strani statistike, in private_ip — s privatnimi IP-nameni strežnikov, na katere želite usmeriti spletni promet. Privatne IP-naslove lahko preverite in na zavihku Private network v meniju Mreža.
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 določa uravnoteževalnik obremenitve transportne ravni (layer 4) z zunanjim imenom http_front, ki posluša na portu 80 in nato usmerja promet k privzetemu backendu z imenom http_back. Dodatna statistika /haproxy?stats povezuje stran statistike na navedeni naslov.
Različni algoritmi uravnoteženja obremenitve.
Navajanje strežnikov v odseku backend omogoča HAProxy, da te strežnike uporablja za uravnoteženje obremenitve v skladu z algoritmom krožnega prehoda, ko je to mogoče.
Algoritmi uravnoteženja obremenitve se uporabljajo za določitev, kateremu strežniku v backendu se prenese vsaka povezava. Tukaj je nekaj koristnih možnosti:
- Roundrobin: Vsak strežnik se uporablja zaporedno v skladu s svojo težo. To je najgladkejši in najpoštenejši algoritem, kadar je čas obdelave strežnikov enakomerno porazdeljen. Ta algoritem je dinamičen, kar omogoča prilagajanje teže strežnika v realnem času.
- Leastconn: izbira se strežnik z najmanjšim številom povezav. Ciklična izbira se izvaja med strežniki z enako obremenitvijo. Uporaba tega algoritma se priporoča za dolga omrežna povezovanja, kot so LDAP, SQL, TSE itd., vendar ni zelo primeren za kratka omrežna povezovanja, kot je HTTP.
- Prvi: prvi strežnik z razpoložljivimi prostori za povezavo dobi povezavo. Strežniki so izbrani od najnižjega številskega identifikatorja do najvišjega, kar privzeto ustreza položaju strežnika v farmi. Ko strežnik doseže vrednost maxconn, se uporabi naslednji strežnik.
- Vir: IP-naslov izvora se hashuje in deli na skupno težo zagnanih strežnikov, da se določi, kateri strežnik bo prejel zahtevo. Tako bo isti IP-naslov odjemalca vedno dodeljen istemu strežniku, medtem ko strežniki ostanejo nespremenjeni.
Nastavitev uravnoteženja obremenitve na aplikacijski ravni (layer 7)
Še ena razpoložljiva možnost je, da nastavite uravnoteževalnik obremenitve za delovanje na aplikacijski ravni (layer 7), kar je koristno, kadar so deli vašega spletnega dela nameščeni na različnih gostiteljih. To je mogoče doseči z usklajevanjem prenosa povezave, na primer po URL-ju.
Odprite konfiguracijsko datoteko HAProxy s pomočjo besedilnega urednika:
sudo vi /etc/haproxy/haproxy.cfgNato nastavite segmente frontend in backend v skladu z zgornjim primerom:
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 razglasi pravilo ACL z imenom url_blog, ki se uporablja za vse povezave s potmi, ki se začnejo z /blog. Use_backend določa, da morajo biti povezave, ki ustrezajo pogoju url_blog, obravnavane z backendom z imenom blog_back, vsi drugi zahtevki pa se obdelujejo z privzetim backendom.
Na strani backend konfiguracija vzpostavi dve skupini strežnikov: http_back, kot prej, in novo, imenovano blog_back, ki obravnava povezave z example.com/blog.
Po spremembi nastavitev shranite datoteko in znova zaženite HAProxy s pomočjo naslednjega ukaza:
sudo systemctl restart haproxyČe ste ob zagonu prejeli kakršne koli napake ali opozorila, preverite konfiguracijo in se prepričajte, da ste ustvarili vse potrebne datoteke in mape, nato pa ponovno poskusite zagnati.
Preizkušanje nastavitve
Ko je HAProxy nastavljen in deluje, odprite javni IP-naslov strežnika za razkladanje v brskalniku in preverite, ali ste se pravilno povezali z ozadjem. Parameter stats uri v konfiguraciji ustvari stran statistike na navedenem naslovu.
http://load_balancer_public_ip/haproxy?statsKo naložite stran statistike, če so vsi vaši strežniki prikazani z zeleno barvo, so nastavitve uspešne!

Stran statistike vsebuje nekatere koristne informacije za spremljanje vaših spletnih gostiteljev, vključno s časom delovanja/padca in številom sej. Če je strežnik označen rdeče, se prepričajte, da je strežnik vklopljen in da ga lahko pingate z naprave za razkladanje.
Če vaš sistem za razkladanje ne odgovarja, se prepričajte, da požarni zid ne blokira HTTP-povezav. Prav tako se prepričajte, da HAProxy deluje z naslednjim ukazom:
sudo systemctl status haproxyZaščita strani statistike z geslom
Vendar, če je stran statistike preprosto navedena v sprednjem delu, je odprta za javno dostopnost, kar morda ni najboljša ideja. Namesto tega ji lahko dodelite svoj številčnik, tako da na konec datoteke haproxy.cfg dodate spodnji primer. Zamenjajte username in password z nečim varnim:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:passwordPo dodajanju nove skupine poslušalcev odstranite staro povezavo na stats uri iz sprednje skupine. Ko končate, shranite datoteko in ponovno zaženite HAProxy.
sudo systemctl restart haproxyNato znova odprite sistem za razkladanje z novim številom vrat in se prijavite z uporabniškim imenom in geslom, ki ste jih navedli v konfiguracijski datoteki.
http://load_balancer_public_ip:8181Prepričajte se, da vsi vaši strežniki še vedno prikazujejo zeleno barvo, nato pa v brskalniku odprite samo IP naslov razkladanja brez kakršnih koli številk vrat.
http://load_balancer_public_ip/Če na vaših notranjih strežnikih obstaja vsaj nekoliko raznolike ciljne strani, boste opazili, da vsakič, ko osvežite stran, prejmete odgovor z drugega gostitelja. Lahko preizkusite različne algoritme uravnoteženja obremenitve v razdelku nastavitve ali si ogledate .
Zaključek: uravnoteževalnik obremenitve HAProxy
Čestitamo ob uspešni nastavitvi uravnoteževalnika obremenitve HAProxy! Tudi z osnovno nastavitvijo uravnoteženja obremenitve lahko znatno izboljšate zmogljivost in dostopnost svoje spletne aplikacije. To priročnik je le uvod v uravnoteženje obremenitve z uporabo HAProxy, ki zmore veliko več, kot kar je mogoče opisati v kratkih nastavitvah. Priporočamo, da eksperimentirate z različnimi konfiguracijami s pomočjo , dostopne za HAProxy, in nato nadaljujete z načrtovanjem uravnoteženja obremenitve za vaše proizvodno okolje.
Z uporabo več gostiteljev za zaščito vaše spletne storitve s presežkom zmogljivosti, lahko sam uravnoteževalnik obremenitve vseeno predstavlja točko okvare. Možete še bolj povečati visoko razpoložljivost tako, da nastavite plavajoči IP med več uravnoteževalniki obremenitve. Več o tem lahko izveste v naši .
Več o tečaju ***
Izvor: habr.com
