Paigaldame HAProxy koormuse tasakaalustaja CentOS-ile

Artikli tõlge on koostatud kursuse alguse eelõhtul «Linuxi administraator. Virtualiseerimine ja klasterdamine»

Paigaldame HAProxy koormuse tasakaalustaja CentOS-ile

Koormuse tasakaalustamine on levinud lahendus veebi rakenduste horisontaalseks skaleerimiseks mitmel hostil, pakkudes kasutajatele ühtset juurdepääsupunkti teenusele. Edasi läks kliendi päring HAProxy-sse, mis lahendas järgmised ülesanded: on üks populaarsemaid avatud lähtekoodiga koormuse tasakaalustamise programme, mis tagab ka kõrge k availability ja edastamise funktsionaalsuse.

HAProxy püüab optimeerida ressursside kasutamist, maksimeerida läbilaskevõimet, minimeerida vastamisaega ja vältida iga üksiku ressursi ülekoormust. Seda saab installida paljudes Linuxi distributsioonides, nagu CentOS 8, millele keskendume selles juhendis, samuti süsteemides Debian 8 ja Ubuntu 16.

Paigaldame HAProxy koormuse tasakaalustaja CentOS-ile

HAProxy sobib eriti hästi väga suure liiklusega veebisaitidele ja seda kasutatakse seetõttu sageli veebiteenuste konfiguratsioonide usaldusväärsuse ja tõhususe parandamiseks mitme serveriga. Selles juhendis on esitatud sammud HAProxy seadistamiseks koormuse tasakaalustajana pilvehostis CentOS 8, mis suunab seejärel liikluse teie veebiserveritesse.

Parima tulemuse saavutamiseks on vajalik, et teil oleks vähemalt kaks veebiserverit ja koormuse tasakaalustamise server. Veebiserverites peab olema käivitatud vähemalt elementaarne veebi teenus, nagu nginx või httpd, et saaks testida koormuse tasakaalustamist nende vahel.

HAProxy installimine CentOS 8-s

Kuna HAProxy on kiiresti arenev avatud lähtekoodiga rakendus, võib CentOSi standardsetes hoidlates olev distributsioon olla mitte kõige uuem versioon. Praeguse versiooni teada saamiseks käivitage järgmine käsk:

sudo yum info haproxy

HAProxy pakub alati kolme stabiilset versiooni: kahte viimast toetatavat versiooni ja kolmandat, vanemat versiooni, mis saab endiselt kriitilisi uuendusi. Saate alati kontrollida kõige uuemat stabiilset versiooni, mis on märgitud HAProxy veebilehel, ja seejärel otsustada, millise versiooniga soovite töötada.

Selles juhendis installime kõige värskema stabiilse versiooni 2.0, mis ei olnud kirjutamise hetkel standardsetes hoidlates saadaval. Peate selle installima algallikast. Kuid esmalt kontrollige, kas olete täitnud vajalikud nõuded programmi allalaadimiseks ja kompileerimiseks.

sudo yum install gcc pcre-devel tar make -y

Allalaadimiseks kasutage allolevat käsku. Võite kontrollida, kas on saadaval uuem versioon, külastades HAProxy allalaadimise lehte.

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

Pärast allalaadimise lõppemist vallandage failid alloleva käsu abil:

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

Liikuge avatud katalooge allikatega:

cd ~/haproxy-2.0.7

Seejärel kompileerige programm oma süsteemi jaoks:

make TARGET=linux-glibc

Ja lõpuks installige ise HAProxy:

sudo make install

Nüüd on HAProxy installitud, kuid selle tööks on vajalikud mõned lisamanipulatsioonid. Jätkame allpool tarkvara ja teenuste seadistamist.

HAProxy seadistamine teie serveri jaoks

Lisage nüüd järgmised kataloogid ja statistika faili HAProxy jaoks:

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

Looge sümboolne link binaarfailide jaoks, et saaksite käivitada HAProxy käsud tavakasutajana:

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

Kui soovite lisada vahekäigu teenuse süsteemi, kopeerige fail haproxy.init examples kaustast oma katalooge /etc/init.d. Muutke faili õigusi, et skript saaks käivituda, ja seejärel taaskäivitage systemd daemon:

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

Teil on samuti vajalik lubada teenusel automaatne taaskäivitamine süsteemi käivitamisel:

sudo chkconfig haproxy on

Mugavuse huvides on soovitatav lisada ka uus kasutaja HAProxy käitamiseks:

sudo useradd -r haproxy

Pärast seda saate veel kord kontrollida installitud versiooni numbrit järgmise käsu abil:

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

Meie puhul peaks versioon olema 2.0.7, nagu näidatud eespoolt väljundis.

Lõpuks on CentOS 8 tulemüür projekti jaoks vaikimisi üsna piirav. Kasutage järgmisi käske, et lubada vajalikud teenused ja taaskäivitada tulemüür:

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

Koormuse tasakaalu seadistamine

HAProxy seadistamine on üsna lihtne protsess. Õieti on kõik, mida peate tegema, öelda HAProxy'le, milliseid ühendusi ta peab kuulama ja kuhu need suunata.

See toimub konfiguratsioonifaili loomise kaudu /etc/haproxy/haproxy.cfg, kus on määravad sätted. Kui soovite sellest rohkem teada, saate lugeda HAProxy konfiguratsiooniparameetrite kohta dokumentatsiooni lehelt, kui soovite sellest rohkem teada.

Koormuse tasakaalustamine transport-tasandil (layer 4)

Alustame põhi seadistusega. Looge uus konfiguratsioonifail, näiteks kasutades vi järgmise käsuga:

sudo vi /etc/haproxy/haproxy.cfg

Lisage faili järgmised osad. Asendage server_name sellega, mis peaks teie serverite statistika lehel olema, ja private_ip — privaatsete IP-aadressidega serveritest, kuhu soovite veebiliiklust suunata. Saate kontrollida privaatseid IP-aadresse UpCloudi juhtpaneelil ja vahekaardil Privaatne võrk menüüs Võrk.

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

See määrab transport-tasandi koormuse tasakaalu, mille välisnimi on http_front, mis kuulab porti 80 ja suunab seejärel liikluse vaikebäkendi poole nimega http_back. Täiendav statistika /haproxy?stats ühendab statistika lehe antud aadressil.

Mitmed koormuse tasakaalu algoritmid.

Serverite määramine tagaküljel võimaldab HAProxy'l kasutada neid servereid koormuse tasakaalustamiseks vastavalt ringmängu algoritmile, kui see on võimalik.

Koormuse tasakaalustamise algoritmid määravad, millisest serverist tagaküljel edastatakse iga ühendus. Siin on mõned kasulikud valikud:

  • Ringmäng (Roundrobin): iga serverit kasutatakse järjestikku vastavalt oma kaalule. See on sujuvaim ja õiglasim algoritm, kui serverite töötlemise aeg jääb ühtlaselt hajutatuks. See algoritm on dünaamiline, võimaldades serveri kaalu kohapeal reguleerida.
  • Vähem ühendusi (Leastconn): valitakse server, millel on kõige vähem ühendusi. Tsükliline läbimine toimub serverite vahel, millel on sama koormus. Selle algoritmi kasutamine on soovitatav pikaajaliste seansside jaoks, nagu LDAP, SQL, TSE jne, kuid see ei sobi lühiajaliste seansside, nagu HTTP, jaoks.
  • Esimene: esimene server, kus on saadaval ühenduste slutsid, saab ühenduse. Serverid valitakse madalaimast numbrilisest tuvastajast kõrgeimani, mis vastab vaikimisi serveri positsioonile farmis. Kui server saavutab maxconn väärtuse, kasutatakse järgmist serverit.
  • Allikas: Allika IP-aadress hashitakse ja jagatakse koos käivitatud serverite kogukaaluga, et määrata, milline server saab päringu. Seega antakse sama kliendi IP-aadress alati samale serverile, kui serverid jäävad muutumatuks.

Rakendustasandi (layer 7) koormuse jaotamise seadistamine

Veel üks võimalus on seadistada koormuse jaotur töötama rakendustasandil (layer 7), mis on kasulik, kui teie veebirakenduse osad asuvad erinevates hostides. Seda saab saavutada ühenduste edastamise reguleerimise kaudu, näiteks URL-i alusel.

Avage HAProxy konfiguratsioonifail tekstiredaktoriga:

sudo vi /etc/haproxy/haproxy.cfg

Seejärel seadistage frontend ja backend segmentide vastavalt allpool olevale näitele:

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 kuulutab välja ACL reegli nimega url_blog, mis kehtib kõigi ühenduste kohta, mille teed algavad /blog. Use_backend määrab, et url_blog tingimusele vastavad ühendused peavad teenindama blog_back nime all oleval backendil, samas kui kõik ülejäänud päringud töödeldakse vaikimisi backendiga.

Backend'i küljelt seadistus määrab kaks serverigruppi: http_back, nagu enne, ja uue, nimega blog_back, mis teenindab ühendusi aadressiga example.com/blog.

Pärast seadete muutmist salvestage fail ja taaskäivitage HAProxy järgmise käsuga:

sudo systemctl restart haproxy

Kui käivitamisel ilmnevad hoiatused või veateated, kontrollige nende olemasolu konfiguratsioonis ja veenduge, et olete loonud kõik vajalikud failid ja kaustad, seejärel proovige uuesti taaskäivitada.

Seadistuse testimine

Kui HAProxy on seadistatud ja töötav, avage koormuse tasakaalustaja avalik IP-aadress brauseris ja kontrollige, kas olete korralikult ühendatud tagaplaaniga. Konfiguratsiooni stats uri parameeter genereerib statistika lehe antud aadressil.

http://load_balancer_public_ip/haproxy?stats

Kui laadite statistika lehte ja kõik teie serverid kuvatakse rohelisega, siis seadistus on olnud edukas!

Paigaldame HAProxy koormuse tasakaalustaja CentOS-ile

Statistika leht sisaldab kasulikku teavet teie veebihostide jälgimiseks, sealhulgas töö- ja seiskamisaja ning seansside arvu. Kui server on punasega märgitud, veenduge, et server on sisse lülitatud ja et saate seda koormuse tasakaalustajast pingida.

Kui teie koormuse tasakaalustaja ei reageeri, veenduge, et tulemüür ei blokeeri HTTP-ühendusi. Veenduge ka, et HAProxy töötab järgmise käsu abil:

sudo systemctl status haproxy

Statistika lehe kaitsmine parooliga

Kuid kui statistika leht on lihtsalt front-endis määratud, on see avalikkusele avatud, mis ei pruugi olla väga hea mõte. Selle asemel võite määrata sellele oma sadama numbri, lisades järgmise näite oma haproxy.cfg faili lõppu. Asendage username ja parool millegi turvalisega:

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

Pärast uue kuulamisrühma lisamist eemaldage vana link stats uri front-end rühmast. Kui olete lõpetanud, salvestage fail ja taaskäivitage HAProxy.

sudo systemctl restart haproxy

Avage seejärel koormuse tasakaalustaja uue sadama numbriga ja logige sisse kasutajanime ja parooliga, mille määrasite konfiguratsioonifailis.

http://load_balancer_public_ip:8181

Veenduge, et kõik teie serverid kuvatakse endiselt rohelisega, seejärel avage ainult koormuse tasakaalustaja IP-aadress ilma sadama numbriteta oma brauseris.

http://load_balancer_public_ip/

Kui teie siseteenustes on vähemalt mingi valik sihtlehti, märkate, et iga kord, kui lehte värskendate, saate vastuse erinevalt hostilt. Võite proovida erinevaid tasakaalustusalgoritme konfiguratsiooni jaotises või tutvuda täieliku dokumentatsiooniga.

Järeldus: HAProxy koormustasakaalustaja

Palju õnne HAProxy koormustasakaalustaja edukalt seadistamise puhul! Juba algse koormustasakaalu seadistusega saate oluliselt parandada oma veebirakenduse jõudlust ja kättesaadavust. See juhend on vaid sissejuhatus koormustasakaalu seadistamiseks HAProxy abil, mis suudab palju rohkemat, kui on võimalik lühikeses seadistusjuhendis kirjeldada. Soovitame katsetada erinevate konfiguratsioonidega koos ulatusliku dokumentatsiooniga, mis on saadaval HAProxy jaoks, ja seejärel alustada koormustasakaalu planeerimist oma tootmiskeskkonnas.

Kas kasutate mitmeid hoste oma veebiteenuse kaitsmiseks varuvõimsuse abil, võib koormustasakaalustaja ikkagi olla rikke punkt. Saate veelgi suurendada kõrget kättesaadavust, seadistades hõljuva IP-aadressi mitme koormustasakaalustaja vahel. Rohkem teavet selle kohta leiate meie hõljuvate IP-aadresside artiklist UpCloudis.

Rohkem kursusest «Linuxi administraator. Virtualiseerimine ja klasterdamine»***

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster