Përkthimi i artikullit është përgatitur para 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ërdoruesve një pikë të vetme qasje në shërbim. është një nga programet më të njohura për balancimin e ngarkesës me burim të hapur, e cila gjithashtu siguron disponibilitet të lartë dhe funksionalitet të proxy.
HAProxy synon të optimizojë përdorimin e burimeve, maksimizojë kapacitetin e kalimit, minimizojë kohën e përgjigjes dhe të shmangë mbingarkesën e çdo burimi të vetëm. Ajo mund të instalohet në shumë distribucione të Linux-it, si CentOS 8, mbi të cilin do të ndalojmë në këtë udhëzues, si dhe në sistemet dhe .

HAProxy është veçanërisht e përshtatshme për website-t me trafik shumë të lartë dhe prandaj përdoret shpesh për të përmirësuar besueshmërinë dhe performancën e konfigurimeve të shërbimeve web me disa serverë. Në këtë udhëzues përshkruhen hapat për të konfiguruar HAProxy si një balancues ngarkese në një host cloud CentOS 8, i cili më pas drejton trafik në serverat tuaj web.
Si një kusht thelbësor për të arritur rezultatet më të mira, ju duhet të keni të paktën dy serverë web dhe një server për balancimin e ngarkesës. Në serverët web duhet të jetë e instaluar së paku një shërbim web themelor, si nginx ose httpd, për të verifikuar balancimin e ngarkesës midis tyre.
Instalimi i HAProxy në CentOS 8
Për shkak se HAProxy është një aplikacion me burim të hapur që po zhvillohet shpejt, distribuimi i disponueshëm në depozitat standarde të CentOS-it mund të mos jetë versioni më i fundit. Për të verifikuar versionin aktual, ekzekutoni komandën e mëposhtme:
sudo yum info haproxyHAProxy gjithmonë ofron përzgjedhjen e tre versioneve stabile: dy versionet më të fundit të mbështetura dhe një të tretë, më të vjetër, e cila ende merr përditësime kritike. Ju gjithmonë mund të kontrolloni versionin më të fundit stabil të treguar në faqen e HAProxy dhe pastaj të vendosni se me cilin version dëshiron të punoni.
Në këtë udhëzues do të instalojmë versionin më të fundit stabil 2.0, i cili ende nuk ishte i disponueshëm në depo standarde në momentin e shkrimit të udhëzuesit. Ju nevojitet ta instaloni atë nga burimi origjinal. Por fillimisht kontrolloni nëse keni përmbushur kushtet e nevojshme për të shkarkuar dhe kompaktuar programin.
sudo yum install gcc pcre-devel tar make -yShkarkoni kodin burimor duke përdorur komandën më poshtë. Mund të kontrolloni nëse ekziston një version më i ri në dispozicion në .
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gzPas përfundimit të shkarkimit, shfrytezoni skedarët me komandën e dhënë më poshtë:
tar xzvf ~/haproxy.tar.gz -C ~/Shkoni në direktorinë e shfrytezimit të kodit burimor:
cd ~/haproxy-2.0.7Pastaj, kompaktikoni programin për sistemin tuaj:
make TARGET=linux-glibcDhe, përfundimisht, instaloni vetë HAProxy:
sudo make installTani HAProxy është instaluar, por për funksionimin e saj kërkohen disa manipulime shtesë. Le të vazhdojmë me konfigurimin e softuerit dhe shërbimeve më poshtë.
Konfigurimi i HAProxy për serverin tuaj
Tani shtoni këto direktori dhe skedë statistike për regjistrimet 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 serverin proxy në sistem si një shërbim, kopjoni skedën haproxy.init nga shembujt në katalogun tuaj /etc/init.d. Redaktoni lejet e skedës që skripti të ekzekutohet, pastaj rifilloni 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 që të rifillojë automatikisht kur të startohet sistemi:
sudo chkconfig haproxy onPër lehtësi, rekomandohet gjithashtu të shtoni një përdorues të ri për të ekzekutuar HAProxy:
sudo useradd -r haproxyPas kësaj, mund të kontrolloni përsëri numrin e versionit të instaluar duke përdorur 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ç shikohet në shembullin e daljes më sipër.
Në fund, firewalli në CentOS 8 ë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'u rifilluar firewalli:
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 se cilat lidhje duhet të dëgjojë dhe ku duhet t'i transmetojë ato.
Kjo bëhet duke krijuar një skedar konfigurimi /etc/haproxy/haproxy.cfg me cilësimet përkatëse. Mund të lexoni rreth parametrave të konfigurimit të HAProxy , nëse dëshironi të mësoni më shumë rreth kësaj.
Balancimi i ngarkesës në nivelin e transportit (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 seksionet e mëposhtme. Zëvendësoni server_name me atë që duhet të thërrasë serverat tuaj në faqen e statistikave, dhe private_ip me adresat IP private të serverave, të cilat dëshironi të drejtoni trafikun web. Mund të kontrolloni adresat IP private dhe në skedën Private network në menunë Network global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats timeout 30s user haproxy group haproxy daemondefaults log global mode http option httplog option 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.
Kjo përcakton balancuesin e ngarkesës në nivelin e transportit (layer 4) me emrin e jashtëm http_front, duke dëgjuar në portin 80, i cili pastaj drejton trafikun në back-endin e paracaktuar me emrin http_back. Statistikat shtesë /haproxy?stats lidhin faqen e statistikave në adresën e dhënë.Algoritmet e ndryshme të balancimit të ngarkesës.
Përcaktimi i serverëve në seksionin e back-endit lejon HAProxy të përdorë këta serverë për balancimin e ngarkesës sipas algoritmit të rrotullimit kur është e mundur.
Algoritmet e balancimit përdoren për të përcaktuar se në cilin server në back-end dërgohet çdo lidhje. Ja disa nga opsionet e dobishme:
Roundrobin:
- çdo server përdoret njëherë pas tjetrës sipas peshës së tij. Ky është algoritmi më i qetë dhe më i drejtë, kur koha e përpunimit nga serverët mbetet e shpërndarë në mënyrë të barabartë. Ky algoritëm është dinamik, duke lejuar rregullimin e peshës së serverit në kohë reale. Leastconn:
- Më pak lidhje: Zgjidhet serveri me numrin më të vogël të lidhjeve. Kjo bëhet përmes një cikli mes 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ë shumë i përshtatshëm për seancat e shkurtra, si HTTP.
- Së pari: serveri i parë me vende të lira për lidhje merr lidhjen. Serverët zgjidhen nga identifikuesi më i ulët numerik deri te ai më i larti, që për default përkon me pozitat e serverëve në fermë. Pasi serveri arrin vlerën maxconn, përdoret serveri tjetër.
- Burimi: Adresa IP e burimit hash-izohet dhe ndahet me peshën e përgjithshme të serverëve të hapur, për të përcaktuar se cili server do të marrë kërkesën. Kështu, e njëjta adresë IP e klientit do t'i dërgohet gjithmonë të njëjtit server, ndërsa serverët mbeten të pandryshuar.
Konfigurimi i balancimit të ngarkesës në nivelin e aplikacionit (layer 7)
Një mundësi tjetër në dispozicion është të konfiguroni balancuesin e ngarkesës për të punuar në nivelin e aplikacionit (layer 7), e cila është e dobishme kur pjesë të aplikacionit tuaj web janë të vendosura në hoste të ndryshëm. Kjo mund të arrihet duke rregulluar kalimin e lidhjeve, për shembull, sipas URL-së.
Hapni skedarin e konfiguratës HAProxy me një editor teksti:
sudo vi /etc/haproxy/haproxy.cfgMë pas konfiguroni segmentet frontend dhe backend sipas shembujve të mëposhtëm:
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ë përputhen me kushtin url_blog, duhet të shërbehen nga backend me emrin blog_back, ndërsa të gjitha kërkesat e tjera menaxhohen nga backend-i për default.
Nga anëtarët e backend-it, konfigurimi vendos dy grupe serverësh: http_back, ashtu si më parë, dhe një të re, të quajtur blog_back, e cila shërben lidhjet me example.com\/blog.
Pas ndryshimit të konfigurimeve, ruani skedarin dhe rinisni HAProxy me komandën e mëposhtme:
sudo systemctl restart haproxyNëse gjatë nisjes keni marrë ndonjë paralajmërim ose mesazh gabimi, kontrolloni konfigurimin për ta dhe sigurohuni që keni krijuar të gjitha skedarët dhe direktorët e nevojshëm, pastaj provoni përsëri të rifilloni.
Testimi i konfigurimit
Kur HAProxy është konfiguruar dhe e nisi, hapni IP-në publike të serverit të balancuesit të ngarkesës në shfletues dhe kontrolloni nëse jeni lidhur saktë me backendin. Parametri stats uri në konfigurim krijon një faqe statistikash në adresën e specifikuar.
http://load_balancer_public_ip/haproxy?statsKur të ngarkoni faqen e statistikave, nëse të gjithë serverat tuaj shfaqen me ngjyrë të gjelbër, atëherë konfigurimi është realizuar me sukses!

Faqja e statistikave përmban informacion të dobishëm për ndjekjen e hosteve tuaj të uebit, duke përfshirë kohën e punës/ndalimit dhe numrin e seancave. Nëse ndonjë server është marrë me ngjyrë të kuqe, sigurohuni që serveri është i ndezur dhe se mund ta pingoni nga makina e balancuesit të ngarkesës.
Nëse balancuesi juaj i ngarkesës nuk po përgjigjet, sigurohuni që lidhjet HTTP nuk janë bllokuar nga firewall-i. Po ashtu, sigurohuni që HAProxy është duke funksionuar duke përdorur komandën më poshtë:
sudo systemctl status haproxyMbrojtja e faqes së statistikave me fjalëkalim
Megjithatë, nëse faqja e statistikave është e ndaluar vetëm në frontend, atëherë ajo është e hapur për shikimin publik, që mund të jetë një ide e keqe. Në vend të kësaj, mund t'i caktoni një numër porti të veçantë, duke shtuar shembullin më poshtë 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 shtimit të grupit të ri të dëgjuesve, hiqni lidhjen e vjetër për stats uri nga grupi i frontendit. Kur të përfundoni, ruani skedarin dhe rifilloni HAProxy.
sudo systemctl restart haproxyPastaj 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ë gjithë serverat tuaj të vijojnë të shfaqen me ngjyrë të gjelbër dhe 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 keni ndonjë larmi faqesh qëllimi në serverat 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 algoriteme të ndryshme të balancimit në seksionin e konfigurimit ose të njiheni me .
Përfundim: balancuesi i ngarkesës HAProxy
Gratësoni për konfigurimin e suksesshëm të balancuesit të ngarkesës HAProxy! Edhe me një konfigurim bazik të balancimit të ngarkesës, mund të përmirësoni ndjeshëm performancën dhe disponueshmërinë e aplikacionit tuaj web. Ky udhëzues është vetëm një hyrje në balancimin e ngarkesës me HAProxy, i cili është në gjendje të bëjë shumë më tepër sesa mund të përshkruhet në një udhëzues të shkurtër konfigurimi. Ne rekomandojmë të eksperimentoni me konfigurime të ndryshme duke përdorur , të disponueshëm për HAProxy, dhe pastaj të filloni planifikimin e balancimit të ngarkesës për ambientin tuaj prodhues.
Duke përdorur disa hoste për të mbrojtur shërbimin tuaj web me një rezervë fuqie, balancuesi i ngarkesës vetë mund të përfaqësojë një pikë dështimi. Mund të rrisni më tej disponueshmërinë e lartë duke vendosur një IP të lëvizshme midis disa balancuesve të ngarkesës. Mund të mësoni më shumë rreth kësaj në .
Më shumë rreth kursit ***
Burimi: habr.com
