Instalimi i balancuesit të ngarkesës HAProxy në CentOS

Përkthimi i artikullit është përgatitur para fillimit të kursit «Administratori Linux. Virtualizimi dhe klasterizimi»

Instalimi i balancuesit të ngarkesës HAProxy në CentOS

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. HAProxy ë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 Debian 8 dhe Ubuntu 16.

Instalimi i balancuesit të ngarkesës HAProxy në CentOS

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 haproxy

HAProxy 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 -y

Shkarkoni kodin burimor duke përdorur komandën më poshtë. Mund të kontrolloni nëse ekziston një version më i ri në dispozicion në faqja e shkarkimeve të HAProxy.

wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz

Pas 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.7

Pastaj, kompaktikoni programin për sistemin tuaj:

make TARGET=linux-glibc

Dhe, përfundimisht, instaloni vetë HAProxy:

sudo make install

Tani 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/stats

Krijoni 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/haproxy

Në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-reload

Ju gjithashtu duhet të lejoni shërbimin që të rifillojë automatikisht kur të startohet sistemi:

sudo chkconfig haproxy on

Për lehtësi, rekomandohet gjithashtu të shtoni një përdorues të ri për të ekzekutuar HAProxy:

sudo useradd -r haproxy

Pas 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 --reload

Konfigurimi 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ë faqen e dokumentacionit, 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.cfg

Shtoni 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 në panelin e kontrollit UpCloud 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.cfg

Më 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 check

Frontend 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 haproxy

Në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?stats

Kur të ngarkoni faqen e statistikave, nëse të gjithë serverat tuaj shfaqen me ngjyrë të gjelbër, atëherë konfigurimi është realizuar me sukses!

Instalimi i balancuesit të ngarkesës HAProxy në CentOS

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 haproxy

Mbrojtja 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:password

Pas 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 haproxy

Pastaj 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:8181

Sigurohuni 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 dokumentacionin e plotë.

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 dokumenationin e gjerë, 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ë artikullin tonë mbi adresat IP të lëvizshme në UpCloud.

Më shumë rreth kursit «Administratori Linux. Virtualizimi dhe klasterizimi»***

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster