HAProxy uravnavanje obremenitve med spletnimi strežniki Nginx

V tem članku bomo prikazali nastavitev planerja. HAProksi za dva strežnika z nameščenim spletnim strežnikom Nginx (lahko ga nadomesti Apache). V vseh primerih se kot operacijski sistem uporablja CentOS.

HAProxy - strežniška programska oprema za zagotavljanje visoke razpoložljivosti in izravnave obremenitev za TCP in HTTP aplikacije z distribucijo dohodnih zahtev na več strežnikov. HAProxy se uporablja na številnih priljubljenih virih, tudi Twitter, Instagram, Github, Avito, Amazonka in drugi.

HAProxy je nameščen na ločenem strežniku, ki sprejema zahteve strank in jih preusmeri na spletne strežnike Nginx. Splošna arhitektura sistema je predstavljena spodaj..

Vsebina:

  • Konfiguriranje Nginx na zalednih strežnikih
  • Konfiguracija HAProxy ravnotežja obremenitve
  • Možnosti konfiguracijske datoteke Haproxy.cfg
  • Zbiranje statistike HAProxy

Konfiguriranje Nginx na zalednih strežnikih

Začnimo z namestitvijo in konfiguriranjem Nginx-a na naših spletnih strežnikih, med katerimi bo obremenitev uravnotežena. Namestite shrambo EPEL in nginx s pomočjo yum:

#yum namestite epel-release -y
#yum namestite nginx -y

Namestitev sem izvedel na dva strežnika hkrati, saj sta strežnika konfigurirana ena proti ena (za vzporedno izvajanje ukazov na več strežnikih lahko uporabite pdsh).

Nadalje v konfiguracijskih datotekah nginx.konf Poudarjamo, da bi strežniki morali obdelati zahteve le s strežnika HaProxy in zalednih strežnikov:

1. nadomestni strežnik:

strežnik poslušaj current_server_IP: 80 default_server; dovoli IP_server_backend_server; dovolite IP_haproxy; zanikati vse; ime strežnika _; root / usr / share / nginx / html; # Naložite konfiguracijske datoteke za privzeti blok strežnika. vključujejo /etc/nginx/default.d/*.conf; lokacija /  

2. zaledni strežnik:

strežnik poslušaj current_server_IP: 80 default_server; dovoli IP_first_backend_server; dovolite IP_haproxy; zanikati vse; ime strežnika _; root / usr / share / nginx / html; # Naložite konfiguracijske datoteke za privzeti blok strežnika. vključujejo /etc/nginx/default.d/*.conf; lokacija /  

Konfiguracija nginx je standardna, pravkar smo jo dodali poslušaj IP strežniki in zaprt dostop vsem, razen našim strežnikom, ki uporabljajo direktive dovoli in zanikati.

Da bi spletni strežnik deloval, morate odpreti povezave na požarni zid prek firewalld ali iptables:

# požarni zid-cmd - stalni -add-service = http
# požarni zid-cmd -ponovno naloži

Opravite testno preverjanje na katerem koli od pomožnih strežnikov:

[root @ server ~] # curl Second_Server_IP

 tukaj bi morali dobiti html dokument 

Strežnik je dal standardno datoteko indeksa nginx, kar pomeni, da strežniki medsebojno komunicirajo.

Zaradi lažjega preverjanja sem spremenil vsebino datoteke indeksa na vsakem zalednem strežniku, tako da lahko med brskanjem v brskalniku jasno vidim, kateri strežnik je obdelal zahtevo.

Indeksna datoteka nginx se nahaja v / usr / share / nginx / html /.

Konfiguracija HAProxy ravnotežja obremenitve

Začnimo namestiti in konfigurirati HAProxy na strežniku, ki bo uporabljen kot izravnava obremenitve.

Namestite HaProxy in izvedite osnovne nastavitve ravnotežja.

#yum namestite epel-release -y

#yum namestite haproxy -y

Naloženi vtičniki: najhitrejše ogledalo Nalaganje hitrosti ogledala iz predpomnjenega gostiteljskega datoteke epel / x86_64 / metalink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Teče transakcija Namestitev: haproxy-1.5.18-9.el7.x86_64 1/1 Preverjanje: haproxy-1.5.18-9.el7.x86_64 1/1 Nameščeno: haproxy.x86_64 0: 1.5.18-9.el7 Dokončano! 

Če želite omogočiti HaProxy, morate dodati Omogočeno = 1 vložiti / etc / default / haproxy:

#nano / etc / default / haproxy

Zdaj pa preidimo na samo nastavitev HaProxy. V naši najpreprostejši konfiguraciji bo izravnalni strežnik obdelal vse zahteve http in jih po potrebi poslal na povratne strežnike.

#nano /etc/haproxy/haproxy.cfg

