Përkthimi i artikullit u përgatit në prag të fillimit të kursit
Balancimi i ngarkesës është një zgjidhje e zakonshme për shkallëzimin horizontal të aplikacioneve në ueb nëpër hoste të shumtë, ndërkohë që u siguron përdoruesve një pikë të vetme aksesi në shërbim.
HAProxy përpiqet të optimizojë përdorimin e burimeve, të maksimizojë xhiron, të minimizojë kohën e përgjigjes dhe të shmangë mbingarkimin e çdo burimi individual. Mund të instalohet në një sërë shpërndarjesh Linux, si CentOS 8, në të cilin do të fokusohemi në këtë udhëzues, si dhe në sisteme
HAProxy është veçanërisht i përshtatshëm për faqet e internetit me trafik shumë të lartë dhe për këtë arsye përdoret shpesh për të përmirësuar besueshmërinë dhe performancën e konfigurimeve të shërbimit të uebit me shumë serverë. Ky udhëzues përshkruan 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 parakusht për rezultatet më të mira, duhet të keni të paktën dy serverë në internet dhe një server balancues të ngarkesës. Serverët e uebit duhet të ekzekutojnë të paktën një shërbim bazë në internet si nginx ose httpd në mënyrë që të testojnë 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ë zhvillohet me shpejtësi, shpërndarja e disponueshme për ju në depot standarde të CentOS mund të mos jetë versioni më i fundit. Për të zbuluar versionin aktual, ekzekutoni komandën e mëposhtme:
sudo yum info haproxy
HAProxy ofron gjithmonë tre versione të qëndrueshme për të zgjedhur: dy versionet më të fundit të mbështetura dhe një version të tretë, më të vjetër që ende po merr përditësime kritike. Mund të kontrolloni gjithmonë versionin më të fundit të qëndrueshëm të listuar në faqen e internetit HAProxy dhe më pas të vendosni me cilin version dëshironi të punoni.
Në këtë udhëzues, ne do të instalojmë versionin më të fundit të qëndrueshëm 2.0, i cili nuk ishte ende i disponueshëm në depot standarde në kohën e shkrimit të udhëzuesit. Do t'ju duhet ta instaloni nga burimi origjinal. Por së pari, kontrolloni nëse i keni plotësuar kushtet e nevojshme për të shkarkuar dhe përpiluar programin.
sudo yum install gcc pcre-devel tar make -y
Shkarkoni kodin burim duke përdorur komandën e mëposhtme. Mund të kontrolloni nëse ekziston një version më i ri në dispozicion
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz
Pasi të përfundojë shkarkimi, nxirrni skedarët duke përdorur komandën e mëposhtme:
tar xzvf ~/haproxy.tar.gz -C ~/
Shkoni te drejtoria e burimit të papaketuar:
cd ~/haproxy-2.0.7
Pastaj përpiloni programin për sistemin tuaj:
make TARGET=linux-glibc
Dhe së fundi, instaloni vetë HAProxy:
sudo make install
HAProxy tani është instaluar, por kërkon disa manipulime shtesë për ta bërë atë të funksionojë. Le të vazhdojmë të konfigurojmë softuerin dhe shërbimet më poshtë.
Vendosja e HAProxy për serverin tuaj
Tani shtoni drejtoritë e mëposhtme dhe skedarin e statistikave për hyrjet HAProxy:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/stats
Krijoni një lidhje simbolike për binarët në mënyrë që të mund të ekzekutoni komandat HAProxy si një përdorues i rregullt:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
Nëse dëshironi të shtoni një përfaqësues në sistemin tuaj si shërbim, kopjoni skedarin haproxy.init nga shembujt në drejtorinë tuaj /etc/init.d. Ndryshoni lejet e skedarit në mënyrë që skripti të ekzekutohet dhe më pas rinisni daemonin 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 që shërbimi të riniset automatikisht kur fillon 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ç tregohet në shembullin e prodhimit të mësipërm.
Më në fund, muri i zjarrit i paracaktuar në CentOS 8 është mjaft kufizues për këtë projekt. Përdorni komandat e mëposhtme për të lejuar shërbimet e kërkuara dhe rivendosni murin e zjarrit:
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
Vendosja e HAProxy është një proces mjaft i thjeshtë. Në thelb, gjithçka që duhet të bëni është t'i tregoni 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ësime përcaktuese. Mund të lexoni rreth opsioneve të konfigurimit të HAProxy
Balancimi i ngarkesës në shtresën e transportit (shtresa 4)
Le të fillojmë me konfigurimin bazë. Krijoni një skedar të ri konfigurimi, për shembull duke përdorur vi me komandën e mëposhtme:
sudo vi /etc/haproxy/haproxy.cfg
Shtoni seksionet e mëposhtme në skedar. Zëvendësoni Emri i serverit çfarë duhet të thërrasin serverët tuaj në faqen e statistikave, dhe private_ip — adresat IP private të serverëve tek të cilët dëshironi të drejtoni trafikun në ueb. Ju mund të kontrolloni adresat IP private
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 të ngarkesës së shtresës së transportit (shtresa 4) me emrin e jashtëm http_front dëgjim në portin 80, i cili më pas e përcjell trafikun në një backend të paracaktuar të quajtur http_back. Statistikat shtesë /haproxy?stats lidh faqen e statistikave me adresën e specifikuar.
Algoritme të ndryshme të balancimit të ngarkesës.
Specifikimi i serverëve në seksionin backend i lejon HAProxy të përdorë këta serverë për balancimin e ngarkesës sipas një algoritmi të rrumbullakët kur është e mundur.
Algoritmet e balancimit përdoren për të përcaktuar se cilit server në backend kalon çdo lidhje. Këtu janë disa nga opsionet e dobishme:
- Robina e rrumbullakët: Çdo server përdoret me radhë sipas peshës së tij. Ky është algoritmi më i qetë dhe më i drejtë kur koha e përpunimit të serverëve mbetet e shpërndarë në mënyrë të barabartë. Ky algoritëm është dinamik, duke lejuar që pesha e serverit të rregullohet menjëherë.
- Leastconn: zgjidhet serveri me më pak lidhje. Round Robin kryhet midis serverëve me të njëjtën ngarkesë. Përdorimi i këtij algoritmi rekomandohet për seanca të gjata si LDAP, SQL, TSE etj., por nuk është shumë i përshtatshëm për seanca të shkurtra si HTTP.
- Së pari: Serveri i parë me lojëra elektronike të disponueshme për lidhje merr lidhjen. Serverët zgjidhen nga ID-ja numerike më e ulët deri tek ajo më e larta, e cila vendoset në pozicionin e serverit në fermë. Pasi një server arrin maxconn, përdoret serveri tjetër.
- Burimi: Adresa IP e burimit hash dhe ndahet me peshën totale të serverëve që funksionojnë për të përcaktuar se cili server do të marrë kërkesën. Në këtë mënyrë, e njëjta adresë IP e klientit do të shkojë gjithmonë në të njëjtin server, ndërsa serverët mbeten të njëjtë.
Vendosja e balancimit të ngarkesës në nivelin e aplikimit (shtresa 7)
Një opsion tjetër i disponueshëm është të konfiguroni një balancues të ngarkesës që të funksionojë në shtresën e aplikacionit (shtresa 7), e cila është e dobishme kur pjesë të aplikacionit tuaj në internet ndodhen në host të ndryshëm. Kjo mund të arrihet duke penguar transmetimin e lidhjes, për shembull me URL.
Hapni skedarin e konfigurimit HAProxy duke përdorur një redaktues 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 të quajtur url_blog që zbatohet për të gjitha lidhjet me shtigjet që fillojnë me /blog. Use_backend specifikon që lidhjet që përputhen me kushtin url_blog duhet të shërbehen nga një backend i quajtur blog_back, dhe të gjitha kërkesat e tjera trajtohen nga backend-i i paracaktuar.
Në anën e pasme, konfigurimi ngre dy grupe serverësh: http_back, si më parë, dhe një të ri të quajtur blog_back, i cili trajton lidhjet me example.com/blog.
Pas ndryshimit të cilësimeve, ruani skedarin dhe rinisni HAProxy duke përdorur komandën e mëposhtme:
sudo systemctl restart haproxy
Nëse merrni ndonjë paralajmërim ose mesazh gabimi gjatë nisjes, kontrolloni konfigurimin tuaj për to dhe sigurohuni që keni krijuar të gjithë skedarët dhe dosjet e nevojshme, më pas provoni ta rinisni përsëri.
Testimi i konfigurimit
Pasi HAProxy të jetë konfiguruar dhe ekzekutuar, hapni adresën IP publike të serverit të balancuesit të ngarkesës në një shfletues dhe kontrolloni nëse jeni lidhur saktë me backend-in. Parametri stats uri në konfigurim krijon një faqe statistikash në adresën e specifikuar.
http://load_balancer_public_ip/haproxy?stats
Kur ngarkoni faqen e statistikave, nëse të gjithë serverët tuaj shfaqen të gjelbër, atëherë konfigurimi ishte i suksesshëm!
Faqja e statistikave përmban disa informacione të dobishme për gjurmimin e hosteve tuaj të uebit, duke përfshirë kohën lart/poshtë dhe numrin e seancave. Nëse serveri është shënuar me të kuqe, sigurohuni që serveri të jetë i ndezur dhe se mund ta bëni ping nga makina e balancuesit të ngarkesës.
Nëse balancuesi juaj i ngarkesës nuk po përgjigjet, sigurohuni që lidhjet HTTP të mos bllokohen nga një mur zjarri. Gjithashtu sigurohuni që HAProxy po funksionon duke përdorur komandën e mëposhtme:
sudo systemctl status haproxy
Mbrojtja e faqes së statistikave me një fjalëkalim
Megjithatë, nëse faqja e statistikave renditet thjesht në pjesën e përparme, atëherë ajo është e hapur për të gjithë për ta parë, gjë që mund të mos jetë një ide e mirë. Në vend të kësaj, mund t'i caktoni një numër porti të personalizuar duke shtuar shembullin më poshtë në fund të skedarit tuaj haproxy.cfg. Zëvendësoni Emri i përdoruesit и Fjalëkalimi për diçka të sigurt:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:password
Pasi të keni shtuar një grup të ri dëgjuesi, hiqni lidhjen e vjetër të statistikave uri nga grupi frontend. Kur të mbaroni, ruani skedarin dhe rinisni HAProxy.
sudo systemctl restart haproxy
Pastaj hapni përsëri balancuesin e ngarkesës me numrin e ri të portës dhe identifikohuni me emrin e përdoruesit dhe fjalëkalimin që keni specifikuar në skedarin e konfigurimit.
http://load_balancer_public_ip:8181
Sigurohuni që të gjithë serverët tuaj të jenë ende të gjelbër dhe më pas hapni vetëm IP-në e balancuesit të ngarkesës pa ndonjë numër portash në shfletuesin tuaj.
http://load_balancer_public_ip/
Nëse keni të paktën një larmi faqesh uljeje në serverët tuaj të fundit, do të vini re se sa 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ë shikoni
Përfundim: HAProxy Load Balancer
Urime për konfigurimin me sukses të balancuesit të ngarkesës HAProxy! Edhe me një konfigurim bazë të balancimit të ngarkesës, mund të përmirësoni ndjeshëm performancën dhe disponueshmërinë e aplikacionit tuaj në internet. Ky udhëzues është vetëm një hyrje në balancimin e ngarkesës me HAProxy, i cili është i aftë për shumë më tepër se sa mund të mbulohet në udhëzuesin e konfigurimit të shpejtë. Ne rekomandojmë të eksperimentoni me konfigurime të ndryshme duke përdorur
Duke përdorur hoste të shumtë për të mbrojtur shërbimin tuaj të internetit me hapësirën kryesore, vetë balancuesi i ngarkesës mund të paraqesë ende një pikë dështimi. Mund të përmirësoni më tej disponueshmërinë e lartë duke instaluar një IP lundruese midis balancuesve të shumëfishtë të ngarkesës. Mund të mësoni më shumë rreth kësaj në faqen tonë
Më shumë rreth kursit
Burimi: www.habr.com