Prevod članka je bil pripravljen na predvečer začetka tečaja
Izravnavanje obremenitve je običajna rešitev za vodoravno prilagajanje spletnih aplikacij na več gostiteljih, hkrati pa uporabnikom zagotavlja eno samo točko dostopa do storitve.
HAProxy si prizadeva optimizirati uporabo virov, povečati prepustnost, zmanjšati odzivni čas in preprečiti preobremenitev katerega koli posameznega vira. Namestite ga lahko v različne distribucije Linuxa, kot je CentOS 8, na katerega se bomo osredotočili v tem priročniku, in sisteme
HAProxy je posebej primeren za spletna mesta z zelo velikim prometom in se zato pogosto uporablja za izboljšanje zanesljivosti in zmogljivosti večstrežniških konfiguracij spletnih storitev. Ta priročnik opisuje korake za nastavitev HAProxy kot izravnalnika obremenitve na gostitelju v oblaku CentOS 8, ki nato usmerja promet na vaše spletne strežnike.
Kot predpogoj za najboljše rezultate morate imeti vsaj dva spletna strežnika in strežnik za uravnoteženje obremenitve. Spletni strežniki morajo izvajati vsaj osnovno spletno storitev, kot je nginx ali httpd, da lahko preizkusite uravnoteženje obremenitve med njimi.
Namestitev HAProxy na CentOS 8
Ker je HAProxy hitro razvijajoča se odprtokodna aplikacija, distribucija, ki vam je na voljo v standardnih repozitorijih CentOS, morda ni najnovejša različica. Če želite izvedeti trenutno različico, zaženite naslednji ukaz:
sudo yum info haproxy
HAProxy vedno ponuja tri stabilne različice, med katerimi lahko izbirate: dve najnovejši podprti različici in tretjo, starejšo različico, ki še vedno prejema kritične posodobitve. Vedno lahko preverite najnovejšo stabilno različico, navedeno na spletnem mestu HAProxy, in se nato odločite, s katero različico želite delati.
V tem priročniku bomo namestili najnovejšo stabilno različico 2.0, ki v času pisanja vodnika še ni bila na voljo v standardnih repozitorijih. Namestiti ga boste morali iz izvirnega vira. Najprej pa preverite, ali ste izpolnili potrebne pogoje za prenos in prevajanje programa.
sudo yum install gcc pcre-devel tar make -y
Prenesite izvorno kodo s spodnjim ukazom. Preverite lahko, ali je na voljo novejša različica
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz
Ko je prenos končan, ekstrahirajte datoteke s spodnjim ukazom:
tar xzvf ~/haproxy.tar.gz -C ~/
Pojdite v nepakiran izvorni imenik:
cd ~/haproxy-2.0.7
Nato prevedite program za vaš sistem:
make TARGET=linux-glibc
In končno, namestite sam HAProxy:
sudo make install
HAProxy je zdaj nameščen, vendar zahteva nekaj dodatnih manipulacij, da deluje. Nadaljujmo z nastavitvijo programske opreme in storitev spodaj.
Nastavitev HAProxy za vaš strežnik
Zdaj dodajte naslednje imenike in statistično datoteko za vnose HAProxy:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/stats
Ustvarite simbolično povezavo za binarne datoteke, da boste lahko izvajali ukaze HAProxy kot običajni uporabnik:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
Če želite svojemu sistemu dodati proxy kot storitev, kopirajte datoteko haproxy.init iz primerov v imenik /etc/init.d. Uredite dovoljenja za datoteke, tako da se bo skript izvajal, 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-reload
Prav tako morate dovoliti, da se storitev samodejno znova zažene, ko se sistem zažene:
sudo chkconfig haproxy on
Za udobje je priporočljivo tudi dodati novega uporabnika za zagon HAProxy:
sudo useradd -r haproxy
Po tem lahko znova preverite številko nameščene različice z naslednjim ukazom:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/
V našem primeru bi morala biti različica 2.0.7, kot je prikazano v zgornjem primeru izhoda.
Končno je privzeti požarni zid v CentOS 8 precej omejujoč za ta projekt. Uporabite naslednje ukaze, da omogočite potrebne storitve in ponastavite 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 --reload
Nastavitev izravnalnika obremenitve
Nastavitev HAProxy je dokaj preprost postopek. V bistvu je vse, kar morate storiti, povedati HAProxyju, katere povezave naj posluša in kam naj jih posreduje.
To storite tako, da ustvarite konfiguracijsko datoteko /etc/haproxy/haproxy.cfg z definiranimi nastavitvami. Preberete lahko o možnostih konfiguracije HAProxy
Izravnavanje obremenitve na transportni plasti (plast 4)
Začnimo z osnovno nastavitvijo. Ustvarite novo konfiguracijsko datoteko, na primer z uporabo vi s spodnjim ukazom:
sudo vi /etc/haproxy/haproxy.cfg
V datoteko dodajte naslednje razdelke. Zamenjati ime_strežnika kaj naj pokliče vaše strežnike na strani s statistiko in zasebni_ip — zasebni naslovi IP strežnikov, na katere želite usmeriti spletni promet. Preverite lahko zasebne naslove IP
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
To definira izravnalnik obremenitve transportne plasti (plast 4) z zunanjim imenom http_front, ki posluša na vratih 80, ki nato posreduje promet v privzeto zaledje z imenom http_back. Dodatna statistika /haproxy?stats poveže stran s statistiko z navedenim naslovom.
Različni algoritmi za uravnoteženje obremenitve.
Če navedete strežnike v zalednem razdelku, lahko HAProxy uporabi te strežnike za uravnoteženje obremenitve v skladu z algoritmom krožnega dela, kadar je to mogoče.
Algoritmi za uravnoteženje se uporabljajo za določitev, kateremu strežniku v zaledju se posreduje posamezna povezava. Tukaj je nekaj uporabnih možnosti:
- Roundrobin: Vsak strežnik se uporablja po vrsti glede na njegovo težo. To je najbolj gladek in pravičen algoritem, ko je čas obdelave strežnikov enakomerno porazdeljen. Ta algoritem je dinamičen in omogoča sprotno prilagajanje teže strežnika.
- Leastconn: izbran je strežnik z najmanj povezavami. Round robin se izvaja med strežniki z enako obremenitvijo. Uporaba tega algoritma je priporočljiva za dolge seje, kot so LDAP, SQL, TSE itd., vendar ni zelo primeren za kratke seje, kot je HTTP.
- Prvič: Prvi strežnik z razpoložljivimi povezovalnimi režami prejme povezavo. Strežniki so izbrani od najnižjega številskega ID-ja do najvišjega, ki privzeto ustreza položaju strežnika v farmi. Ko strežnik doseže maxconn, se uporabi naslednji strežnik.
- vir: Izvorni naslov IP je zgoščen in deljen s skupno težo delujočih strežnikov, da se določi, kateri strežnik bo prejel zahtevo. Na ta način bo isti naslov IP odjemalca vedno šel na isti strežnik, medtem ko strežniki ostanejo isti.
Nastavitev uravnoteženja obremenitve na ravni aplikacije (plast 7)
Druga razpoložljiva možnost je konfiguracija izravnalnika obremenitve za izvajanje na aplikacijski ravni (plast 7), kar je uporabno, če se deli vaše spletne aplikacije nahajajo na različnih gostiteljih. To je mogoče doseči z zaviranjem prenosa povezave, na primer prek URL-ja.
Odprite konfiguracijsko datoteko HAProxy z urejevalnikom besedil:
sudo vi /etc/haproxy/haproxy.cfg
Nato konfigurirajte sprednji in zaledni segment v skladu s spodnjim 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 check
Sprednji del deklarira pravilo ACL, imenovano url_blog, ki velja za vse povezave s potmi, ki se začnejo z /blog. Use_backend določa, da mora povezave, ki se ujemajo s pogojem url_blog, streči zaledje z imenom blog_back, vse druge zahteve pa obravnava privzeto zaledje.
Na zadnji strani konfiguracija nastavi dve skupini strežnikov: http_back, kot prej, in novo, imenovano blog_back, ki obravnava povezave do example.com/blog.
Ko spremenite nastavitve, shranite datoteko in znova zaženite HAProxy z naslednjim ukazom:
sudo systemctl restart haproxy
Če med zagonom prejmete kakršna koli opozorila ali sporočila o napakah, jih preverite v konfiguraciji in se prepričajte, da ste ustvarili vse potrebne datoteke in mape, nato poskusite znova zagnati.
Preizkušanje nastavitve
Ko je HAProxy konfiguriran in zagnan, v brskalniku odprite javni naslov IP strežnika za izravnavo obremenitve in preverite, ali ste pravilno povezani z zaledjem. Parameter stats uri v konfiguraciji ustvari stran s statistiko na podanem naslovu.
http://load_balancer_public_ip/haproxy?stats
Ko naložite stran s statistiko, če so vsi vaši strežniki zeleni, je bila nastavitev uspešna!
Stran s statističnimi podatki vsebuje nekaj uporabnih informacij za sledenje vašim spletnim gostiteljem, vključno s časom delovanja/nedelovanja in številom sej. Če je strežnik označen rdeče, se prepričajte, da je strežnik vklopljen in da ga lahko pingate iz naprave za izravnavo obremenitve.
Če se vaš izravnalnik obremenitve ne odziva, se prepričajte, da povezave HTTP ne blokira požarni zid. Prepričajte se tudi, da HAProxy deluje s spodnjim ukazom:
sudo systemctl status haproxy
Zaščita strani s statistiko z geslom
Če pa je stran s statističnimi podatki preprosto navedena na sprednji strani, je odprta vsem, kar pa morda ni dobra ideja. Namesto tega mu lahko dodelite številko vrat po meri, tako da na konec datoteke haproxy.cfg dodate spodnji primer. Zamenjati uporabniško ime и geslo za nekaj varnega:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:password
Ko dodate novo skupino poslušalcev, odstranite staro povezavo stats uri iz čelne skupine. Ko končate, shranite datoteko in znova zaženite HAProxy.
sudo systemctl restart haproxy
Nato znova odprite izravnalnik obremenitve z novo številko vrat in se prijavite z uporabniškim imenom in geslom, ki ste ju podali v konfiguracijski datoteki.
http://load_balancer_public_ip:8181
Prepričajte se, da so vsi vaši strežniki še vedno zeleni, nato pa v brskalniku odprite samo IP izravnalnika obremenitve brez številk vrat.
http://load_balancer_public_ip/
Če imate na svojih zalednih strežnikih vsaj nekaj različnih ciljnih strani, boste opazili, da vsakič, ko znova naložite stran, prejmete odgovor drugega gostitelja. Lahko preizkusite različne algoritme za uravnoteženje v razdelku za konfiguracijo ali preverite
Zaključek: HAProxy Load Balancer
Čestitamo za uspešno nastavitev vašega izravnalnika obremenitve HAProxy! Tudi z osnovno nastavitvijo uravnoteženja obremenitve lahko bistveno izboljšate zmogljivost in razpoložljivost vaše spletne aplikacije. Ta priročnik je samo uvod v uravnoteženje obremenitve s HAProxy, ki zmore veliko več od tistega, kar je mogoče zajeti v vodniku za hitro namestitev. Priporočamo, da eksperimentirate z različnimi konfiguracijami
Z uporabo več gostiteljev za zaščito vaše spletne storitve z višino prostora lahko ravnotežje obremenitve še vedno predstavlja točko napake. Visoko razpoložljivost lahko dodatno izboljšate z namestitvijo plavajočega IP-ja med več izravnalniki obremenitve. Več o tem lahko izveste v našem
Več o tečaju
Vir: www.habr.com