HAProxy apkrovos balansavimo priemonės įdiegimas CentOS

Straipsnio vertimas buvo parengtas kursų pradžios išvakarėse "Linux administratorius. Virtualizacija ir grupavimas“

HAProxy apkrovos balansavimo priemonės įdiegimas CentOS

Apkrovos balansavimas yra įprastas sprendimas, skirtas horizontaliai keisti žiniatinklio programas keliose prieglobose, tuo pačiu suteikiant vartotojams vieną prieigos prie paslaugos tašką. HAProxy yra viena iš populiariausių atvirojo kodo apkrovos balansavimo programinės įrangos, kuri taip pat užtikrina aukštą prieinamumą ir tarpinio serverio funkcijas.

HAProxy siekia optimizuoti išteklių naudojimą, maksimaliai padidinti pralaidumą, sumažinti atsako laiką ir išvengti atskirų išteklių perkrovimo. Jis gali būti įdiegtas įvairiuose „Linux“ paskirstymuose, pvz., „CentOS 8“, kuriam daugiausia dėmesio skirsime šiame vadove, taip pat sistemose Debian 8 и Ubuntu 16.

HAProxy apkrovos balansavimo priemonės įdiegimas CentOS

HAProxy ypač tinka labai didelio srauto svetainėms, todėl dažnai naudojama kelių serverių žiniatinklio paslaugų konfigūracijų patikimumui ir našumui pagerinti. Šiame vadove aprašomi veiksmai, kaip nustatyti HAProxy kaip apkrovos balansavimo priemonę CentOS 8 debesies priegloboje, kuri nukreipia srautą į jūsų žiniatinklio serverius.

Norint pasiekti geriausių rezultatų, turite turėti bent du žiniatinklio serverius ir apkrovos balansavimo serverį. Žiniatinklio serveriuose turi veikti bent pagrindinė žiniatinklio paslauga, pvz., nginx arba httpd, kad būtų galima išbandyti apkrovos balansavimą tarp jų.

HAProxy diegimas CentOS 8

Kadangi HAProxy yra sparčiai besivystanti atvirojo kodo programa, jums prieinamas platinimas standartinėse CentOS saugyklose gali būti ne naujausia versija. Norėdami sužinoti dabartinę versiją, paleiskite šią komandą:

sudo yum info haproxy

HAProxy visada siūlo tris stabilias versijas: dvi naujausias palaikomas versijas ir trečią, senesnę versiją, kuri vis dar gauna svarbius naujinimus. Visada galite patikrinti naujausią stabilią versiją, pateiktą HAProxy svetainėje, ir nuspręsti, su kuria versija norite dirbti.

Šiame vadove mes įdiegsime naujausią stabilią 2.0 versiją, kurios vadovo rašymo metu dar nebuvo standartinėse saugyklose. Turėsite jį įdiegti iš pirminio šaltinio. Tačiau pirmiausia patikrinkite, ar įvykdėte būtinas sąlygas programai atsisiųsti ir kompiliuoti.

sudo yum install gcc pcre-devel tar make -y

Atsisiųskite šaltinio kodą naudodami toliau pateiktą komandą. Galite patikrinti, ar yra naujesnė versija HAProxy atsisiuntimo puslapis.

wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz

Kai atsisiuntimas bus baigtas, ištraukite failus naudodami toliau pateiktą komandą:

tar xzvf ~/haproxy.tar.gz -C ~/

Eikite į išpakuotą šaltinio katalogą:

cd ~/haproxy-2.0.7

Tada sukompiliuokite programą savo sistemai:

make TARGET=linux-glibc

Ir galiausiai įdiekite patį HAProxy:

sudo make install

HAProxy dabar įdiegtas, tačiau norint, kad jis veiktų, reikia atlikti keletą papildomų manipuliacijų. Toliau tęskime programinės įrangos ir paslaugų sąranką.

Jūsų serverio HAProxy nustatymas

Dabar pridėkite šiuos HAProxy įrašų katalogus ir statistikos failą:

sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy 
sudo touch /var/lib/haproxy/stats

Sukurkite simbolinę dvejetainių failų nuorodą, kad galėtumėte vykdyti HAProxy komandas kaip įprastas vartotojas:

sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

Jei norite pridėti tarpinį serverį į savo sistemą kaip paslaugą, nukopijuokite failą haproxy.init iš pavyzdžių į /etc/init.d katalogą. Redaguokite failo teises, kad scenarijus būtų paleistas, tada iš naujo paleiskite sistemos demoną:

sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload

Taip pat turite leisti paslaugai automatiškai paleisti iš naujo, kai sistema paleidžiama:

sudo chkconfig haproxy on

Patogumui taip pat rekomenduojama pridėti naują vartotoją, kuris paleistų HAProxy:

sudo useradd -r haproxy

Po to galite dar kartą patikrinti įdiegtos versijos numerį naudodami šią komandą:

haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/

Mūsų atveju versija turėtų būti 2.0.7, kaip parodyta aukščiau pateiktame pavyzdyje.

Galiausiai, numatytoji „CentOS 8“ ugniasienė yra gana ribojanti šį projektą. Norėdami leisti reikalingas paslaugas ir iš naujo nustatyti ugniasienę, naudokite šias komandas:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload

Apkrovos balansavimo priemonės nustatymas

HAProxy nustatymas yra gana paprastas procesas. Iš esmės viskas, ką jums reikia padaryti, tai pasakyti HAProxy, kokių jungčių ji turėtų klausytis ir kur jas perduoti.

Tai atliekama sukuriant konfigūracijos failą /etc/haproxy/haproxy.cfg su nustatymais. Galite perskaityti apie HAProxy konfigūravimo parinktis dokumentacijos puslapyjejei norite sužinoti daugiau apie tai.

Apkrovos balansavimas transporto sluoksnyje (4 sluoksnis)

Pradėkime nuo pagrindinės sąrankos. Sukurkite naują konfigūracijos failą, pavyzdžiui, naudodami vi su komanda žemiau:

sudo vi /etc/haproxy/haproxy.cfg

Prie failo pridėkite šiuos skyrius. Pakeiskite serverio pavadinimas kaip turėtų vadintis jūsų serveriai statistikos puslapyje ir private_ip — serverių, į kuriuos norite nukreipti žiniatinklio srautą, privatūs IP adresai. Galite patikrinti privačius IP adresus „UpCloud“ valdymo skydelyje ir skirtuke Privatus tinklas meniu tinklas.

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

Tai apibrėžia transporto sluoksnio apkrovos balansavimo priemonę (4 sluoksnis), išoriškai pavadintą „http_front klausymas“ 80 prievade, kuris tada nukreipia srautą į numatytąją vidinę programą, pavadintą http_back. Papildoma statistika /haproxy?stats sujungia statistikos puslapį su nurodytu adresu.

Įvairūs apkrovos balansavimo algoritmai.

Nurodę serverius užpakalinėje dalyje, HAProxy gali naudoti šiuos serverius apkrovai balansuoti pagal apvalaus veikimo algoritmą, kai įmanoma.

Balansavimo algoritmai naudojami norint nustatyti, kuriam užpakalinės sistemos serveriui perduodamas kiekvienas ryšys. Štai keletas naudingų parinkčių:

  • Apvalus drabužis: Kiekvienas serveris naudojamas paeiliui pagal jo svorį. Tai sklandžiausias ir teisingiausias algoritmas, kai serverių apdorojimo laikas išlieka tolygiai paskirstytas. Šis algoritmas yra dinamiškas, todėl serverio svorį galima reguliuoti skrydžio metu.
  • Leastconn: pasirenkamas mažiausiai prisijungęs serveris. Round robin vykdomas tarp serverių su ta pačia apkrova. Naudoti šį algoritmą rekomenduojama ilgoms sesijoms, tokioms kaip LDAP, SQL, TSE ir kt., tačiau jis nelabai tinka trumpoms sesijoms, tokioms kaip HTTP.
  • Pirmas: Pirmasis serveris, turintis laisvų ryšio lizdų, priima ryšį. Serveriai parenkami nuo mažiausio skaitmeninio ID iki didžiausio, kuris pagal nutylėjimą yra serverio padėtis ūkyje. Kai serveris pasiekia maxconn, naudojamas kitas serveris.
  • šaltinis: Šaltinio IP adresas yra maišomas ir padalytas iš bendro veikiančių serverių svorio, kad būtų nustatyta, kuris serveris gaus užklausą. Tokiu būdu tas pats kliento IP adresas visada bus nukreiptas į tą patį serverį, o serveriai išliks tie patys.

Apkrovos balansavimo nustatymas programos lygiu (7 sluoksnis)

Kita galima parinktis – sukonfigūruoti apkrovos balansavimo priemonę, kad ji veiktų programos lygmenyje (7 sluoksnis), o tai naudinga, kai žiniatinklio programos dalys yra skirtinguose pagrindiniuose kompiuteriuose. Tai galima pasiekti stabdant ryšio perdavimą, pavyzdžiui, naudojant URL.

Atidarykite HAProxy konfigūracijos failą naudodami teksto rengyklę:

sudo vi /etc/haproxy/haproxy.cfg

Tada sukonfigūruokite priekinės ir galinės dalies segmentus, kaip nurodyta toliau pateiktame pavyzdyje:

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 deklaruoja ACL taisyklę, vadinamą url_blog, kuri taikoma visiems ryšiams, kurių keliai prasideda /blog. Use_backend nurodo, kad ryšiai, atitinkantys url_blog sąlygą, turėtų būti aptarnaujami vidinėje programoje, pavadintoje blog_back, o visas kitas užklausas apdoroja numatytoji vidinė programa.

Užpakalinėje dalyje konfigūracija nustato dvi serverių grupes: http_back, kaip ir anksčiau, ir naują, vadinamą blog_back, kuri tvarko ryšius su example.com/blog.

Pakeitę nustatymus, išsaugokite failą ir iš naujo paleiskite HAProxy naudodami šią komandą:

sudo systemctl restart haproxy

Jei paleisties metu gaunate įspėjimus ar klaidų pranešimus, patikrinkite jų konfigūraciją ir įsitikinkite, kad sukūrėte visus reikiamus failus ir aplankus, tada bandykite iš naujo paleisti.

Sąrankos testavimas

Kai HAProxy bus sukonfigūruotas ir paleistas, naršyklėje atidarykite viešąjį apkrovos balansavimo serverio IP adresą ir patikrinkite, ar tinkamai prisijungėte prie užpakalinės sistemos. Konfigūracijos parametras stats uri sukuria statistikos puslapį nurodytu adresu.

http://load_balancer_public_ip/haproxy?stats

Kai įkeliate statistikos puslapį, visi serveriai rodomi žaliai, tada sąranka buvo sėkminga!

HAProxy apkrovos balansavimo priemonės įdiegimas CentOS

Statistikos puslapyje yra keletas naudingos informacijos, leidžiančios sekti žiniatinklio prieglobas, įskaitant pakilimo / prastovos laiką ir seansų skaičių. Jei serveris pažymėtas raudonai, įsitikinkite, kad serveris įjungtas ir kad galite jį siųsti iš apkrovos balansavimo įrenginio.

Jei apkrovos balansavimo priemonė nereaguoja, įsitikinkite, kad HTTP jungčių neužblokuoja ugniasienė. Taip pat įsitikinkite, kad HAProxy veikia naudodami toliau pateiktą komandą:

sudo systemctl status haproxy

Statistikos puslapio apsauga slaptažodžiu

Tačiau jei statistikos puslapis yra tiesiog pateiktas priekinėje dalyje, tada jį gali matyti visi, o tai gali būti netinkama idėja. Vietoj to galite priskirti jam pasirinktinį prievado numerį, pridėdami toliau pateiktą pavyzdį prie savo haproxy.cfg failo pabaigos. Pakeiskite Nick и slaptažodis už kažką saugaus:

listen stats
   bind *:8181
   stats enable
   stats uri /
   stats realm Haproxy Statistics
   stats auth username:password

Pridėję naują klausytojų grupę, pašalinkite seną statistikos uri nuorodą iš sąsajos grupės. Baigę išsaugokite failą ir iš naujo paleiskite HAProxy.

sudo systemctl restart haproxy

Tada dar kartą atidarykite apkrovos balansavimo priemonę naudodami naują prievado numerį ir prisijunkite naudodami vartotojo vardą ir slaptažodį, kuriuos nurodėte konfigūracijos faile.

http://load_balancer_public_ip:8181

Įsitikinkite, kad visi serveriai vis dar rodomi žaliai, tada atidarykite tik apkrovos balansavimo priemonės IP be jokių prievadų numerių naršyklėje.

http://load_balancer_public_ip/

Jei savo galiniuose serveriuose turite bent šiek tiek įvairių nukreipimo puslapių, pastebėsite, kad kiekvieną kartą iš naujo įkeldami puslapį gausite atsakymą iš kito pagrindinio kompiuterio. Galite išbandyti skirtingus balansavimo algoritmus konfigūracijos skyriuje arba patikrinti pilna dokumentacija.

Išvada: HAProxy Load Balancer

Sveikiname sėkmingai įdiegus HAProxy apkrovos balansavimo įrenginį! Net naudodami pagrindinę apkrovos balansavimo sąranką galite žymiai pagerinti savo žiniatinklio programos našumą ir pasiekiamumą. Šis vadovas yra tik įvadas į apkrovos balansavimą naudojant HAProxy, kuris gali daug daugiau, nei galima aprašyti greitosios sąrankos vadove. Rekomenduojame eksperimentuoti su įvairiomis konfigūracijomis plati dokumentacija, pasiekiamą HAProxy, tada pradėkite planuoti apkrovos balansavimą savo gamybos aplinkai.

Naudodami kelis pagrindinius kompiuterius, kad apsaugotumėte savo žiniatinklio paslaugą, nes apkrovos balansavimo priemonė vis tiek gali sugesti. Galite dar labiau pagerinti aukštą pasiekiamumą įdiegę slankųjį IP tarp kelių apkrovos balansavimo priemonių. Daugiau apie tai galite sužinoti mūsų straipsnis apie slankiuosius IP adresus „UpCloud“..

Plačiau apie kursą "Linux administratorius. Virtualizacija ir grupavimas“***

Šaltinis: www.habr.com

Добавить комментарий