HAProxy balansiranje opterećenja između Nginx web poslužitelja

U ovom ćemo članku pokazati postavku planera. HAProxy za dva poslužitelja s instaliranim web poslužiteljem Nginx (može ga zamijeniti Apache). U svim se slučajevima CentOS koristi kao OS.

HAProxy - poslužiteljski softver koji omogućuje visoku dostupnost i uravnoteženje opterećenja za TCP i HTTP aplikacije, distribucijom dolaznih zahtjeva na nekoliko poslužitelja. HAProxy se koristi na mnogim popularnim resursima, uključujući cvrkut, Instagram, Github, Avito, Amazon i drugi.

HAProxy je instaliran na zasebnom poslužitelju koji prihvaća zahtjeve klijenta i preusmjerava ih na Nginx web poslužitelje. Opća arhitektura sustava prikazana je u nastavku..

sadržaj:

  • Konfiguriranje Nginx na pomoćnim poslužiteljima
  • Konfiguracija ravnoteže opterećenja HAProxy
  • Opcije konfiguracijske datoteke Haproxy.cfg
  • Zbirka statistike HAProxy

Konfiguriranje Nginx na pomoćnim poslužiteljima

Započnimo instaliranjem i konfiguriranjem Nginx-a na našim web poslužiteljima, između kojih će se opterećenje uravnotežiti. Instalirajte spremište EPEL-a i nginx koristeći yum:

#yum instaliraj epel-release -y
#yum instaliraj nginx -y

Izvodio sam instalaciju na dva poslužitelja odjednom, budući da su poslužitelji konfigurirani jedan na jedan (za paralelno izvršavanje naredbi na nekoliko poslužitelja, možete koristiti pdsh).

Nadalje u konfiguracijskim datotekama Nginx.conf Mi ističemo da poslužitelji trebaju obrađivati ​​zahtjeve samo od HaProxy poslužitelja i pomoćnih poslužitelja:

1. pomoćni poslužitelj:

poslužitelj poslušajte current_server_IP: 80 default_server; dopustiti IP_server_backend_server; dopustiti IP_haproxy; zanijekati sve; ime_poslužitelja _; root / usr / share / nginx / html; # Učitajte konfiguracijske datoteke za zadani blok poslužitelja. uključuju /etc/nginx/default.d/*.conf; lokacija /  

2. pomoćni poslužitelj:

poslužitelj poslušajte current_server_IP: 80 default_server; dopustiti IP_first_backend_server; dopustiti IP_haproxy; zanijekati sve; ime_poslužitelja _; root / usr / share / nginx / html; # Učitajte konfiguracijske datoteke za zadani blok poslužitelja. uključuju /etc/nginx/default.d/*.conf; lokacija /  

Konfiguracija nginx je standardna stvar koju smo upravo dodali slušaj IP poslužiteljima i zatvoren pristup svima osim našim poslužiteljima koji koriste direktive dopustiti i poreći.

Da bi web poslužitelj radio, morate otvoriti veze na vatrozidu kroz firewalld ili iptables:

# firewall-cmd - stalni -add-service = http
# firewall-cmd -reload

Provjerite test na bilo kojem od pomoćnih poslužitelja:

[root @ server ~] # curl IP_vtorogo_servera

 ovdje biste trebali dobiti html dokument 

Poslužitelj je dao standardnu ​​datoteku nginx indeksa, što znači da poslužitelji međusobno djeluju.

Radi praktične provjere, promijenio sam sadržaj indeksne datoteke na svakom pomoćnom poslužitelju, tako da tijekom testiranja mogu jasno vidjeti u pregledniku koji poslužitelj je obradio zahtjev.

Datoteka indeksa nginx nalazi se u / usr / share / nginx / html /.

Konfiguracija ravnoteže opterećenja HAProxy

Počnimo instalirati i konfigurirati HAProxy na poslužitelju, koji će se koristiti kao balans opterećenja.

Instalirajte HaProxy i izvršite osnovne postavke za balans.

#yum instaliraj epel-release -y

#yum instalirajte haproxy -y

Učitani dodaci: najbržimirror Učitavanje brzina ogledala iz predmemoriranog datoteke e-pošte / x86_64 / metalink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ transakcija Instalacija: haproxy-1.5.18-9.el7.x86_64 1/1 Provjera: haproxy-1.5.18-9.el7.x86_64 1/1 Instalirano: haproxy.x86_64 0: 1.5.18-9.el7 Dovršeno! 

Da biste omogućili HaProxy, morate dodati Omogućeno = 1 podnijeti / etc / default / haproxy:

#nano / etc / default / haproxy

Krenimo sada na samu postavku HaProxy-a. U našoj najjednostavnijoj konfiguraciji, poslužitelj za uravnoteženje obradit će sve http zahtjeve i poslati ih zauzvrat na pomoćne poslužitelje.

#nano /etc/haproxy/haproxy.cfg

log / dev / log local0 chroot / var / lib / haproxy pidfile /var/run/haproxy.pid maxconn 4000 korisnik haproxy grupa haproxy daemon zadane postavke http log globalna opcija httplog opcija Redispatch retries 3 timeout http-zahtjev 10s timeout queue 1m timeout connect 10s timeout klijent 1m timeout poslužitelj 1m timeout http-Keep-Live 10s timeout provjera 10s maxconn 3000 frontend www bind balancer IP: 80 default_backend nginx_pool backend nginx_pool balance roundrobin mode http server web1 first_backend_server IP: 80 check server web2 80 second_backend_server: 

Nakon spremanja konfiguracije, provjerite sintaksu sa naredbom:

#haproxy -f /etc/haproxy/haproxy.cfg -c

Ako je sve u redu, dobit ćete sličan rezultat:

Konfiguracijska datoteka je važeća

Nakon toga, morate ponovo pokrenuti HaProxy i dodati njegovo pokretanje CentOS. A također otvorite potrebna pravila na vatrozidu.

#systemctl ponovno pokrenite haproxy

#systemctl omogućuju haproksi

# firewall-cmd -permanentni -add-service = http

# firewall-cmd -reload

Ovim se završava postavljanje balansa, provjerite rezultat otvaranjem IP poslužitelja s HaProxy u pregledniku:

Kao što vidite, oba poslužitelja dostavljala su sadržaj zauzvrat, balans radi.

Opcije konfiguracijske datoteke Haproxy.cfg

Razmotrimo glavne primjere algoritama rada HaProxy:

  • roundrobin - zadani algoritam šalje zauzvrat zahtjeve poslužiteljima. U našem primjeru koristili smo upravo takvu metodu;
  • leastconn - odabire poslužitelj s najmanje brojem aktivnih veza. Preporučuje se prijava za projekte u kojima sjednice mogu biti uključene duže vrijeme;
  • izvor - odabire poslužitelj na temelju hash-a izgrađenog na temelju IP korisnika. U ovom načinu rada isti će klijent uvijek pristupiti istom poslužitelju ako njegov IP ostane nepromijenjen;

Provjerimo neke parametre u konfiguracijskoj datoteci.

blok globalan:

  • zapisnik - držite zapisnik / dev / log spremanje local0 u "objekt";
  • chroot - sigurnosne postavke koje zaključavaju HAProxy u specificiranom direktoriju;
  • maxconn - maksimalni broj konkurentskih veza po procesu;
  • korisnik - korisnik u ime koga će se program pokrenuti;
  • grupa - korisnička grupa u ime koje će se program pokrenuti;
  • daemon - započnite postupak kao daemon.

blok zadani. Ovaj odjeljak opisuje zadane postavke za sve ostale odjeljke koji slijede:

  • dnevnik - označava koji dnevnik zapisati (u ovom slučaju globalno znači da se koriste parametri navedeni u globalnom odjeljku);
  • način - postavlja protokol interakcije, uzima jednu od vrijednosti: tcp, http ili zdravlje;
  • pokušaja - broj pokušaja povezivanja s poslužiteljem u slučaju kvara;
  • opcija httplog - format zapisa, u slučaju korištenja HAProxyja za pristupanje HTTP zahtjevima;
  • opcija ponovne otpreme - Omogućuje programu da prekine i dodijeli sesiju u slučaju kvara na poslužitelju;
  • contimeout - maksimalno vrijeme za čekanje na uspješnu vezu s poslužiteljem.

Postoji i veliki broj parametara povezanih s različitim vremenskim ograničenjima.

Zbirka statistike HAProxy

Dodajte blok statistike u konfiguracijsku datoteku:

statistika slušanja veza: 10001 statistika omogućuje statistiku uri / haproxy_stats statistika autor: admin 

Opis:

  • vezati - luka na kojoj će raditi pregled statističkih podataka;
  • statistika omogućiti - uključuje izvješća sa statistikama;
  • statistika uri - postavljanje adrese stranice statistike;
  • statistika auth - prijava i zaporka.
Možete odrediti bilo koji odgovarajući luka za vas ako je navedeno u članku zauzeto ili nije prikladno za vas.

Također, kako bi radili naši haproxy_stats, morate otvoriti prethodno navedeni ulaz na vatrozidu:

vatrozid-cmd - stalni -add-port = 10001 / tcp

firewall-cmd -reload

Da biste vidjeli izvješća o radu HAProxy-a, morate kliknuti na vezu:

http: // ime domaćina_haproksi: 10001 / haproxy_stats

Otvorite adresu preglednika u pregledniku i počnite s neželjenom poštu F5. Statistika na navedenom linku se mijenja, uslužni program radi.

Time se završava naša postava. U članku smo ispitali osnovnu konfiguraciju HaProxy-a. U našem dizajnu, poslužitelj za uravnoteživanje opterećenja HaProxy postaje jedna točka neuspjeha. Da biste povećali toleranciju greške u konfiguraciji, možete dodati drugi HaProxy poslužitelj i provjeriti dostupnost između poslužitelja koristeći Keepalived. Dobivate nešto takvo.

Postoji mnogo više opcija za korištenje HAProxy modula i uvijek možete pronaći primjenu u njemu..