Artikli tõlge on ettevalmistatud kursuse alguseks

Koormuse tasakaalustamine on levinud lahendus veebirakenduste horisontaalseks skaleerimiseks mitmetele hostidele, pakkudes kasutajatele ühte juurdepääsupunkti teenusele. 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 ja .

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 haproxyHAProxy 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 -yAllalaadimiseks kasutage allolevat käsku. Saate kontrollida, kas on saadaval uuem versioon, külastades .
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gzPärast allalaadimist pakkige failid lahti järgmise käsuga:
tar xzvf ~/haproxy.tar.gz -C ~/Liigume lahtipakkitud algkoodi kausta:
cd ~/haproxy-2.0.7Seejärel kompileerige programm vastavalt oma süsteemile:
make TARGET=linux-glibcJa lõpuks installige ise HAProxy:
sudo make installNüü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/statsLooge sümboolne link binaarfailide jaoks, et saaksite käivitada HAProxy käske tavalise kasutajana:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxyKui 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-reloadTe peate samuti lubama teenusel automaatselt süsteemi käivitamisel käivituda:
sudo chkconfig haproxy onKasutajate mugavuse suurendamiseks on soovitatav lisada uus kasutaja HAProxy käitamiseks:
sudo useradd -r haproxyPä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 --reloadKoormuse 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 , 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.cfgLisage 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 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 checkSee 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.cfgSeejä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 checkFrontend 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 haproxyKui 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?statsKui laadite statistika lehte ja kõik teie serverid kuvatakse rohelisena, on seadistus õnnestunud!

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 haproxyStatistika 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:passwordPärast uue kuulajate grupi lisamist eemaldage vana stats uri link esiküljelt. Lõpetamisel salvestage fail ja taaskäivitage HAProxy.
sudo systemctl restart haproxySeejä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:8181Veenduge, 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 .
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 , 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 .
Lisateave kursuse kohta ***
Allikas: habr.com
