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.
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..