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

Përkthimi i artikullit është përgatitur në prag të fillimit të kursit «Administrator 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ër përdoruesit një pikë të vetme aksesi në shërbim. HAProxy ë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 Debian 8 dhe Ubuntu 16.

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

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 haproxy

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

Shkarkoni kodin burimor me komandën më poshtë. Mund të kontrolloni nëse një version më i ri është i disponueshëm në faqen e shkarkimit të HAProxy..

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

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

Pastaj kompilo programin për sistemin tuaj:

make TARGET=linux-glibc

Dhe, në fund, instaloni vetë HAProxy:

sudo make install

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

Ju gjithashtu duhet të lejoni shërbimin të ngarkohet automatikisht gjatë nisjes së sistemit:

sudo chkconfig haproxy on

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

sudo useradd -r haproxy

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

Shtoni 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 nĂ« panelin e menaxhimit UpCloud 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 check

Kjo 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.cfg

Pastaj 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 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ë 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 haproxy

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

Kur shkarkoni faqen e statistikave, nëse të gjitha serverat tuaj shfaqen me ngjyrë të gjelbër, konfigurimi ka shkuar me sukses!

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

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 haproxy

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

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

Më 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:8181

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

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 dokumentacionit të gjerë, 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ë artikullin tonë mbi IP-të lundruese në UpCloud.

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

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster