Përkthimi i artikullit është përgatitur në prag të fillimit të kursit

Balancimi i ngarkesës është një zgjidhje e zakonshme për shkallëzimin horizontal të aplikacioneve web në disa hoste, duke ofruar për përdoruesit një pikë të vetme aksesi në shërbim. është një nga programet më të njohura për balancimin e ngarkesës me kod burimor të hapur, e cila gjithashtu siguron disponueshmëri të lartë dhe funksionalitet të proksimit.
HAProxy përpiqet të optimizojë përdorimin e burimeve, të maksimizojë kapacitetin e kalimit, të minimizojë kohën e përgjigjes dhe të shmangë mbingarkesën e secilit burim të veçantë. Ajo mund të instalohet në shumë distribucione Linux, si CentOS 8, mbi të cilin do të fokusohemi në këtë udhëzues, si dhe në sistemet dhe .

HAProxy Ă«shtĂ« veçanĂ«risht i pĂ«rshtatshĂ«m pĂ«r faqet e internetit me trafik shumĂ« tĂ« lartĂ« dhe shpesh pĂ«rdoret pĂ«r tĂ« rritur qĂ«ndrueshmĂ«rinĂ« dhe performancĂ«n e konfigurimeve tĂ« shĂ«rbimeve tĂ« internetit me ŃĐ”ŃĐČĐ”ŃĂ« tĂ« shumtĂ«. NĂ« kĂ«tĂ« guidĂ« jepen hapat pĂ«r tĂ« konfiguruar HAProxy si njĂ« balancues ngarkese nĂ« njĂ« host cloud CentOS 8, i cili mĂ« pas drejton trafikun nĂ« serverĂ«t tuaj tĂ« internetit.
Si një kush thelbësor për arritjen e rezultateve optimale, ju duhet të keni të paktën dy serverë të internetit dhe një server për balancimin e ngarkesës. Shërbimi themelor i internetit, si nginx ose httpd, duhet të jetë i instaluar në serverët e internetit në mënyrë që të mund të verifikohet balancimi i ngarkesës mes tyre.
Instalimi i HAProxy në CentOS 8
Për shkak se HAProxy është një aplikacion me burim të hapur në zhvillim të shpejtë, distribuimi që keni në repo standarde të CentOS mund të mos jetë versioni më i fundit. Për të kontrolluar versionin aktual, ekzekutoni komandën e mëposhtme:
sudo yum info haproxyHAProxy ofron tre versione të qëndrueshme për zgjedhje: dy versionet më të fundit të mbështetura dhe një të tretë, më të vjetër, që akoma merr azhurnime kritike. Ju gjithmonë mund të kontrolloni versionin më të fundit të qëndrueshëm, të shënuar në faqen e HAProxy, dhe më pas të vendosni se me cilin version dëshironi të punoni.
Në këtë udhëzues do të instalojmë versionin më të fundit të qëndrueshëm 2.0, i cili ende nuk ishte i disponueshëm në depozitat standarde në momentin e hartimit të udhëzuesit. Ju do të duhet ta instaloni atë nga burimi. Por së pari, kontrolloni nëse keni përmbushur kushtet e nevojshme për të shkarkuar dhe kompjatuar programin.
sudo yum install gcc pcre-devel tar make -yShkarkoni kodin burimor me komandën më poshtë. Mund të kontrolloni nëse një version më i ri është i disponueshëm në .
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gzPasi të përfundojë shkarkimi, shkarkoni skedarët me komandën më poshtë:
tar xzvf ~/haproxy.tar.gz -C ~/Shkoni në katalogun e shkarkuar me kodin burimor:
cd ~/haproxy-2.0.7Pastaj kompilo programin për sistemin tuaj:
make TARGET=linux-glibcDhe, në fund, instaloni vetë HAProxy:
sudo make installTani HAProxy është instaluar, por për funksionimin e saj kërkohen disa manovra të tjera. Të vazhdojmë me konfigurimin e softuerit dhe shërbimeve më poshtë.
Konfigurimi i HAProxy për serverin tuaj
Tani shtoni katalogët e mëposhtëm dhe skedarin e statistikave për regjistrimet e HAProxy:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/statsKrijoni një lidhje simbolike për skedarët binarë, në mënyrë që të mund të ekzekutoni komandat HAProxy si përdorues i zakonshëm:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxyNëse dëshironi të shtoni proxy server në sistem si shërbim, kopjoni skedarin haproxy.init nga shembujt në katalogun tuaj /etc/init.d. Rregulloni të drejtat e skedarit për të siguruar që skripti ekzekutohet, pastaj ngarkoni përsëri demonin systemd:
sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reloadJu gjithashtu duhet të lejoni shërbimin të ngarkohet automatikisht gjatë nisjes së sistemit:
sudo chkconfig haproxy onPër lehtësinë e përdoruesit, gjithashtu rekomandohet të shtoni një përdorues të ri për të ekzekutuar HAProxy:
sudo useradd -r haproxyPas kësaj, mund të kontrolloni edhe një herë numrin e versionit të instaluar me komandën e mëposhtme:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/Në rastin tonë, versioni duhet të jetë 2.0.7, siç tregohet në shembullin e daljes më sipër.
Më në fund, firewalli në CentOS 8 për default është mjaft restriktiv për këtë projekt. Përdorni komandat e mëposhtme për të lejuar shërbimet e nevojshme dhe për të riaktivizuar firewall-in:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reloadKonfigurimi i balancuesit të ngarkesës
Konfigurimi i HAProxy është një proces mjaft i thjeshtë. Në thelb, gjithçka që duhet të bëni është të informoni HAProxy për cilat lidhje duhet të dëgjojë dhe ku duhet t'i ridrejtojë ato.
Kjo bëhet duke krijuar një skedar konfigurimi /etc/haproxy/haproxy.cfg me parametrat përcaktues. Mund të lexoni për opsionet e konfigurimit të HAProxy , nëse dëshironi të mësoni më shumë rreth kësaj.
Balancimi i ngarkesës në nivel transporti (layer 4)
Le të fillojmë me konfigurimin bazik. Krijoni një skedar të ri konfigurimi, për shembull, duke përdorur vi me komandën më poshtë:
sudo vi /etc/haproxy/haproxy.cfgShtoni nĂ« skedar segmentet e mĂ«poshtme. ZĂ«vendĂ«soni server_name me atĂ« qĂ« duhet tĂ« thirren serverat tuaj nĂ« faqen e statistikave, ndĂ«rsa private_ip â adresa IP private tĂ« serverĂ«ve nĂ« tĂ« cilat dĂ«shironi tĂ« drejtoni trafikun web. Mund tĂ« kontrolloni adresat IP private dhe nĂ« skedĂ«n Rrjeti privat nĂ« menynĂ« Rrjeti regjistro log /dev/log local0 regjistro log /dev/log local1 notice chroot /var/lib/haproxy stats timeout 30s pĂ«rdorues haproxy grup haproxy daemondefaults log global mode http opsion httplog opsion dontlognull timeout connect 5000 timeout client 50000 timeout server 50000frontend http_front bind *:80 stats uri /haproxy?stats default_backend http_backbackend http_back balance roundrobin server server_name1 private_ip1:80 check server server_name2 private_ip2:80 check.
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 checkKjo përcakton një balancues ngarkese të nivelit transportues (layer 4) me emrin e jashtëm http_front, i cili dëgjon në portin 80 dhe më pas drejton trafikun në backend-in e paracaktuar me emrin http_back. Të gjitha statistikët /haproxy?stats lidhin faqen e statistikave në adresën e caktuar.
Algoritmet e ndryshme të balancimit të ngarkesës.
Specifikimi i serverëve në seksionin e backend-it u lejon HAProxy të përdorë këto serverë për balancimin e ngarkesës sipas algoritmit të rrethqarkullimit kur është e mundur.
Algoritmet e balancimit përdoren për të përcaktuar se në cilin server në prapavijë do të dërgohet çdo lidhje. Këtu janë disa nga opsionet e dobishme:
- Roundrobin: çdo server përdoret me radhë sipas peshës së tij. Ky është algoritmi më i qetë dhe më korrekt, kur koha e përpunimit nga serverët mbetet e shpërndarë njësoj. Ky algoritëm është dinamik, duke lejuar rregullimin e peshës së serverit në lëvizje.
- Leastconn: zgjidhet serveri me numrin më të vogël të lidhjeve. Kalimi bëhet në mënyrë ciklike midis serverëve me ngarkesë të njëjtë. Përdorimi i këtij algoritmi rekomandohet për seancat e gjata, si LDAP, SQL, TSE etj., por nuk është i përshtatshëm për seancat e shkurtra, si HTTP.
- First: serveri i parë me kode të disponueshme për lidhje merr lidhjen. Serverët zgjidhen nga identifikuesi më i ulët numerik deri te më i larti, që për verifikim përkon me pozicionin e serverit në fermë. Sapo serveri të arrijë vlerën maxconn, përdoret serveri tjetër.
- Burimi: Adresa IP e buruar dhe ndahet në peshën totale të serverëve të aktivizuar për të përcaktuar se cili server do të pranojë kërkesën. Në këtë mënyrë, e njëjta adresë IP e klientit do t'i alokohet gjithmonë të njëjtit server, ndërsa serverët mbeten të pandryshuar.
Konfigurimi i balancimit të ngarkesës në nivelin e aplikacioneve (layer 7)
Një mundësi tjetër e disponueshme është të konfiguroni balancuesin e ngarkesës për të punuar në nivelin e aplikacioneve (layer 7), që është e dobishme kur pjesë të aplikacionit tuaj web ndodhen në hoste të ndryshëm. Kjo mund të arrihet duke rregulluar transferimin e lidhjes, për shembull, sipas URL-së.
Hapni skedarin e konfigurimit HAProxy me një editor teksti:
sudo vi /etc/haproxy/haproxy.cfgPastaj konfiguroni segmentet frontend dhe backend sipas shembullit më poshtë:
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 deklaron një rregull ACL me emrin url_blog, i cili aplikohet për të gjitha lidhjet me rrugë që fillojnë me /blog. Use_backend përcakton që lidhjet që i përgjigjen kushteve të url_blog, duhet të shërbehen nga backend-i me emrin blog_back, ndërsa kërkesat e tjera përpunohen nga backend-i në default.
Nga ana e backend-it, konfigurimi vendos dy grupe serverash: http_back, si më parë, dhe një të re, e quajtur blog_back, e cila shërben lidhjet me example.com/blog.
Pas ndryshimit të konfigurimeve, ruani skedarin dhe rindizni HAProxy me komandën e mëposhtme:
sudo systemctl restart haproxyNëse gjatë nisjes merrni ndonjë paralajmërim apo mesazhe gabimi, kontrolloni konfigurimin për të verifikuar dhe sigurohuni që keni krijuar të gjithë skedarët dhe dosjet e nevojshme, më pas provoni përsëri të rindizni.
Testimi i konfigurimit
Kur HAProxy është konfiguruar dhe i nisur, hapni adresën IP publike të serverit të balancimit të ngarkesës në shfletues dhe kontrolloni nëse jeni lidhur siç duhet me backend-in. Parametri stats uri në konfigurim krijon një faqe statistikash në adresën e caktuar.
http://load_balancer_public_ip/haproxy?statsKur shkarkoni faqen e statistikave, nëse të gjitha serverat tuaj shfaqen me ngjyrë të gjelbër, konfigurimi ka shkuar me sukses!

Faqja e statistikave përmban informacion të dobishëm për të ndjekur hostet tuaj të internetit, duke përfshirë kohën e funksionimit/pushimit dhe numrin e sesioneve. Nëse serveri shënohet me të kuqe, sigurohuni që serveri është i aktivizuar dhe se mund ta pingoni nga makina e balancimit të ngarkesës.
Nëse balancuesi juaj i ngarkesës nuk përgjigjet, sigurohuni që lidhjet HTTP nuk bllokohen nga firewall-i. Kontrolloni gjithashtu që HAProxy të jetë duke funksionuar me komandën më poshtë:
sudo systemctl status haproxyMbrojtja e faqes së statistikave me fjalëkalim
Megjithatë, nëse faqja e statistikave thjesht është e vendosur në frontend, ajo është e hapur për t'u parë nga të gjithë, që mund të jetë një ide jo shumë e mirë. Në vend të kësaj, mund t'i caktoni një numër porti të veçantë, duke shtuar shembullin e mëposhtëm në fund të skedarit tuaj haproxy.cfg. Zëvendësoni username dhe password me diçka të sigurt:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:passwordPas pas për shtimin e një grupi të ri dëgjuesish, hiqni lidhjen e vjetër për stats uri nga grupi frontend. Pasi të përfundoni, ruani skedarin dhe rinisni HAProxy.
sudo systemctl restart haproxyMë pas, hapni përsëri balancuesin e ngarkesës me numrin e ri të portit dhe hyni me emrin e përdoruesit dhe fjalëkalimin që keni caktuar në skedarin e konfigurimit.
http://load_balancer_public_ip:8181Sigurohuni që të gjitha serverët tuaj të shfaqen ende me ngjyrë të gjelbër, pastaj hapni vetëm IP-në e balancuesit të ngarkesës pa ndonjë numër porti në shfletuesin tuaj.
http://load_balancer_public_ip/Nëse ka një larmi të ndonjë lloj faqeje të synuar në serverët tuaj të brendshëm, do të vëreni se çdo herë që rifreskoni faqen, merrni një përgjigje nga një host tjetër. Mund të provoni algoritme të ndryshme balancimi në seksionin e konfigurimit ose të kontrolloni .
Përfundim: balancuesi i ngarkesës HAProxy
Uroj me të suksesshëm me konfigurimin e balancuesit të ngarkesës HAProxy! Edhe me një konfigurim themelor, mund të rrisni ndjeshëm performancën dhe disponueshmërinë e aplikacionit tuaj në ueb. Ky udhëzues është vetëm një hyrje në balancimin e ngarkesës me HAProxy, i cili ka kapacitete shumë më të mëdha se ato që mund të përshkruhen në një udhëzim të shkurtër konfigurimi. Ju inkurajojmë të eksperimentoni me konfigurime të ndryshme përmes , që është në dispozicion për HAProxy, dhe pastaj të filloni planifikimin e balancimit të ngarkesës për ambientin tuaj të prodhimit.
Duke përdorur disa hosts për të mbrojtur shërbimin tuaj në ueb me mbështetje shtesë, balancuesi i ngarkesës mund të përfaqësojë ende një pikë dështimi. Ju mund të rrisni akoma më shumë disponueshmërinë e lartë duke vendosur një IP lundruese midis disa balancuesve të ngarkesës. Më shumë informacione mund të gjeni në .
Më shumë rreth kursit ***
Burimi: habr.com
