HAProxy terheléselosztása az Nginx webszerverek között

Ebben a cikkben bemutatjuk az ütemező beállítását. HAProxy két szerverre telepített webszerverrel nginx (az Apache helyettesíthető). Minden esetben a CentOS-t használják operációs rendszerként.

HAProxy - kiszolgálószoftver, amely magas rendelkezésre állást és terheléselosztást biztosít a TCP és a HTTP alkalmazások számára, a bejövő kérelmek több szerverre történő elosztása révén. A HAProxy-t sok népszerű erőforráson használják, köztük a Twitter, Instagram, Github, Avito, amazon és mások.

A HAProxy külön kiszolgálóra van telepítve, amely elfogadja az ügyfélkéréseket és átirányítja azokat Nginx webszerverekre. Az általános rendszer architektúrát az alábbiakban mutatjuk be..

Tartalom:

  • Az Nginx konfigurálása háttérkiszolgálón
  • HAProxy terheléselosztó konfiguráció
  • Haproxy.cfg konfigurációs fájl beállításai
  • HAProxy statisztikai gyűjtemény

Az Nginx konfigurálása háttérkiszolgálón

Kezdjük azzal, hogy telepítjük és konfiguráljuk az Nginx-et webszervereinken, amelyek között a terhelés kiegyensúlyozott lesz. Telepítse az EPEL lerakatot és magát az nginx fájlt a yum használatával:

#yum install epel-release -y
#yum install nginx -y

A telepítést egyszerre két kiszolgálón hajtottam végre, mivel a kiszolgálók egymáshoz vannak konfigurálva (a parancsok párhuzamos végrehajtására több kiszolgálón az pdsh is használható).

Tovább a konfigurációs fájlokban nginx.conf Hangsúlyozzuk, hogy a kiszolgálóknak csak a HaProxy és a háttérkiszolgálók kéréseit kell feldolgozniuk:

1. háttérkiszolgáló:

kiszolgáló figyeljen aktuális_kiszolgáló_IP: 80 alapértelmezett kiszolgáló; IP_server_backend_server engedélyezése; engedélyezze az IP_haproxy; mindenkit tagadni; kiszolgáló_neve _; root / usr / share / nginx / html; # Töltse be az alapértelmezett szerverblokk konfigurációs fájljait. tartalmazzák az /etc/nginx/default.d/*.conf fájlt; hely /  

2. háttérkiszolgáló:

kiszolgáló figyeljen aktuális_kiszolgáló_IP: 80 alapértelmezett kiszolgáló; IP_first_backend_server engedélyezése; engedélyezze az IP_haproxy; mindenkit tagadni; kiszolgáló_neve _; root / usr / share / nginx / html; # Töltse be az alapértelmezett szerverblokk konfigurációs fájljait. tartalmazzák az /etc/nginx/default.d/*.conf fájlt; hely /  

Az nginx konfiguráció szokásos, csak most adtunk hozzá hallgassa meg az IP-t szerverek és zárt hozzáférés mindenki számára, kivéve az irányelveket használó szervereinket lehetővé és megtagad.

Ahhoz, hogy a webszerver működjön, a tűzfalen keresztül kell megnyitnia a kapcsolatokat a tűzfal vagy az iptable segítségével:

# tűzfal-cmd - tartós -add-service = http
# tűzfal-cmd-újratöltés

Végezzen tesztellenőrzést bármely háttér-kiszolgálón:

[root @ szerver ~] # göndör IP_vtorogo_servera

 itt kell szereznie egy html dokumentumot 

A szerver megadta a standard index nginx fájlt, ami azt jelenti, hogy a kiszolgálók kölcsönhatásba lépnek egymással.

Az ellenőrzés megkönnyítése érdekében megváltoztattam az indexfájl tartalmát az egyes háttérkiszolgálókon, hogy a tesztelés során egyértelműen láthassam a böngészőben, hogy melyik szerver dolgozta fel a kérelmet.

Az nginx indexfájl a / usr / share / nginx / html /.

HAProxy terheléselosztó konfiguráció

Indítsuk el a HAProxy telepítését és konfigurálását a kiszolgálón, amelyet terheléselosztóként fogunk használni.

Telepítse a HaProxy szoftvert, és hajtsa végre az alapvető beállításokat a kiegyensúlyozó számára.

#yum install epel-release -y

#yum install haproxy -y

Betöltött pluginek: a leggyorsabb tükör A tárolt tükör sebessége a gyorsítótárban lévő gazdafájlból epel / x86_64 / metalink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Futás tranzakció Telepítés: haproxy-1.5.18-9.el7.x86_64 1/1 Ellenőrzés: haproxy-1.5.18-9.el7.x86_64 1/1 Telepítve: haproxy.x86_64 0: 1.5.18-9.el7 Komplett! 

A HaProxy engedélyezéséhez meg kell adnia Engedélyezve = 1 fájlba / etc / default / haproxy:

#nano / etc / default / haproxy

Most menjünk tovább a HaProxy beállításához. A legegyszerűbb konfigurációnkban a kiegyensúlyozó szerver feldolgozza az összes http kérést, és azokat viszont elküldi a háttérkiszolgálóknak.

#nano /etc/haproxy/haproxy.cfg

napló / dev / log local0 chroot / var / lib / haproxy pidfile /var/run/haproxy.pid maxconn 4000 felhasználó haproxy csoport haproxy démon alapértelmezett mód http napló globális opció httplog opció újraküldés újból 3 időtúllépés http-kérés 10s időtúllépési sor 1m időtúllépés csatlakozás 10s időtúllépés kliens 1m időtúllépés szerver 1m időtúllépés http-folyamatosan élettartam 10 s időtúllépés ellenőrzése 10s maxconn 3000 előlapon www kötési kiegyenlítő IP: 80 alapértelmezett_backend nginx_pool háttérprogram nginx_pool egyensúly körkörös módban http server web1 first_backend_server IP: 80 web2 ellenőrző szerver 80 második_backend_server: 

A konfiguráció mentése után ellenőrizze a szintaxist a következő paranccsal:

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

Ha minden rendben van, hasonló eredményt kap:

A konfigurációs fájl érvényes

Ezután újra kell indítania a HaProxy alkalmazást, és hozzá kell adnia annak CentOS indítását. Nyissa meg a tűzfalon is a szükséges szabályokat.

#systemctl indítsa újra a haproxy-t

#systemctl lehetővé teszi a haproxy használatát

# tűzfal-cmd-tartós -add-service = http

# tűzfal-cmd-újratöltés

Ez befejezi a kiegyensúlyozó beállítását. Ellenőrizze az eredményt az IP-kiszolgáló HaProxy-val történő megnyitásával a böngészőben:

Mint láthatja, mindkét szerver egymás után továbbította a tartalmat, a kiegyenlítő működik.

Haproxy.cfg konfigurációs fájl beállításai

Vegyük figyelembe a HaProxy működési algoritmusainak fő példáit:

  • roundrobin - az alapértelmezett algoritmus egymás után kéréseket küld a kiszolgálóknak. Példánkban csak egy ilyen módszert használtunk;
  • leastconn - kiválasztja a legkevesebb aktív kapcsolattal rendelkező kiszolgálót. Ajánlatos olyan projektekre jelentkezni, amelyekben az ülésszakok hosszú ideig részt vehetnek;
  • forrás - az IP-felhasználók alapján épített kivonat alapján választja ki a szervert. Ebben az üzemmódban ugyanaz az ügyfél mindig ugyanahhoz a szerverhez fog hozzáférni, ha IP-je változatlan marad;

Nézzünk át néhány paramétert a konfigurációs fájlban.

tömb globális:

  • napló - tartsa be a / dev / log bejelentkezést, mentve a helyi0 értéket az "objektumra";
  • chroot - biztonsági beállítások, amelyek zárolják a HAProxy-ot a megadott könyvtárban;
  • maxconn - a versengő kapcsolatok maximális száma folyamatonként;
  • felhasználó - a felhasználó, akinek a nevében a program elindul;
  • csoport - felhasználói csoport, amelynek nevében a program elindul;
  • démon - indítsa el a folyamatot démonként.

tömb alapértelmezett. Ez a szakasz ismerteti az azt követő összes többi szakasz alapértelmezett beállításait:

  • log - jelzi, melyik naplót kell rögzíteni (globális ebben az esetben azt jelenti, hogy a globális szakaszban megadott paramétereket használják);
  • mód - beállítja az interakciós protokollt, az alábbi értékek egyikét veszi figyelembe: tcp, http vagy health;
  • próbálkozás - meghibásodás esetén a szerverhez való csatlakozás kísérleteinek száma;
  • opció httplog - napló formátum, ha HAProxy-t használunk HTTP kérések proxikálásához;
  • opció visszaszállítás - Lehetővé teszi a programnak, hogy kiszolgálóhiba esetén megszakítsa és újra hozzárendelje a munkamenetet;
  • contimeout - a kiszolgálóval való sikeres kapcsolat várásának maximális ideje.

Számos paraméter is társul a különféle időtúllépésekhez.

HAProxy statisztikai gyűjtemény

Adja hozzá a statisztika blokkot a konfigurációs fájlhoz:

figyelési statisztika kötés: 10001 statisztika engedélyezése statisztika uri / haproxy_stats statisztika auth admin: admin 

Leírás:

  • köt - port, amelyen a statisztikai megtekintés működni fog;
  • statisztika engedélyezéséhez - jelentéseket tartalmaz a statisztikákkal;
  • statisztika uri - a statisztikai oldal címének beállítása;
  • statisztika auth - bejelentkezés és jelszó.
Megadhat bármilyen kényelmes portot, ha a cikkben foglalt vagy nem megfelelő az Ön számára.

Ezenkívül a haproxy_stats működéséhez meg kell nyitnia a tűzfalon korábban megadott portot:

tűzfal-cmd - tartós -add-port = 10001 / tcp

tűzfal-cmd-újratöltés

A HAProxy munkájáról szóló jelentések megtekintéséhez kattintson a linkre:

http: // hostname_haproxy: 10001 / haproxy_stats

Nyissa meg a kiegyensúlyozó címét a böngészőben, és indítsa el a spamet F5. A megadott link statisztikája megváltozik, a segédprogram működik.

Ez befejezi a beállításunkat. A cikkben megvizsgáltuk a HaProxy alapkonfigurációját. A tervünkben a HaProxy terheléselosztó szerver egyetlen hibapontvá válik. A konfiguráció hibatűrésének növelése érdekében hozzáadhat egy második HaProxy szervert, és a Keepalived használatával ellenőrizheti a kiszolgálók közötti elérhetőséget. Kapsz valami ilyesmit.

Sokkal több lehetőség létezik a HAProxy modul használatához, és mindig megtalálhat alkalmazást benne..