Raksta tulkojums tika sagatavots kursu sÄkuma priekÅ”vakarÄ
Slodzes lÄ«dzsvaroÅ”ana ir izplatÄ«ts risinÄjums, lai horizontÄli mÄrogotu tÄ«mekļa lietojumprogrammas vairÄkos saimniekdatoros, vienlaikus nodroÅ”inot lietotÄjiem vienu piekļuves punktu pakalpojumam.
HAProxy cenÅ”as optimizÄt resursu izmantoÅ”anu, palielinÄt caurlaidspÄju, samazinÄt reakcijas laiku un izvairÄ«ties no jebkura atseviŔķa resursa pÄrslodzes. To var instalÄt dažÄdos Linux izplatÄ«jumos, piemÄram, CentOS 8, kam mÄs pievÄrsÄ«simies Å”ajÄ rokasgrÄmatÄ, kÄ arÄ« sistÄmÄs
HAProxy ir Ä«paÅ”i piemÄrots vietnÄm ar ļoti lielu trafiku, un tÄpÄc to bieži izmanto, lai uzlabotu vairÄku serveru tÄ«mekļa pakalpojumu konfigurÄciju uzticamÄ«bu un veiktspÄju. Å ajÄ rokasgrÄmatÄ ir aprakstÄ«tas darbÄ«bas, kas jÄveic, lai HAProxy iestatÄ«tu kÄ slodzes balansÄtÄju CentOS 8 mÄkoÅa resursdatorÄ, kas pÄc tam marÅ”rutÄ trafiku uz jÅ«su tÄ«mekļa serveriem.
Lai iegÅ«tu labÄkos rezultÄtus, jums ir jÄbÅ«t vismaz diviem tÄ«mekļa serveriem un slodzes lÄ«dzsvaroÅ”anas serverim. Lai pÄrbaudÄ«tu slodzes lÄ«dzsvaroÅ”anu starp tÄ«mekļa serveriem, tiem ir jÄdarbojas vismaz pamata tÄ«mekļa pakalpojumam, piemÄram, nginx vai httpd.
HAProxy instalÄÅ”ana operÄtÄjsistÄmÄ CentOS 8
TÄ kÄ HAProxy ir atvÄrtÄ pirmkoda lietojumprogramma, kas strauji attÄ«stÄs, standarta CentOS krÄtuvÄs pieejamais izplatÄ«Å”ana var nebÅ«t jaunÄkÄ versija. Lai uzzinÄtu paÅ”reizÄjo versiju, palaidiet Å”Ädu komandu:
sudo yum info haproxy
HAProxy vienmÄr piedÄvÄ trÄ«s stabilas versijas, no kurÄm izvÄlÄties: divas jaunÄkÄs atbalstÄ«tÄs versijas un treÅ”o, vecÄku versiju, kas joprojÄm saÅem svarÄ«gus atjauninÄjumus. JÅ«s vienmÄr varat pÄrbaudÄ«t jaunÄko stabilo versiju, kas norÄdÄ«ta HAProxy vietnÄ, un pÄc tam izlemt, ar kuru versiju vÄlaties strÄdÄt.
Å ajÄ rokasgrÄmatÄ mÄs instalÄsim jaunÄko stabilo versiju 2.0, kas rokasgrÄmatas rakstÄ«Å”anas laikÄ vÄl nebija pieejama standarta krÄtuvÄs. Jums tas bÅ«s jÄinstalÄ no sÄkotnÄjÄ avota. Bet vispirms pÄrbaudiet, vai esat izpildÄ«jis nepiecieÅ”amos nosacÄ«jumus, lai lejupielÄdÄtu un apkopotu programmu.
sudo yum install gcc pcre-devel tar make -y
LejupielÄdÄjiet avota kodu, izmantojot tÄlÄk norÄdÄ«to komandu. Varat pÄrbaudÄ«t, vai vietnÄ ir pieejama jaunÄka versija
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz
Kad lejupielÄde ir pabeigta, izvelciet failus, izmantojot tÄlÄk norÄdÄ«to komandu:
tar xzvf ~/haproxy.tar.gz -C ~/
Dodieties uz izsaiÅoto avota direktoriju:
cd ~/haproxy-2.0.7
PÄc tam kompilÄjiet programmu savai sistÄmai:
make TARGET=linux-glibc
Visbeidzot, instalÄjiet paÅ”u HAProxy:
sudo make install
HAProxy tagad ir instalÄts, taÄu, lai tas darbotos, ir jÄveic dažas papildu manipulÄcijas. TurpinÄsim tÄlÄk norÄdÄ«tÄs programmatÅ«ras un pakalpojumu iestatÄ«Å”anu.
HAProxy iestatīŔana jūsu serverim
Tagad pievienojiet Å”Ädus direktorijus un statistikas failu HAProxy ierakstiem:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/stats
Izveidojiet simbolisku saiti binÄrajiem failiem, lai jÅ«s varÄtu palaist HAProxy komandas kÄ parasts lietotÄjs:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
Ja vÄlaties savai sistÄmai pievienot starpniekserveri kÄ pakalpojumu, kopÄjiet failu haproxy.init no piemÄriem savÄ /etc/init.d direktorijÄ. RediÄ£Äjiet faila atļaujas, lai skripts darbotos, un pÄc tam restartÄjiet sistÄmas dÄmonu:
sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload
Jums arÄ« jÄļauj pakalpojumam automÄtiski restartÄties, kad sistÄma tiek startÄta:
sudo chkconfig haproxy on
ÄrtÄ«bas labad ieteicams arÄ« pievienot jaunu lietotÄju, lai palaistu HAProxy:
sudo useradd -r haproxy
PÄc tam varat vÄlreiz pÄrbaudÄ«t instalÄtÄs versijas numuru, izmantojot Å”o komandu:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/
MÅ«su gadÄ«jumÄ versijai jÄbÅ«t 2.0.7, kÄ parÄdÄ«ts iepriekÅ” redzamajÄ izvades piemÄrÄ.
Visbeidzot, CentOS 8 noklusÄjuma ugunsmÅ«ris ir diezgan ierobežojoÅ”s Å”im projektam. Izmantojiet Ŕīs komandas, lai atļautu nepiecieÅ”amos pakalpojumus un atiestatÄ«tu ugunsmÅ«ri:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload
Slodzes līdzsvara iestatīŔana
HAProxy iestatÄ«Å”ana ir diezgan vienkÄrÅ”s process. BÅ«tÄ«bÄ viss, kas jums jÄdara, ir jÄpaziÅo HAProxy, kÄdi savienojumi tam jÄklausÄs un kur tie jÄpÄrsÅ«ta.
Tas tiek darÄ«ts, izveidojot konfigurÄcijas failu /etc/haproxy/haproxy.cfg ar definÄtiem iestatÄ«jumiem. Varat lasÄ«t par HAProxy konfigurÄcijas opcijÄm
Slodzes lÄ«dzsvaroÅ”ana transporta slÄnÄ« (4. slÄnis)
SÄksim ar pamata iestatÄ«Å”anu. Izveidojiet jaunu konfigurÄcijas failu, piemÄram, izmantojot vi ar komandu zemÄk:
sudo vi /etc/haproxy/haproxy.cfg
Pievienojiet failam Å”Ädas sadaļas. Aizvietot servera_vÄrds kÄ statistikas lapÄ jÄsauc jÅ«su serveri, un private_ip ā to serveru privÄtÄs IP adreses, uz kuriem vÄlaties novirzÄ«t tÄ«mekļa trafiku. Varat pÄrbaudÄ«t privÄtÄs IP adreses
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
Tas definÄ transporta slÄÅa slodzes lÄ«dzsvarotÄju (4. slÄnis), kas ÄrÄji nosaukts http_front klausÄ«Å”anÄs portÄ 80, kas pÄc tam pÄrsÅ«ta trafiku uz noklusÄjuma aizmugursistÄmu ar nosaukumu http_back. Papildu statistika /haproxy?stats savieno statistikas lapu ar norÄdÄ«to adresi.
DažÄdi slodzes balansÄÅ”anas algoritmi.
Serveru norÄdÄ«Å”ana aizmugursistÄmas sadaÄ¼Ä Ä¼auj HAProxy izmantot Å”os serverus slodzes lÄ«dzsvaroÅ”anai saskaÅÄ ar apļveida algoritmu, ja iespÄjams.
LÄ«dzsvaroÅ”anas algoritmi tiek izmantoti, lai noteiktu, kuram aizmugursistÄmas serverim tiek nodots katrs savienojums. Å eit ir dažas noderÄ«gas iespÄjas:
- Rounddrobin: Katrs serveris tiek izmantots pÄc kÄrtas atbilstoÅ”i tÄ svaram. Å is ir vienmÄrÄ«gÄkais un godÄ«gÄkais algoritms, kad serveru apstrÄdes laiks paliek vienmÄrÄ«gi sadalÄ«ts. Å is algoritms ir dinamisks, ļaujot pielÄgot servera svaru lidojuma laikÄ.
- Leastconn: tiek atlasÄ«ts serveris ar vismazÄko savienojumu. Round robin tiek veikts starp serveriem ar vienÄdu slodzi. Å Ä« algoritma izmantoÅ”ana ir ieteicama ilgÄm sesijÄm, piemÄram, LDAP, SQL, TSE utt., taÄu tas nav Ä«paÅ”i piemÄrots Ä«sÄm sesijÄm, piemÄram, HTTP.
- Vispirms: Pirmais serveris ar pieejamÄm savienojuma slotiem saÅem savienojumu. Serveri tiek atlasÄ«ti no zemÄkÄ ciparu ID lÄ«dz lielÄkajam, kas pÄc noklusÄjuma ir servera pozÄ«cija fermÄ. Kad serveris sasniedz maxconn, tiek izmantots nÄkamais serveris.
- Avots: Lai noteiktu, kurÅ” serveris saÅems pieprasÄ«jumu, avota IP adrese tiek sajaukta un dalÄ«ta ar kopÄjo esoÅ”o serveru svaru. TÄdÄ veidÄ viena un tÄ pati klienta IP adrese vienmÄr tiks nosÅ«tÄ«ta uz vienu un to paÅ”u serveri, bet serveri paliek nemainÄ«gi.
Slodzes lÄ«dzsvaroÅ”anas iestatÄ«Å”ana lietojumprogrammas lÄ«menÄ« (7. slÄnis)
VÄl viena pieejama iespÄja ir konfigurÄt slodzes lÄ«dzsvarotÄju, lai tas darbotos lietojumprogrammas slÄnÄ« (7. slÄnis), kas ir noderÄ«gi, ja tÄ«mekļa lietojumprogrammas daļas atrodas dažÄdos saimniekdatoros. To var panÄkt, ierobežojot savienojuma pÄrraidi, piemÄram, izmantojot URL.
Atveriet HAProxy konfigurÄcijas failu, izmantojot teksta redaktoru:
sudo vi /etc/haproxy/haproxy.cfg
PÄc tam konfigurÄjiet priekÅ”gala un aizmugursistÄmas segmentus, kÄ norÄdÄ«ts tÄlÄk sniegtajÄ piemÄrÄ:
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
PriekÅ”gals deklarÄ ACL kÄrtulu ar nosaukumu url_blog, kas attiecas uz visiem savienojumiem, kuru ceļi sÄkas ar /blog. Use_backend norÄda, ka savienojumi, kas atbilst nosacÄ«jumam url_blog, ir jÄapkalpo aizmugursistÄmai ar nosaukumu blog_back, un visus citus pieprasÄ«jumus apstrÄdÄ noklusÄjuma aizmugursistÄma.
AizmugursistÄmas pusÄ konfigurÄcija iestata divas serveru grupas: http_back, tÄpat kÄ iepriekÅ”, un jaunu ar nosaukumu blog_back, kas apstrÄdÄ savienojumus ar example.com/blog.
PÄc iestatÄ«jumu maiÅas saglabÄjiet failu un restartÄjiet HAProxy, izmantojot Å”o komandu:
sudo systemctl restart haproxy
Ja startÄÅ”anas laikÄ saÅemat brÄ«dinÄjumus vai kļūdu ziÅojumus, pÄrbaudiet to konfigurÄciju un pÄrliecinieties, vai esat izveidojis visus nepiecieÅ”amos failus un mapes, un pÄc tam mÄÄ£iniet restartÄt vÄlreiz.
IestatÄ«juma pÄrbaude
Kad HAProxy ir konfigurÄts un darbojas, pÄrlÅ«kprogrammÄ atveriet slodzes lÄ«dzsvara servera publisko IP adresi un pÄrbaudiet, vai ir izveidots pareizi savienojums ar aizmugursistÄmu. KonfigurÄcijas parametrs stats uri izveido statistikas lapu norÄdÄ«tajÄ adresÄ.
http://load_balancer_public_ip/haproxy?stats
Kad ielÄdÄjat statistikas lapu, ja visi serveri ir zaÄ¼Ä krÄsÄ, iestatÄ«Å”ana bija veiksmÄ«ga!
Statistikas lapÄ ir ietverta noderÄ«ga informÄcija, lai izsekotu jÅ«su tÄ«mekļa mitinÄtÄjiem, tostarp augÅ”upejas/dÄ«kstÄves laiks un sesiju skaits. Ja serveris ir atzÄ«mÄts sarkanÄ krÄsÄ, pÄrliecinieties, vai serveris ir ieslÄgts un vai varat to nosÅ«tÄ«t no slodzes lÄ«dzsvarotÄja.
Ja slodzes lÄ«dzsvarotÄjs nereaÄ£Ä, pÄrliecinieties, vai HTTP savienojumus nebloÄ·Ä ugunsmÅ«ris. PÄrliecinieties arÄ«, vai HAProxy darbojas, izmantojot tÄlÄk norÄdÄ«to komandu:
sudo systemctl status haproxy
Statistikas lapas aizsardzība ar paroli
TomÄr, ja statistikas lapa ir vienkÄrÅ”i norÄdÄ«ta priekÅ”pusÄ, tÄ ir atvÄrta ikvienam, kas var nebÅ«t laba ideja. TÄ vietÄ varat pieŔķirt tam pielÄgotu porta numuru, pievienojot tÄlÄk redzamo piemÄru sava haproxy.cfg faila beigÄm. Aizvietot lietotÄjvÄrds Šø parole par kaut ko droÅ”u:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:password
PÄc jaunas klausÄ«tÄju grupas pievienoÅ”anas noÅemiet veco statistikas uri saiti no priekÅ”gala grupas. Kad esat pabeidzis, saglabÄjiet failu un restartÄjiet HAProxy.
sudo systemctl restart haproxy
PÄc tam vÄlreiz atveriet slodzes balansÄtÄju ar jauno porta numuru un piesakieties ar lietotÄjvÄrdu un paroli, ko norÄdÄ«jÄt konfigurÄcijas failÄ.
http://load_balancer_public_ip:8181
PÄrliecinieties, vai visi jÅ«su serveri joprojÄm ir zaÄ¼Ä krÄsÄ, un pÄc tam atveriet tikai slodzes lÄ«dzsvarotÄja IP bez portu numuriem savÄ pÄrlÅ«kprogrammÄ.
http://load_balancer_public_ip/
Ja jÅ«su aizmugures serveros ir vismaz dažas galvenÄs lapas, pamanÄ«sit, ka katru reizi, atkÄrtoti ielÄdÄjot lapu, saÅemat atbildi no cita resursdatora. Varat izmÄÄ£inÄt dažÄdus balansÄÅ”anas algoritmus konfigurÄcijas sadaÄ¼Ä vai pÄrbaudÄ«t
SecinÄjums: HAProxy Load Balancer
Apsveicam ar veiksmÄ«gu HAProxy slodzes lÄ«dzsvara iestatÄ«Å”anu! Pat izmantojot pamata slodzes lÄ«dzsvaroÅ”anas iestatÄ«jumus, varat ievÄrojami uzlabot savas tÄ«mekļa lietojumprogrammas veiktspÄju un pieejamÄ«bu. Å Ä« rokasgrÄmata ir tikai ievads slodzes lÄ«dzsvaroÅ”anai ar HAProxy, kas spÄj daudz vairÄk nekÄ tas, ko var apskatÄ«t ÄtrÄs iestatÄ«Å”anas rokasgrÄmatÄ. MÄs iesakÄm eksperimentÄt ar dažÄdÄm konfigurÄcijÄm, izmantojot
Izmantojot vairÄkus saimniekdatorus, lai aizsargÄtu jÅ«su tÄ«mekļa pakalpojumu ar brÄ«vÄ«bu, pats slodzes lÄ«dzsvarotÄjs joprojÄm var radÄ«t kļūmes punktu. JÅ«s varat vÄl vairÄk uzlabot augstu pieejamÄ«bu, instalÄjot peldoÅ”u IP starp vairÄkiem slodzes balansÄtÄjiem. VairÄk par to varat uzzinÄt mÅ«su
VairÄk par kursu
Avots: www.habr.com