CentOS-en HAProxy Load Balancer instalatzea

Ikastaroa hasi bezperan prestatu zen artikuluaren itzulpena Linux administratzailea. Birtualizazioa eta Clustering»

CentOS-en HAProxy Load Balancer instalatzea

Karga-orekatzea ohiko irtenbide bat da ostalari anitzetan web aplikazioak eskalatzeko, erabiltzaileei zerbitzu baterako sarbide-puntu bakarra eskaintzen dien bitartean. HAProxy kode irekiko karga orekatzeko software ezagunenetako bat da, erabilgarritasun handia eta proxy funtzionaltasuna ere eskaintzen duena.

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. Debian 8 и Ubuntu 16.

CentOS-en HAProxy Load Balancer instalatzea

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 HAProxy deskarga orria.

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 dokumentazio orrianhorri buruz gehiago jakin nahi baduzu.

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 UpCloud kontrol panelean eta fitxan Sare pribatua menuan Sarea.

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!

CentOS-en HAProxy Load Balancer instalatzea

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 dokumentazio osoa.

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 dokumentazio zabalaeskuragarri HAProxy-ri eta, gero, hasi zure ekoizpen-ingurunerako karga orekatzea planifikatzen.

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 UpCloud-en IP helbide flotagarriei buruzko artikulua.

Ikastaroari buruz gehiago Linux administratzailea. Birtualizazioa eta Clustering»***

Iturria: www.habr.com

Gehitu iruzkin berria