Vyrovnávanie zaťaženia medzi servermi IIS pomocou Nginx

Rozšírenie predstavuje oficiálne riešenie MSFT na vyrovnávanie záťaže medzi webovými servermi Windows vo farme IIS Smerovanie žiadosti (ARR). V tomto článku sa budeme zaoberať schémou, v ktorej sa ako vyrovnávač zaťaženia medzi webovými servermi Internet Information Services (IIS verzia 8.0 a vyšší) použije osvedčený proxy HTTP / reverzný server Nginx..

Nginx Je to jednoduchý, rýchly a spoľahlivý HTTP server. Použitie Nginx je vhodné predovšetkým pre statické webové stránky a ako reverzný proxy server pred vysoko zaťaženými dynamickými webmi. Nginx vám umožňuje rýchlo spracovať statické požiadavky, vykonávať vyrovnávaciu pamäť proxy a implementovať jednoduché funkcie vyrovnávania záťaže.

rada. Hlavnou nevýhodou smerovania ARR (Application Request Routing) v porovnaní s Nginxom je to, že vám neumožňuje sledovať HTTP požiadavky na viacerých serveroch a vyžaduje dodatočnú licenciu pre Windows..

V našom príklade sa webová farma skladá z dvoch serverov IIS založených na systéme Windows Server 2012. Linuxový server s nainštalovaným serverom Nginx bude fungovať ako front-end server. Ak je to potrebné, táto konfigurácia sa dá ľahko škálovať pridaním požadovaného počtu serverov IIS. Nginx dokáže skryť veľa backendových webových serverov za sebou a distribuovať medzi nimi požiadavky pomocou rôznych pravidiel. Pridanie alebo odstránenie akéhokoľvek servera IIS z takejto farmy neovplyvní dostupnosť stránky z hľadiska používateľov.

Konfigurácia webových serverov vo farme IIS

Najprv musíte nainštalovať rolu IIS na obidva webové servery Windows. Úloha sa vykonáva pomocou konzoly. Správca servera alebo s PowerShell:

serverový manažér importných modulov
Install-WindowsFeature -Name Web-Server, Web-Mgmt-Tools

Na samostatnom serveri, súborovom serveri Windows, vytvorte dva sieťové priečinky:

  • Prvý uloží všeobecnú konfiguráciu služby IIS - \\ file-srv1 \ iis_config
  • Po druhé - súbory stránok - \\ file-srv1 \ iis_site

Do povolení oboch verejných priečinkov pridajte skupinu každý s právami úplnej kontroly.

Potom musíte na obe weby nainštalovať rozšírenie Pomocník ARR, ktoré vám umožnia použiť správne adresy návštevníkov v hlavičkách služby IIS (v opačnom prípade sa tam vždy uvedie adresa IP servera so serverom Nginx). Toto rozšírenie je súčasťou Balík smerovania žiadosti o aplikáciu IIS (ARR) 3.0 a po jeho inštalácii na ľubovoľný server, jeho distribúciu requestrouterhelper_x64.msi možno manuálne skopírovať z adresára% ProgramFiles% \ IIS \ Application Request Routing.

Po inštalácii služby IIS skopírujte obsah adresára c: \ inetpub \ wwwroot do sieťového priečinka \\ file-srv1 \ iis_site. Potom v konzole správy služby IIS vyberte web DefaultWebSite a otvorte jeho nastavenia (Základné nastavenia) zadaním do poľa Fyzická cesta cesta k sieťovému priečinku.

Nakonfigurujte web v súlade s vašimi požiadavkami, overte, či sa otvorí a či funguje správne. Potom otvorte sekciu Zdieľaná konfigurácia a kliknite na tlačidlo Exportovať konfiguráciu.

Zadajte úplnú cestu k sieťovému priečinku, do ktorého sa uloží konfigurácia IIS, a zadajte heslo pre šifrovacie kľúče.

Povoliť možnosť Povoliť zdieľanú konfiguráciu, a zadajte cestu k zdieľanej sieti s konfiguráciou IIS. Kliknite na tlačidlo Použiť a zadajte heslo.

Potom zadajte účet, pod ktorým by sa mala spustiť oblasť IIS. Tento účet musí mať navyše práva RW na prístup k predtým popísaným sieťovým adresárom (spravidla sa používa účet služby osobitnej domény alebo účet služby skupiny GMSA). Ak to chcete urobiť, otvorte časť Overenie služby IIS a zmeňte nastavenia anonymnej autentifikácie pomocou používateľského mena.

Pokúste sa stránku otvoriť. Ak všetko funguje, prejdite na ďalší krok..

Teraz musíte nakonfigurovať druhý server rovnakým spôsobom. Nainštalujte ARRhelper, pripojte všeobecnú konfiguráciu služby IIS zo sieťového priečinka, zadajte účet na spustenie fondu.

Konfigurácia vyvažovania záťaže na Nginx

Po dokončení konfigurácie webových serverov IIS môžete pokračovať v konfigurácii Nginx.

Nainštalujte nginx pomocou príkazu:
sudo apt-get install nginx
Po inštalácii upravte konfiguračný súbor / etc / nginx / sites-enabled / default

V našom prípade sme dostali nasledujúcu konfiguráciu:

# zoznam webových serverov IIS, medzi ktorými potrebujete rozdeliť záťaž
upstream web_servers
server 192.168.1.13;
server 192.168.1.14;

# port
server
počúvať 80;
umiestnenie /
proxy_pass http://winitpro.ru;
# prispôsobenie hlavičiek
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 Schéma X-Forwarded-Proto $;
# Chyby, pri ktorých by sa nginx mal prepnúť na nasledujúci server
časový limit chyby proxy_next_upstream timeout invalid_header http_500 http_404;
proxy_set_header X-Client-IP $ remote_addr;

Uložte súbor a reštartujte nginx:

sudo /etc/init.d/nginx reštartujte

Zostáva nakonfigurovať záznamy DNS lokalít tak, aby smerovali na IP adresu servera nginx, a uistite sa, že požiadavky sú distribuované medzi webovými servermi pomocou algoritmu round robin..