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

Përkthimi i artikullit u përgatit në prag të fillimit të kursit "Administrator Linux. Virtualizimi dhe grupimi"

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 në ueb nëpër hoste të shumtë, ndërkohë që u siguron përdoruesve një pikë të vetme aksesi në shërbim. HAProxy është një nga programet më të njohura për balancimin e ngarkesës me burim të hapur që ofron gjithashtu disponueshmëri të lartë dhe funksionalitet proxy.

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 Debian 8 и 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 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 Faqja 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, 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 në faqen e dokumentacionitnëse doni të dini më shumë për të.

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 në panelin e kontrollit UpCloud dhe në skedën Rrjet privat në meny Rrjet.

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!

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

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 dokumentacion të plotë.

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 dokumentacion të gjerë, në dispozicion të HAProxy dhe më pas filloni të planifikoni balancimin e ngarkesës për mjedisin tuaj të prodhimit.

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ë artikull rreth adresave IP lundruese në UpCloud.

Më shumë rreth kursit "Administrator Linux. Virtualizimi dhe grupimi"***

Burimi: www.habr.com

Shto një koment