Učitavanje uravnoteženja između IIS poslužitelja pomoću Nginx-a

Službeno MSFT rješenje za uravnoteženje opterećenja između Windows web poslužitelja na IIS farmi je proširenje Usmjeravanje zahtjeva za zahtjev aplikacije (ARR). U ovom ćemo članku razmotriti shemu u kojoj će se kao balans opterećenja između web poslužitelja internetskih informativnih usluga (IIS verzija 8.0 i novije verzije) koristiti dobro dokazani HTTP / obrnuti Nginx proxy..

Nginx To je jednostavan, brz i pouzdan HTTP poslužitelj. Upotreba Nginx-a preporučljiva je prvenstveno za statičke web stranice i kao obrnuti proxy ispred dinamički učitanih web mjesta. Nginx vam omogućuje brzu obradu statičkih zahtjeva, izvođenje predmemoriranja proxyja i implementaciju jednostavnih značajki uravnoteženja opterećenja.

vijeće. Glavni nedostatak usmjeravanja zahtjeva zahtjeva (ARR) u usporedbi s Nginxom je taj što ne dopušta praćenje HTTP zahtjeva za više web mjesta i zahtijeva dodatnu licencu za Windows.

U našem primjeru, web farma se sastoji od dva IIS poslužitelja zasnovana na Windows Server 2012. Linux poslužitelj s instaliranim Nginxom djelovat će kao prednji poslužitelj. Ako je potrebno, ovu konfiguraciju možete lako smanjiti dodavanjem potrebnog broja IIS poslužitelja. Nginx je u mogućnosti sakriti mnoge pozadinske web poslužitelje iza sebe, distribuirajući zahtjeve između njih koristeći različita pravila. Dodavanje ili uklanjanje bilo kojeg IIS poslužitelja s takve farme ne utječe na dostupnost web mjesta sa stajališta korisnika.

Konfiguriranje web poslužitelja u IIS Farm

Prije svega, trebate instalirati IIS ulogu na oba Windows web poslužitelja. Zadatak se izvodi pomoću konzole. Upravitelj poslužitelja ili sa PowerShell:

import-module servermanager
Instalirajte-WindowsFeature -Name Web-poslužitelj, Web-Mgmt-Alati

Na zasebnom poslužitelju, Windows datotečnom poslužitelju, stvorite dvije mrežne mape:

  • Prvi će pohraniti opću IIS konfiguraciju - \\ file-srv1 \ iis_config
  • Drugo - datotečne stranice - \\ file-srv1 \ iis_site

U dozvolama obje javne mape dodajte grupu svako s pravima potpune kontrole.

Zatim na obje stranice trebate instalirati proširenje ARR Helper, što će vam omogućiti korištenje ispravnih adresa posjetitelja u zaglavljima IIS-a (inače će IP adresa poslužitelja s Nginxom uvijek biti navedena tamo). Ovo je proširenje dio IIS zahtjev za usmjeravanje paketa (ARR) 3.0 i nakon instaliranja ovog na bilo koji poslužitelj, njegova distribucija requestrouterhelper_x64.msi mogu se kopirati ručno iz direktorija% ProgramFiles% \ IIS \ Application Request Routing.

Nakon instaliranja IIS-a, kopirajte sadržaj direktorija c: \ inetpub \ wwwroot u mrežnu mapu \\ file-srv1 \ iis_site. Nakon toga u IIS konzoli za upravljanje odaberite web mjesto DefaultWebSite i otvorite njegove postavke (Osnovne postavke) navođenjem u polju Fizički put put mrežne mape.

Konfigurirajte web mjesto u skladu sa svojim zahtjevima, provjerite da li se otvara i radi ispravno. Zatim otvorite odjeljak Zajednička konfiguracija i kliknite na gumb Izvoz konfiguracije.

Odredite puni put do mrežne mape u kojoj će se pohraniti IIS konfiguracija i odredite lozinku za šifrirajuće ključeve.

Omogući opciju Omogući zajedničku konfiguraciju, i odredite put do mrežnog udjela s IIS konfiguracijom. Kliknite Primjeni i unesite lozinku.

Zatim odredite račun pod kojim bi se trebao pokrenuti skup IIS. Nadalje, ovaj račun također mora imati RW prava za pristup prethodno opisanim mrežnim direktorijima (u pravilu se koristi poseban račun usluge domene ili račun usluge gMSA grupe). Da biste to učinili, otvorite odjeljak IIS provjere autentičnosti i promijenite postavke anonimne provjere autentičnosti s korisničkim imenom.

Pokušajte otvoriti stranicu. Ako sve uspije, prijeđite na sljedeći korak..

Sada morate konfigurirati drugi poslužitelj na isti način. Instalirajte ARRhelper, povežite opću IIS konfiguraciju iz mrežne mape, odredite račun za pokretanje bazena.

Konfiguriranje uravnoteženja opterećenja na Nginxu

Nakon dovršetka konfiguracije IIS web poslužitelja, možete nastaviti s konfiguriranjem Nginx-a.

Instalirajte nginx pomoću naredbe:
sudo apt-get install nginx
Nakon instalacije uredite konfiguracijsku datoteku / etc / nginx / default omogućeno / mjesta

U našem slučaju dobili smo sljedeću konfiguraciju:

# popis IIS web poslužitelja između kojih trebate raspodijeliti učitavanje
upstream web_servers
poslužitelj 192.168.1.13;
poslužitelj 192.168.1.14;

# port
poslužitelj
slušati 80;
lokacija /
proxy_pass http://winitpro.ru;
# prilagodba zaglavlja
proxy_set_header X-proxy 192.168.1.12;
proxy_set_header Host $ host;
proxy_set_header X-Real-IP $ remote_addr;
proxy_set_header X-Forwarded-For $ remote_addr;
proxy_set_header shema X-Forwarded-Proto $;
# Pogreške u kojima nginx treba prebaciti na sljedeći poslužitelj
vremensko ograničenje greške proxy_next_upstream invalid_header http_500 http_404;
proxy_set_header X-klijent-IP $ remote_addr;

Spremite datoteku i ponovno pokrenite nginx:

sudo /etc/init.d/nginx ponovno pokretanje

Ostaje konfigurirati DNS zapise web mjesta tako da upućuju na ip adresu nginx poslužitelja i osiguraju da se zahtjevi distribuiraju između web poslužitelja koristeći algoritam okruglog robina.