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

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster