Paigaldame HAProxy koormuse tasakaalustaja CentOS-ile

Artikli tõlge on ettevalmistatud kursuse alguseks „Linuxi administraator. Virtualiseerimine ja klasterdamine“

Paigaldame HAProxy koormuse tasakaalustaja CentOS-ile

Koormuse tasakaalustamine on levinud lahendus veebirakenduste horisontaalseks skaleerimiseks mitmetele hostidele, pakkudes kasutajatele ühte juurdepääsupunkti teenusele. HAProxy on üks populaarsemaid avatud lähtekoodiga koormuse tasakaalustamise programme, mis tagab ka kõrge kättesaadavuse ja proksimise funktsionaalsuse.

HAProxy püüab optimeerida ressursside kasutamist, maksimeerida läbilaskevõimet, minimeerida reageerimisaega ja vältida iga ressursi ülekoormamist. Seda saab paigaldada paljudele Linuxi jaotusele, näiteks CentOS 8, millele keskendume käesolevas juhendis, ja ka süsteemidesse Debian 8 ja Ubuntu 16.

Paigaldame HAProxy koormuse tasakaalustaja CentOS-ile

HAProxy sobib suurepäraselt kõrge liiklusega veebilehtedele ja seda kasutatakse sageli veebiteenuste mitme serveri konfiguratsioonide töökindluse ja jõudluse parandamiseks. Selles juhendis on toodud sammud HAProxy seadistamiseks pilv-hostingul CentOS 8, mis suunab seejärel liikluse teie veebiserveritele.

Parima tulemuse saavutamiseks peaks teil olema vähemalt kaks veebiserverit ja koormuse tasakaalustamise server. Veebiserveritel peaks olema jooksmas vähemalt põhitaseme veebiteenus, nagu nginx või httpd, et saaks kontrollida nende vahel olevat koormuse tasakaalustamist.

HAProxy installimine CentOS 8-l

Kuna HAProxy on kiiresti arenev avatud lähtekoodiga rakendus, võib CentOS-i tavarepos olev jaotamine olla mitte kõige uuem versioon. Praeguse versiooni teadmiseks käivitage järgmine käsk:

sudo yum info haproxy

HAProxy pakub alati kolme stabiilset versiooni: kahte uusimat toetatud versiooni ja kolmandat, vanemat versiooni, mis veel saab kriitilisi uuendusi. Saate alati kontrollida HAProxy veebisaidil, milline on viimane stabiilne versioon, ja otsustada, millise versiooniga soovite töötada.

Käesolevas juhendis paigaldame kõige uuema stabiilse versiooni 2.0, mis ei olnud kirjutamise ajal veel saadaval tavarepositooriumites. Peate selle installima algallikatest. Kuid kõigepealt kontrollige, kas teil on vajalikud tingimused programmi allalaadimiseks ja kompileerimiseks.

sudo yum install gcc pcre-devel tar make -y

Allalaadimiseks kasutage allolevat käsku. Saate 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 allalaadimist pakkige failid lahti järgmise käsuga:

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

Liigume lahtipakkitud algkoodi kausta:

cd ~/haproxy-2.0.7

Seejärel kompileerige programm vastavalt oma süsteemile:

make TARGET=linux-glibc

Ja lõpuks installige ise HAProxy:

sudo make install

Nüüd on HAProxy installitud, kuid selle toimimiseks on vajalikud veel mõned täiendavad toimingud. Jätkame tarkvara ja teenuste seadistamist allpool.

HAProxy seadistamine teie serverile

Nüüd lisage järgmised kataloogid ja statistika fail HAProxy salvestamiseks:

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äske tavalise kasutajana:

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

Kui soovite lisada selle teenusena süsteemi, kopeerige fail haproxy.init kaustast examples oma katalooge /etc/init.d. Muutke faili õigusi, et skript oleks käivitatav, ja seejärel laadige systemd demon uuesti:

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

Te peate samuti lubama teenusel automaatselt süsteemi käivitamisel käivituda:

sudo chkconfig haproxy on

Kasutajate mugavuse suurendamiseks on soovitatav lisada uus kasutaja HAProxy käitamiseks:

sudo useradd -r haproxy

Pärast seda saate uuesti kontrollida paigaldatud versiooni numbrit järgmise käsuga:

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

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

Lõpuks, CentOS 8 tulemüür on vaikimisi üsna range selle projekti jaoks. Lubage vajalikke teenuseid ja taaskäivitage tulemüür järgmiste käskudega:

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

Koormuse tasakaalustamine

HAProxy seadistamine on üsna lihtne protsess. Peamine on öelda HAProxy-le, milliseid ühendusi ta peab kuulama ja kuhu need edastada.

See toimub seadistamisfaili loomisega /etc/haproxy/haproxy.cfg, kuhu sisestate vajalikud seaded. Lisainformatsiooni leiate HAProxy konfiguratsiooniparameetrite kohta dokumentatsiooni lehelt, kui soovite sellest rohkem teada.

Koormuse tasakaalustamine transporditasandil (layer 4)

Alustame põhiseadistusega. Looge uus konfiguratsioonifail, näiteks kasutades vi järgmise käskluse abil:

sudo vi /etc/haproxy/haproxy.cfg

Lisage faili järgmised jaotised. Asendage server_name selle, mis peaks teie serverites statistikalehel kutsuma, ja private_ip — privaatsete IP-aadressidega serveritele, kuhu soovite veebiliiklust suunata. Saate kontrollida privaatseid IP-aadresse UpCloudi juhtpaneelil ja vahekaart Privaatne võrgu menüüs Võrk log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats timeout 30s user haproxy group haproxy daemondefaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000frontend http_front bind *:80 stats uri /haproxy?stats default_backend http_backbackend http_back balance roundrobin server server_name1 private_ip1:80 check server server_name2 private_ip2:80 check.

globaalne
   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ääratleb koormuse tasakaalustaja transporttasandil (layer 4) välise nimega http_front, mis kuulab pordil 80 ja suunab seejärel liikluse vaikimisi tagapaneelile nimega http_back. Täiendav statistika /haproxy?stats ühendab statistika lehe määratud aadressil.

Erinevad koormuse tasakaalustamise algoritmid.

Serveerivate serverite määramine tagapaneeli jaotises võimaldab HAProxy kasutada neid servereid koormuse tasakaalustamiseks vastavalt ringjärele (roundrobin) algoritmile, kui see on võimalik.

Balansseerimise algoritmid määravad, millisele taustaserverile iga ühendus suunatakse. Siin on mõned kasulikud valikud:

  • Roundrobin: iga serverit kasutatakse vaheldumisi vastavalt oma kaalule. See on sujuvaim ja õiglasem algoritm, kus serverite töötlusaeg on ühtlaselt jaotatud. See algoritm on dünaamiline, mis võimaldab serveri kaalu koheselt reguleerida.
  • Leastconn: valitakse server, kus on kõige vähem ühendusi. Ahnuse põhimõttel korjatakse serverite vahel, millel on sama koormus. Selle algoritmi kasutamine on soovitatav pikemate sessioonide, näiteks LDAP, SQL, TSE jms jaoks, kuid see ei sobi lühikeste sessioonide, nagu HTTP, jaoks eriti hästi.
  • First: esimene server, kus on vabad ühenduse kohad, saab ühenduse. Serverid valitakse madalamast numbrilisest identifikaatorist kõrgemani, mis vastab serveri vaikimisi asukohale farmis. Kui server saavutab väärtuse maxconn, kasutatakse järgmist serverit.
  • Allikas: Ressurside IP-aadress salvestatakse ja jagatakse käivitunud serverite üldkaaluga, et määrata, milline server saab päringu. Selline lähenemine tagab, et sama kliendi IP-aadress suunatakse alati samale serverile, samas kui serverid ise jäävad muutumatuks.

Rakenduslikul tasemel (layer 7) koormuse tasakaalustamise seadistamine

Teine saadaval olev võimalus on seadistada koormuse tasakaalustaja rakenduslikul tasemel (layer 7), mis on kasulik, kui teie veebirakenduse osad asuvad erinevates hostides. Seda saab teha ühenduste edastamise reguleerimise kaudu, näiteks URL-i alusel.

Avage HAProxy konfiguratsioonifail tekstiredaktoris:

sudo vi /etc/haproxy/haproxy.cfg

Seejärel seadistage frontend ja backend segmendid alloleva näite kohaselt:

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 määrab ACL-reegli nimega url_blog, mis kehtib kõigile ühendustele, mille teed algavad /blog. Use_backend määrab, et url_blog tingimustele vastavad ühendused tuleb teenindada backend'iga nimega blog_back, samas kui kõik teised päringud töödeldakse vaikimisi backend'i kaudu.

Backend'ist seadistus määrab kaks serverigruppi: http_back, nagu varem, ja uue, mida nimetatakse blog_back'iks, mis teenindab ühendusi example.com/blog.

Seadete muutmise järel salvestage fail ja taaskäivitage HAProxy järgmise käsu abil:

sudo systemctl restart haproxy

Kui käivitamisel kuulete teateid või vigade hoiatust, kontrollige konfiguratsiooni nende jaoks ja veenduge, et olete loonud kõik vajalikud failid ja kaustad, ja proovige seejärel uuesti taaskäivitada.

Seade testimine

Kui HAProxy on seadistatud ja töötas, avage koormuse tasakaalustaja avaliku IP-aadress brauseris ja kontrollige, kas olete backend'iga õigesti ühendatud. Konfiguratsioonis oleva stats uri parameeter genereerib statistika lehe määratud aadressil.

http://load_balancer_public_ip/haproxy?stats

Kui laadite statistika lehte ja kõik teie serverid kuvatakse rohelisena, on seadistus õnnestunud!

Paigaldame HAProxy koormuse tasakaalustaja CentOS-ile

Statistika leht sisaldab kasulikku teavet teie veebihostide jälgimiseks, sealhulgas tööaja/puudumise ja seansside arvu. Kui server on punasega märgitud, veenduge, et server on sisse lülitatud ja et saate seda koormustasakaalustaja masinast pingida.

Kui teie koormustasakaalustaja ei vasta, veenduge, et HTTP-ühendusi ei blokeeri tulemüür. Samuti kontrollige, et HAProxy töötab järgmise käsu abil:

sudo systemctl status haproxy

Statistika lehe kaitsmine parooliga

Kuid kui statistika lehte lihtsalt näidatakse frontendis, on see avalikult kättesaadav, mis ei pruugi olla kõige parem idee. Selle asemel võite määrata sellele oma pordi numbri, lisades järgmise näite oma failile haproxy.cfg. Asendage username ja password midagi turvalisega:

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

Pärast uue kuulajate grupi lisamist eemaldage vana stats uri link esiküljelt. Lõpetamisel salvestage fail ja taaskäivitage HAProxy.

sudo systemctl restart haproxy

Seejärel avage koormuse tasakaalustaja uuesti uue pordinumbriga ja logige süsteemi sisse kasutajanime ja parooliga, mille olete määranud konfiguratsiooni failis.

http://load_balancer_public_ip:8181

Veenduge, et kõik teie serverid kuvatakse endiselt roheliselt, ja avage oma brauseris ainult koormuse tasakaalustaja IP ilma portideta.

http://load_balancer_public_ip/

Kui teie sisemistel serveritel on vähemalt mõningane mitmekesisus sihtlehtedes, märkate, et iga kord, kui lehte uuendate, saadakse vastus erinevalt hostilt. Võite katsetada erinevaid tasakaalustamisalgoritme konfiguratsiooni jaotises või tutvuda täieliku dokumentatsiooniga.

Kokkuvõte: HAProxy koormuse tasakaalustaja

Palju õnne HAProxy koormuse tasakaalustaja edukaks seadistamiseks! Isegi baastaseme koormuse tasakaalustamisega saate oluliselt suurendada oma veebirakenduse jõudlust ja kättesaadavust. See juhend on vaid sissejuhatus koormuse tasakaalustamiseks HAProxy abil, mis suudab palju enamat, kui mida saab lühikeses seadistusjuhendis kirjeldada. Soovitame katsetada erinevate konfiguratsioonidega, kasutades ulatuslikku dokumentatsiooni, mis on saadaval HAProxy jaoks, seejärel alustada koormuse tasakaalustamise planeerimist teie tootmis keskkonnas.

Kasutades mitmeid hoste, et kaitsta oma veebiteenust varuressurssidega, võib ise koormuse tasakaalustaja endiselt olla tõrkepunkt. Saate veelgi suurendada kõrget kättesaadavust, seadistades ujuva IP-aadressi mitme koormuse tasakaalustaja vahel. Saate sellest rohkem teada meie ujuvate IP-aadresside artiklist UpCloudis.

Lisateave kursuse kohta „Linuxi administraator. Virtualiseerimine ja klasterdamine“***

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster