Instaliranje HAProxy load balancera na CentOS

Prijevod članka pripremljen je uoči početka tečaja "Linux administrator. Virtualizacija i grupiranje"

Instaliranje HAProxy load balancera na CentOS

Balansiranje opterećenja uobičajeno je rješenje za vodoravno skaliranje web aplikacija na više hostova dok korisnicima pruža jedinstvenu točku pristupa usluzi. HAProxy jedan je od najpopularnijih softvera otvorenog koda za uravnoteženje opterećenja koji također pruža visoku dostupnost i proxy funkcionalnost.

HAProxy nastoji optimizirati korištenje resursa, povećati propusnost, smanjiti vrijeme odgovora i izbjeći preopterećenje bilo kojeg pojedinačnog resursa. Može se instalirati na razne distribucije Linuxa, kao što je CentOS 8, na koji ćemo se usredotočiti u ovom vodiču, kao i sustave Debian 8 и Ubuntu 16.

Instaliranje HAProxy load balancera na CentOS

HAProxy je posebno prikladan za web stranice s vrlo velikim prometom i stoga se često koristi za poboljšanje pouzdanosti i izvedbe konfiguracija web usluga s više poslužitelja. Ovaj vodič opisuje korake za postavljanje HAProxy kao balansera opterećenja na CentOS 8 cloud hostu, koji zatim usmjerava promet na vaše web poslužitelje.

Kao preduvjet za najbolje rezultate, trebali biste imati najmanje dva web poslužitelja i poslužitelj za uravnoteženje opterećenja. Web poslužitelji moraju pokretati barem osnovnu web uslugu kao što je nginx ili httpd kako bi se testiralo balansiranje opterećenja između njih.

Instaliranje HAProxy na CentOS 8

Budući da je HAProxy aplikacija otvorenog koda koja se brzo razvija, distribucija koja vam je dostupna u standardnim CentOS repozitoriju možda nije najnovija verzija. Da biste saznali trenutnu verziju, pokrenite sljedeću naredbu:

sudo yum info haproxy

HAProxy uvijek nudi tri stabilne verzije na izbor: dvije najnovije podržane verzije i treću, stariju verziju koja još uvijek prima kritična ažuriranja. Uvijek možete provjeriti najnoviju stabilnu verziju navedenu na web stranici HAProxy i zatim odlučiti s kojom verzijom želite raditi.

U ovom ćemo vodiču instalirati najnoviju stabilnu verziju 2.0, koja još nije bila dostupna u standardnim spremištima u vrijeme pisanja vodiča. Morat ćete ga instalirati iz izvornog izvora. Ali prvo provjerite jeste li ispunili potrebne uvjete za preuzimanje i kompajliranje programa.

sudo yum install gcc pcre-devel tar make -y

Preuzmite izvorni kod pomoću donje naredbe. Možete provjeriti je li dostupna novija verzija na HAProxy stranica za preuzimanje.

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

Nakon završetka preuzimanja, izdvojite datoteke pomoću naredbe u nastavku:

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

Idite u raspakirani izvorni direktorij:

cd ~/haproxy-2.0.7

Zatim kompajlirajte program za vaš sustav:

make TARGET=linux-glibc

I na kraju, instalirajte sam HAProxy:

sudo make install

HAProxy je sada instaliran, ali zahtijeva neke dodatne manipulacije da bi radio. Nastavimo s postavljanjem softvera i usluga u nastavku.

Postavljanje HAProxy za vaš poslužitelj

Sada dodajte sljedeće direktorije i statističku datoteku za HAProxy unose:

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

Napravite simboličku vezu za binarne datoteke kako biste mogli pokretati HAProxy naredbe kao obični korisnik:

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

Ako želite dodati proxy vašem sustavu kao uslugu, kopirajte haproxy.init datoteku iz primjera u vaš /etc/init.d direktorij. Uredite dopuštenja za datoteke tako da se skripta može pokrenuti, a zatim ponovno pokrenite systemd 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

Također morate dopustiti automatsko ponovno pokretanje usluge kada se sustav pokrene:

sudo chkconfig haproxy on

Radi praktičnosti, također se preporučuje dodati novog korisnika za pokretanje HAProxy:

sudo useradd -r haproxy

Nakon toga možete ponovno provjeriti broj instalirane verzije pomoću sljedeće naredbe:

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

U našem slučaju, verzija bi trebala biti 2.0.7, kao što je prikazano u gornjem primjeru izlaza.

Konačno, zadani vatrozid u CentOS-u 8 prilično je restriktivan za ovaj projekt. Upotrijebite sljedeće naredbe za dopuštanje potrebnih usluga i resetiranje vatrozida:

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

Postavljanje balansera opterećenja

Postavljanje HAProxyja prilično je jednostavan postupak. U biti, sve što trebate učiniti je reći HAProxyju koje veze treba slušati i gdje ih treba prenijeti.

To se postiže stvaranjem konfiguracijske datoteke /etc/haproxy/haproxy.cfg s definiranim postavkama. Možete pročitati o opcijama konfiguracije HAProxy na stranici dokumentacijeako želite saznati više o tome.

Balansiranje opterećenja na transportnom sloju (sloj 4)

Počnimo s osnovnim postavkama. Stvorite novu konfiguracijsku datoteku, na primjer pomoću vi naredbom ispod:

sudo vi /etc/haproxy/haproxy.cfg

Dodajte sljedeće odjeljke u datoteku. Zamijeniti ime_poslužitelja što bi trebalo pozvati vaše poslužitelje na stranici statistike i privatni_ip — privatne IP adrese poslužitelja na koje želite usmjeriti web promet. Možete provjeriti privatne IP adrese na upravljačkoj ploči UpCloud i na kartici Privatna mreža na jelovniku mreža.

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

Ovo definira balanser opterećenja prijenosnog sloja (sloj 4) izvana nazvan http_front slušajući na portu 80, koji zatim prosljeđuje promet zadanoj pozadini pod nazivom http_back. Dodatna statistika /haproxy?stats povezuje stranicu statistike s navedenom adresom.

Razni algoritmi za uravnoteženje opterećenja.

Određivanje poslužitelja u pozadinskom odjeljku omogućuje HAProxyju korištenje tih poslužitelja za balansiranje opterećenja prema kružnom algoritmu kada je to moguće.

Algoritmi za balansiranje koriste se za određivanje kojem se poslužitelju u pozadini prosljeđuje svaka veza. Evo nekih od korisnih opcija:

  • Roundrobin: Svaki se poslužitelj koristi redom prema svojoj težini. Ovo je najglađi i najpravedniji algoritam kada vrijeme obrade poslužitelja ostaje ravnomjerno raspoređeno. Ovaj algoritam je dinamičan i omogućuje podešavanje težine poslužitelja u hodu.
  • Leastconn: odabran je poslužitelj s najmanje veza. Round robin se izvodi između poslužitelja s istim opterećenjem. Korištenje ovog algoritma preporučuje se za duge sesije kao što su LDAP, SQL, TSE itd., ali nije baš prikladan za kratke sesije kao što je HTTP.
  • Prvi: Prvi poslužitelj s dostupnim utorima za vezu prima vezu. Poslužitelji se biraju od najnižeg brojčanog ID-a do najvišeg, što prema zadanim postavkama odgovara položaju poslužitelja u farmi. Kada poslužitelj dosegne maxconn, koristi se sljedeći poslužitelj.
  • Izvor: Izvorna IP adresa raspršuje se i dijeli s ukupnom težinom pokrenutih poslužitelja kako bi se odredilo koji će poslužitelj primiti zahtjev. Na ovaj način će ista IP adresa klijenta uvijek ići na isti poslužitelj, dok poslužitelji ostaju isti.

Postavljanje balansiranja opterećenja na razini aplikacije (sloj 7)

Druga dostupna opcija je konfiguracija balansera opterećenja za rad na aplikacijskom sloju (sloj 7), što je korisno kada se dijelovi vaše web aplikacije nalaze na različitim hostovima. To se može postići prigušivanjem prijenosa veze, na primjer putem URL-a.

Otvorite konfiguracijsku datoteku HAProxy pomoću uređivača teksta:

sudo vi /etc/haproxy/haproxy.cfg

Zatim konfigurirajte prednji i pozadinski segment prema primjeru u nastavku:

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

Sučelje izjavljuje ACL pravilo pod nazivom url_blog koje se primjenjuje na sve veze sa stazama koje počinju s /blog. Use_backend specificira da veze koje odgovaraju uvjetu url_blog treba posluživati ​​backend pod nazivom blog_back, a svim ostalim zahtjevima rukuje zadani backend.

Na pozadinskoj strani, konfiguracija postavlja dvije grupe poslužitelja: http_back, kao prije, i novu nazvanu blog_back, koja upravlja vezama na example.com/blog.

Nakon promjene postavki, spremite datoteku i ponovno pokrenite HAProxy pomoću sljedeće naredbe:

sudo systemctl restart haproxy

Ako tijekom pokretanja primite bilo kakva upozorenja ili poruke o pogrešci, provjerite postoje li u vašoj konfiguraciji i provjerite jeste li stvorili sve potrebne datoteke i mape, a zatim pokušajte ponovo pokrenuti.

Testiranje postavki

Nakon što je HAProxy konfiguriran i pokrenut, otvorite javnu IP adresu poslužitelja za balansiranje opterećenja u pregledniku i provjerite jeste li ispravno spojeni na pozadinu. Parametar stats uri u konfiguraciji stvara stranicu statistike na navedenoj adresi.

http://load_balancer_public_ip/haproxy?stats

Kada učitate stranicu sa statistikom, ako svi vaši poslužitelji pokažu zeleno, tada je postavljanje bilo uspješno!

Instaliranje HAProxy load balancera na CentOS

Stranica sa statistikom sadrži neke korisne informacije za praćenje vaših web hostova, uključujući vrijeme rada/prekida rada i broj sesija. Ako je poslužitelj označen crveno, provjerite je li poslužitelj uključen i možete li ga pingati sa stroja za balansiranje opterećenja.

Ako vaš balanser opterećenja ne reagira, provjerite ne blokira li HTTP veze vatrozid. Također provjerite radi li HAProxy pomoću donje naredbe:

sudo systemctl status haproxy

Zaštita stranice statistike lozinkom

Međutim, ako je stranica sa statistikom jednostavno navedena na prednjem dijelu, tada je otvorena za sve, što možda nije dobra ideja. Umjesto toga, možete mu dodijeliti prilagođeni broj priključka dodavanjem primjera u nastavku na kraj datoteke haproxy.cfg. Zamijeniti korisničko ime и lozinka za nešto sigurno:

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

Nakon dodavanja nove grupe slušatelja, uklonite staru vezu stats uri iz grupe sučelja. Kada završite, spremite datoteku i ponovno pokrenite HAProxy.

sudo systemctl restart haproxy

Zatim ponovno otvorite balanser opterećenja s novim brojem priključka i prijavite se s korisničkim imenom i lozinkom koje ste naveli u konfiguracijskoj datoteci.

http://load_balancer_public_ip:8181

Uvjerite se da svi vaši poslužitelji i dalje pokazuju zeleno, a zatim otvorite samo IP balansera opterećenja bez brojeva portova u svom pregledniku.

http://load_balancer_public_ip/

Ako imate barem neke različite odredišne ​​stranice na svojim pozadinskim poslužiteljima, primijetit ćete da svaki put kada ponovno učitate stranicu dobivate odgovor od drugog hosta. Možete isprobati različite algoritme balansiranja u odjeljku konfiguracije ili provjeriti kompletna dokumentacija.

Zaključak: HAProxy Load Balancer

Čestitamo na uspješnom postavljanju balansera opterećenja HAProxy! Čak i s osnovnom postavkom za uravnoteženje opterećenja, možete značajno poboljšati izvedbu i dostupnost svoje web aplikacije. Ovaj vodič samo je uvod u balansiranje opterećenja s HAProxyjem, koji je sposoban za puno više od onoga što se može pokriti u vodiču za brzo postavljanje. Preporučujemo eksperimentiranje s različitim konfiguracijama pomoću opsežna dokumentacija, dostupan HAProxyju, a zatim počnite planirati uravnoteženje opterećenja za svoju proizvodnu okolinu.

Korištenjem višestrukih hostova za zaštitu vaše web-usluge s prostorom, sam balanser opterećenja može i dalje predstavljati točku kvara. Visoku dostupnost možete dodatno poboljšati instaliranjem pomične IP adrese između više balansera opterećenja. Više o tome možete saznati u našem članak o pokretnim IP adresama na UpCloudu.

Više o tečaju "Linux administrator. Virtualizacija i grupiranje"***

Izvor: www.habr.com

Dodajte komentar