Uradna rešitev MSFT za uravnoteženje obremenitve med spletnimi strežniki Windows na kmetiji IIS je razširitev Usmerjanje zahteve po aplikaciji (ARR). V tem članku bomo razmislili o shemi, v kateri bo kot izravnalnik obremenitve med spletnimi strežniki internetnih informacijskih storitev (IIS različice 8.0 in novejše) uporabljen dobro preizkušen proxy HTTP / reverse Nginx proxy.
Nginx Je preprost, hiter in zanesljiv strežnik HTTP. Uporaba Nginx je priporočljiva predvsem za statična spletna mesta in kot povratni strežnik proxy pred zelo obremenjenimi dinamičnimi mesti. Nginx vam omogoča hitro obdelavo statičnih zahtev, izvajanje predpomnilnika proxy in izvajanje preprostih funkcij za izravnavo obremenitve.
Namig. Glavna pomanjkljivost usmerjevalnika zahtevkov aplikacij (ARR) v primerjavi z Nginxom je ta, da ne omogoča sledenja zahtevam HTTP na več mestih in zahteva dodatno licenco za Windows.V našem primeru spletno kmetijo sestavljata dva strežnika IIS na osnovi sistema Windows Server 2012. Linux strežnik z nameščenim Nginxom bo deloval kot sprednji strežnik. Če je potrebno, lahko to konfiguracijo enostavno spremenite z dodajanjem potrebnega števila strežnikov IIS. Nginx je sposoben skriti veliko zalednih spletnih strežnikov za seboj in med njimi razdeli zahteve z različnimi pravili. Dodajanje ali odstranjevanje katerega koli strežnika IIS s takšne kmetije ne vpliva na razpoložljivost spletnega mesta z vidika uporabnikov.
Konfigurirajte spletne strežnike na kmetiji IIS
Najprej morate namestiti vlogo IIS na oba strežnika Windows. Naloga se izvede s konzolo. Upravitelj strežnikov ali z Powerhell:
upravitelj uvoznega modula
Namestite-WindowsFeature -Name spletni strežnik, Web-Mgmt-Tools
Na ločenem strežniku, datotečnem strežniku Windows, ustvarite dve mrežni mapi:
- Prvi bo shranil splošno konfiguracijo IIS - \\ file-srv1 \ iis_config
- Drugič - datoteke datotek - \\ file-srv1 \ iis_site
V dovoljenja obeh javnih map dodajte skupino Vsi s pravicami popolnega nadzora.
Nato na obe strani morate namestiti razširitev ARR Helper, kar bo omogočilo uporabo pravilnih naslovov obiskovalcev v glavah IIS (sicer bo tam vedno naveden IP naslov strežnika z Nginxom). Ta razširitev je del Paket za usmerjanje zahtevka za aplikacijo IIS (ARR) 3.0 in po namestitvi slednjega na kateri koli strežnik, njegova distribucija requestrouterhelper_x64.msi je mogoče ročno kopirati iz imenika% ProgramFiles% \ IIS \ Application Request Routing.
Ko namestite IIS, kopirajte vsebino imenika c: \ inetpub \ wwwroot v omrežno mapo \\ file-srv1 \ iis_site. Nato v konzoli za upravljanje IIS izberite spletno mesto DefaultWebSite in odprite njegove nastavitve (Osnovne nastavitve) z navedbo v polju Fizična pot pot omrežne mape.
Konfigurirajte spletno mesto v skladu s svojimi zahtevami, preverite, ali se odpre in deluje pravilno. Nato odprite razdelek Konfiguracija v skupni rabi in kliknite na gumb Izvozi konfiguracijo.
Določite celotno pot do omrežne mape, v kateri bo shranjena konfiguracija IIS, in določite geslo za šifrirne ključe.
Omogoči možnost Omogoči skupno konfiguracijo, in določite pot do skupnega omrežja s konfiguracijo IIS. Kliknite Uporabi in vnesite geslo.
Nato določite račun, pod katerim naj se zažene zbirka IIS. Poleg tega mora imeti ta račun tudi pravice RW za dostop do prej opisanih omrežnih imenikov (praviloma se uporablja poseben račun storitve domene ali račun storitve gMSA skupine). Če želite to narediti, odprite razdelek za preverjanje pristnosti IIS in spremenite nastavitve anonimne avtentifikacije z uporabniškim imenom.
Poskusite odpreti spletno mesto. Če vse deluje, pojdite na naslednji korak..
Zdaj morate drugi strežnik konfigurirati na enak način. Namestite ARRhelper, povežite splošno konfiguracijo IIS iz omrežne mape, določite račun za zagon bazena.
Konfiguriranje uravnoteženja obremenitve na Nginxu
Po končani konfiguraciji spletnih strežnikov IIS lahko nadaljujete s konfiguracijo Nginx.
Namestite nginx z ukazom:sudo apt-get install nginx
Po namestitvi uredite konfiguracijsko datoteko / etc / nginx / default-default / default
V našem primeru imamo naslednjo konfiguracijo:
# seznam spletnih strežnikov IIS, med katerimi morate razporediti breme
upstream web_servers
strežnik 192.168.1.13;
strežnik 192.168.1.14;
# vrata
strežnik
poslušaj 80;
lokacija /
proxy_pass http://winitpro.ru;
# prilagajanje glave
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-Posredovano-za $ remote_addr;
proxy_set_header shema X-Forwarded-Proto $;
# Napake, pri katerih naj se nginx preklopi na naslednji strežnik
časovna omejitev napake proxy_next_upstream invalid_header http_500 http_404;
proxy_set_header X-odjemalec-IP $ remote_addr;
Shranite datoteko in znova zaženite nginx:
sudo /etc/init.d/nginx znova zaženite
Ostaja konfigurirati zapise DNS spletnih mest tako, da kažejo na ip naslov strežnika nginx in poskrbijo, da se zahteve razporejajo med spletnimi strežniki z algoritmom okroglega robina.