Ikastaroa hasi bezperan prestatu zen artikuluaren itzulpena
Karga-orekatzea ohiko irtenbide bat da ostalari anitzetan web aplikazioak eskalatzeko, erabiltzaileei zerbitzu baterako sarbide-puntu bakarra eskaintzen dien bitartean.
HAProxy-k baliabideen erabilera optimizatzea, errendimendua maximizatzea, erantzun denbora murriztea eta baliabide bakar bat gainkargatzea saihestea du helburu. Hainbat Linux banaketatan instalatu daiteke, hala nola CentOS 8, gida honetan zentratuko duguna, baita sistemetan ere.
HAProxy bereziki egokia da trafiko handiko webguneetarako eta, beraz, askotan erabiltzen da zerbitzari anitzeko web zerbitzuen konfigurazioen fidagarritasuna eta errendimendua hobetzeko. Gida honek CentOS 8 hodeiko ostalari batean HAProxy karga-orekatzaile gisa konfiguratzeko urratsak zehazten ditu, gero trafikoa zure web zerbitzarietara bideratzen duena.
Emaitza onenak lortzeko ezinbesteko baldintza gisa, gutxienez bi web zerbitzari eta karga orekatzeko zerbitzari bat izan behar dituzu. Web zerbitzariek gutxienez oinarrizko web-zerbitzu bat exekutatu behar dute, hala nola nginx edo httpd, haien arteko karga-oreka egiaztatzeko.
HAProxy instalatzen CentOS 8-n
HAProxy azkar garatzen ari den kode irekiko aplikazioa denez, baliteke CentOS biltegi estandarretan eskuragarri duzun banaketa azken bertsioa ez izatea. Azken bertsioa ezagutzeko, exekutatu komando hau:
sudo yum info haproxy
HAProxy-k hiru bertsio egonkor eskaintzen ditu beti aukeran: onartutako azken bi bertsioak eta oraindik eguneratze kritikoak jasotzen ari den hirugarren bertsio zaharra. Beti egiaztatu dezakezu HAProxy webgunean zerrendatutako azken bertsio egonkorra eta gero erabaki zein bertsiorekin lan egin nahi duzun.
Gida honetan, 2.0 bertsio egonkorra instalatuko dugu, idazteko unean oraindik biltegi estandarretan eskuragarri ez zegoena. Jatorrizko iturritik instalatu beharko duzu. Baina lehenik eta behin, egiaztatu programa deskargatzeko eta konpilatzeko beharrezko baldintzak betetzen dituzun.
sudo yum install gcc pcre-devel tar make -y
Deskargatu iturburu-kodea beheko komandoa erabiliz. Bertsio berriagorik dagoen kontsulta dezakezu hemen
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz
Deskarga amaitutakoan, atera fitxategiak beheko komandoa erabiliz:
tar xzvf ~/haproxy.tar.gz -C ~/
Aldatu desontziratu gabeko iturburu-direktoriora:
cd ~/haproxy-2.0.7
Ondoren, konpilatu zure sistemarako programa:
make TARGET=linux-glibc
Eta, azkenik, instalatu HAProxy bera:
sudo make install
Orain HAProxy instalatuta dago, baina manipulazio gehigarri batzuk behar ditu funtziona dezan. Jarrai dezagun beheko softwarea eta zerbitzuak konfiguratzen.
Zure zerbitzarirako HAProxy konfiguratzen
Gehitu orain HAProxy sarreretarako direktorio eta estatistika fitxategi hauek:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/stats
Sortu esteka sinboliko bat bitarrentzat, HAProxy komandoak erabiltzaile arrunt gisa exekutatu ahal izateko:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
Proxya zure sisteman zerbitzu gisa gehitu nahi baduzu, kopiatu haproxy.init fitxategia adibideetatik zure /etc/init.d direktoriora. Editatu fitxategiaren baimenak scripta exekutatuko den eta, ondoren, berriro kargatu systemd deabrua:
sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload
Sistema abiaraztean zerbitzua automatikoki berrabiarazteko ere baimendu behar duzu:
sudo chkconfig haproxy on
Erosotasunerako, HAProxy exekutatzeko erabiltzaile berri bat gehitzea ere gomendatzen da:
sudo useradd -r haproxy
Horren ondoren, instalatutako bertsio-zenbakia berriro egiaztatu dezakezu komando honekin:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/
Gure kasuan, bertsioak 2.0.7 izan beharko luke, goiko irteerako adibidean erakusten den moduan.
Azkenik, CentOS 8-n suebaki lehenetsia nahiko murriztailea da proiektu honetarako. Erabili komando hauek beharrezko zerbitzuak gaitzeko eta suebakia berrezartzeko:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload
Karga-orekatzailea konfiguratzea
HAProxy konfiguratzea prozesu nahiko sinplea da. Funtsean, egin behar duzun guztia HAProxy-ri zer konexiotan entzun behar duen eta non transmititu behar duen da.
Hau /etc/haproxy/haproxy.cfg konfigurazio-fitxategi bat sortuz egiten da definizio-ezarpenekin. HAProxy konfigurazio aukerei buruz irakur dezakezu
Karga orekatzea garraio-geruzan (4. geruza)
Has gaitezen oinarrizko konfiguraziotik. Sortu konfigurazio fitxategi berri bat, adibidez erabiliz vi beheko komandoarekin:
sudo vi /etc/haproxy/haproxy.cfg
Gehitu ondorengo atalak fitxategira. Ordezkatu server_name estatistiken orrian zure zerbitzariei deitu behar diena, eta pribatua_ip - Web trafikoa bideratu nahi duzun zerbitzarien IP helbide pribatuak. IP helbide pribatuak egiaztatu ditzakezu
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
Honek garraio-geruzaren karga-orekatzailea (4. geruza) kanpotik http_front listening izenekoa definitzen du 80 atakan, eta gero trafikoa http_back izeneko backend lehenetsira bideratzen du. Estatistika gehigarriak /haproxy?stats-ek estatistiken orria zehaztutako helbidera konektatzen du.
Karga orekatzeko hainbat algoritmo.
Backend atalean zerbitzariak zehazteari esker, HAProxy-k zerbitzari horiek erabil ditzake karga orekatzeko round robin algoritmoaren arabera, ahal denean.
Orekatze algoritmoak erabiltzen dira konexio bakoitza backend-eko zein zerbitzaritara bidaltzen den zehazteko. Hona hemen aukera erabilgarriak:
- Roundrobin: zerbitzari bakoitza bere pisuaren arabera erabiltzen da txandaka. Hau da algoritmorik leunena eta zintzoena, zerbitzarien prozesatzeko denbora uniformeki banatuta geratzen denean. Algoritmo hau dinamikoa da, zerbitzariaren pisua hegaldian doitzeko aukera ematen duena.
- Leastconn: konexio gutxien dituen zerbitzaria hautatzen da. Round robin karga bera duten zerbitzarien artean egiten da. Algoritmo hau erabiltzea gomendatzen da LDAP, SQL, TSE, etab. bezalako saio luzeetarako, baina ez da oso egokia HTTP bezalako saio laburretarako.
- Lehenengoa: konexio zirrikituak erabilgarri dituen lehen zerbitzariak jasotzen du konexioa. Zerbitzariak zenbakizko ID baxuenetik handienera hautatzen dira, zeina lehenespenez zerbitzariaren posizioari dagokio baserrian. Zerbitzariak maxconn baliora iristen denean, hurrengo zerbitzaria erabiltzen da.
- Iturria: Iturburuko IP helbidea hash eta exekutatzen ari diren zerbitzarien pisu osoaren arabera zatitzen da, eskaera zein zerbitzariak jasoko duen zehazteko. Horrela, bezeroaren IP helbide bera beti zerbitzari berera joango da, zerbitzariak aldatu gabe geratzen diren bitartean.
Aplikazio-geruzan karga-orekatzea konfiguratzea (7. geruza)
Eskuragarri dagoen beste aukera bat karga-orekatzailea aplikazio-geruzan (7. geruzan) lan egiteko konfiguratzea da, eta hori erabilgarria da zure web-aplikazioaren zatiak ostalari ezberdinetan daudenean. Konexioaren transferentzia murriztuz lor daiteke, URL bidez adibidez.
Ireki HAProxy konfigurazio fitxategia testu-editore batekin:
sudo vi /etc/haproxy/haproxy.cfg
Ondoren, konfiguratu frontend eta backend segmentuak beheko adibidearen arabera:
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-ak url_blog izeneko ACL arau bat deklaratzen du, /blog-rekin hasten diren bideak dituzten konexio guztiei aplikatzen zaiena. Use_backend-ek zehazten du url_blog baldintzarekin bat datozen konexioak blog_back izeneko backend-ak hornitu behar dituela eta gainerako eskaera guztiak backend lehenetsiak kudeatzen dituela.
Atzeko aldean, konfigurazioak bi zerbitzari-talde ezartzen ditu: http_back, lehen bezala, eta blog_back izeneko berria, example.com/blog-erako konexioak kudeatzen dituena.
Ezarpenak aldatu ondoren, gorde fitxategia eta berrabiarazi HAProxy komando honekin:
sudo systemctl restart haproxy
Abiaraztean abisurik edo akatsik jasotzen baduzu, egiaztatu konfigurazioa dagoen eta ziurtatu beharrezko fitxategi eta karpeta guztiak sortu dituzula, eta saiatu berriro berrabiarazten.
Konfigurazioa probatzen
HAProxy konfiguratu eta martxan dagoenean, ireki karga-balantzailearen zerbitzariaren IP helbide publikoa arakatzaile batean eta egiaztatu backend-era ondo konektatu zaren. Konfigurazioko stats uri parametroak estatistiken orri bat sortzen du zehaztutako helbidean.
http://load_balancer_public_ip/haproxy?stats
Estatistiken orria kargatzen duzunean, zure zerbitzari guztiak berdeak badira, konfigurazioa arrakastatsua izan da!
Estatistika-orriak informazio erabilgarria dauka zure web-ostalarien jarraipena egiteko, gora/behera denbora eta saio kopurua barne. Zerbitzaria gorriz markatuta badago, ziurtatu zerbitzaria martxan dagoela eta karga-balantzagailutik ping dezakezula.
Zure karga-orekatzaileak ez badu erantzuten, ziurtatu HTTP konexioak ez dituela suebaki batek blokeatzen. Ziurtatu HAProxy beheko komandoarekin funtzionatzen duela:
sudo systemctl status haproxy
Estatistika orria pasahitz batekin babestea
Hala ere, estatistiken orria frontend-ean agertzen bada, publikoarentzat irekita dago, eta hori agian ez da ideia ona izango. Horren ordez, zure ataka-zenbakia eslei diezaiokezu haproxy.cfg fitxategiaren amaieran beheko adibidea gehituz. Ordezkatu erabiltzailea и pasahitza zerbait segurura:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:password
Entzule talde berria gehitu ondoren, kendu estatistiken uri erreferentzia zaharra frontend taldetik. Amaitutakoan, gorde fitxategia eta berrabiarazi HAProxy.
sudo systemctl restart haproxy
Ondoren, ireki berriro karga-orekatzailea ataka-zenbaki berriarekin eta hasi saioa konfigurazio fitxategian zehaztu dituzun erabiltzaile-izena eta pasahitzarekin.
http://load_balancer_public_ip:8181
Ziurtatu zure zerbitzari guztiak berdeak direla eta, ondoren, ireki karga-orekatzailearen IPa soilik zure arakatzailean ataka-zenbakirik gabe.
http://load_balancer_public_ip/
Zure barne zerbitzarietan lurreratze-orrialde batzuk gutxienez badituzu, orria berriro kargatzen duzun bakoitzean, beste ostalari baten erantzuna jasotzen duzula ohartuko zara. Orekatze algoritmo desberdinak proba ditzakezu konfigurazio atalean edo ikusi
Ondorioa: HAProxy Load Balancer
Zorionak zure HAProxy karga-orekatzailea arrakastaz konfiguratzeagatik! Nahiz eta karga orekatzeko oinarrizko konfigurazioa izan, zure web aplikazioaren errendimendua eta erabilgarritasuna asko hobetu ditzakezu. Gida hau HAProxy-rekin karga orekatzeko sarrera bat besterik ez da, konfigurazio gida azkar batean deskriba daitekeena baino askoz gehiago egiteko gai dena. Hainbat konfigurazio erabiliz esperimentatzea gomendatzen dugu
Ostalari anitz erabiliz zure web-zerbitzua goi-maila batekin babesteko, karga-orekatzaileak berak hutsegite puntu bat izan dezake oraindik. Erabilgarritasun handia are gehiago hobetu dezakezu karga-orekatzaile anitzen artean IP flotagarri bat konfiguratuz. Honi buruz gehiago jakin dezakezu gure
Ikastaroari buruz gehiago
Iturria: www.habr.com