log / dev / log local0 chroot / var / lib / haproxy pidfile /var/run/haproxy.pid maxconn 4000 uporabnik haproxy skupina haproxy daemon privzetih načinov http log globalna možnost httplog možnost ponovna pošiljanja poskusov 3 timeout http-request 10s timeout čakalna vrsta 1m timeout connect 10s timeout odjemalec 1m timeout strežnik 1m timeout http-Keep-Live 10s timeout check 10s maxconn 3000 frontend www bind balancer IP: 80 default_backend nginx_pool backend nginx_pool balance roundrobin način http strežnik web1 first_backend_server IP: 80 check server server web2 80 second_backend_server: 

Ko shranite konfiguracijo, preverite skladnjo z ukazom:

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

Če je vse v redu, boste dobili podoben rezultat:

Konfiguracijska datoteka je veljavna

Po tem morate znova zagnati HaProxy in dodati njegov zagon CentOS. In tudi odprite potrebna pravila na požarnem zidu.

#systemctl znova zaženite haproxy

#systemctl omogoči haproxy

# požarni zid-cmd-stalni -add-service = http

# požarni zid-cmd -ponovno naloži

S tem dokončate nastavitev ravnotežja, preverite rezultat tako, da v brskalniku odprete strežnik IP s HaProxy:

Kot vidite, sta oba strežnika po vsebini dostavila vsebino, tehtnica deluje.

Možnosti konfiguracijske datoteke Haproxy.cfg

Oglejte si glavne primere algoritmov delovanja HaProxy:

  • okrogel - privzeti algoritem po vrsti pošilja zahteve strežnikom. V našem primeru smo uporabili ravno takšno metodo;
  • najmanjconn - izbere strežnik z najmanj številom aktivnih povezav. Priporočljivo je prijaviti se pri projektih, v katerih so seje lahko vključene dlje časa;
  • vir - izbere strežnik, ki temelji na hashu, zgrajenem na podlagi uporabnikov IP. V tem načinu delovanja bo isti odjemalec vedno dostopal do istega strežnika, če njegov IP ostane nespremenjen;

Pojdimo skozi nekatere parametre v konfiguracijski datoteki.

Blok globalno:

  • log - vodite dnevnik / dev / log shranjevanje local0 v "predmet";
  • chroot - varnostne nastavitve, ki zaklenejo HAProxy v določenem imeniku;
  • maxconn - največje število konkurenčnih povezav na postopek;
  • uporabnik - uporabnik, v imenu katerega se bo zagon programa;
  • skupina - uporabniška skupina, v imenu katere se bo zagon programa;
  • daemon - začnite postopek kot demon.

Blok privzeto. Ta razdelek opisuje privzete nastavitve za vse druge razdelke, ki sledijo njim:

  • dnevnik - označuje, kateri dnevnik želite zapisati (v tem primeru globalno pomeni, da se uporabljajo parametri, navedeni v globalnem razdelku);
  • način - nastavi protokol interakcije, sprejme eno od vrednosti: tcp, http ali zdravje;
  • poskusi - število poskusov povezave s strežnikom v primeru okvare;
  • možnost httplog - format dnevnika, v primeru uporabe HAProxy za približevanje HTTP zahtevkom;
  • možnost ponovna pošiljka - Dovoli programu, da prekine in ponovno dodeli sejo v primeru okvare strežnika;
  • kontimeout - največ časa za čakanje na uspešno povezavo s strežnikom.

Obstaja tudi veliko število parametrov, povezanih z različnimi časovnimi omejitvami.

Zbiranje statistike HAProxy

Dodajte blok statistike v konfiguracijsko datoteko:

poslušaj statistike veži: 10001 statistika omogoči statistiko uri / haproxy_stats statistika auth admin: admin 

Opis:

  • vežejo - vrata, na katerih bo pregledovanje statistike delovalo;
  • statistika omogočiti - vključujejo poročila s statistiko;
  • statistika uri - nastavitev naslova strani s statistiko;
  • statistika avh - prijava in geslo.
Lahko določite katero koli pristanišče, ki vam ustreza, če je navedeno v članku zasedeno ali ni primerno za vas.

Tudi za delovanje naših haproxy_stats morate odpreti predhodno določena vrata na požarnem zidu:

požarni zid-cmd - stalni -add-port = 10001 / tcp

požarni zid-cmd -reload

Če si želite ogledati poročila o delu HAProxy, morate klikniti na povezavo:

http: // ime gostitelja_haproksi: 10001 / haproxy_stats

V brskalniku odprite naslov naprave za uravnoteženje in začnite pošiljati neželeno pošto F5. Statistika na določeni povezavi se spremeni, pripomoček deluje.

S tem zaključimo našo namestitev. V članku smo preučili osnovno konfiguracijo HaProxy. V našem dizajnu strežnik za uravnoteženje obremenitve HaProxy postane ena sama točka napake. Če želite povečati odstopanje napak v konfiguraciji, lahko dodate drugi strežnik HaProxy in preverite razpoložljivost med strežniki s pomočjo programa Keepalived. Dobiš nekaj takega.

Obstaja veliko več možnosti za uporabo modula HAProxy in v njem lahko vedno najdete aplikacijo..