Зареждане на балансиране между IIS сървъри с помощта на Nginx

Официалното решение за MSFT за балансиране на натоварването между уеб сървърите на Windows във ферма IIS е разширението Маршрутизиране на заявка за заявка (ARR). В тази статия ще разгледаме схема, при която като балансиращо натоварване между уеб сървърите на интернет информационните услуги (IIS версия 8.0 и по-нова версия) ще се използва добре доказаният HTTP / обратен Nginx прокси.

Nginx Това е прост, бърз и надежден HTTP сървър. Използването на Nginx е препоръчително предимно за статични уебсайтове и като обратен прокси сървър пред силно заредени динамични сайтове. Nginx ви позволява бързо да обработвате статични заявки, да извършвате кеширане на прокси и да прилагате прости функции за балансиране на натоварването.

съвет. Основният недостатък на маршрутизацията на заявки за заявки (ARR) в сравнение с Nginx е, че тя не ви позволява да проследявате HTTP заявки за множество сайтове и изисква допълнителен лиценз за Windows.

В нашия пример уеб фермата се състои от два IIS сървъра, базирани на Windows Server 2012. Linux сървърът с инсталиран Nginx ще действа като преден сървър. Ако е необходимо, тази конфигурация може да бъде лесно мащабирана чрез добавяне на необходимия брой IIS сървъри. Nginx е в състояние да скрие много задния уеб сървър зад себе си, разпределяйки заявки между тях, използвайки различни правила. Добавянето или премахването на който и да е IIS сървър от такава ферма не влияе на достъпността на сайта от гледна точка на потребителите.

Конфигурирайте уеб сървъри във IIS Farm

На първо място, трябва да инсталирате ролята на IIS и на двата уеб сървъра на Windows. Задачата се изпълнява с помощта на конзолата. Сървър мениджър или с PowerShell:

import-module servermanager
Install-WindowsFeature -Name Web-Server, Web-Mgmt-Tools

На отделен сървър, файловият сървър на Windows, създайте две мрежови папки:

  • Първият ще съхранява общата конфигурация IIS - \\ file-srv1 \ iis_config
  • Второ - файлове на сайта - \\ file-srv1 \ iis_site

В разрешенията на двете публични папки добавете група всички с права за пълен контрол.

След това и на двата сайта трябва да инсталирате разширението ARR Helper, което ще ви позволи да използвате правилните адреси на посетителите в заглавките на IIS (в противен случай ip адресът на сървъра с Nginx винаги ще бъде посочен там). Това разширение е част от IIS Заявка за заявка за маршрутизиране пакет (ARR) 3.0 и след инсталирането на последния на всеки сървър, неговото разпространение requestrouterhelper_x64.msi може да се копира ръчно от директорията% ProgramFiles% \ IIS \ Заявка за заявка за маршрутизиране.

След като инсталирате IIS, копирайте съдържанието на директорията c: \ inetpub \ wwwroot в мрежовата папка \\ file-srv1 \ iis_site. След това в конзолата за управление на IIS изберете сайта DefaultWebSite и отворете настройките му (Основни настройки) като посочите в полето Физически път пътека на мрежовата папка.

Конфигурирайте сайта в съответствие с вашите изисквания, проверете дали той се отваря и работи правилно. След това отворете секцията Споделена конфигурация и кликнете върху бутона Конфигурация на експортиране.

Укажете пълния път до мрежовата папка, в която ще се съхранява конфигурацията на IIS, и посочете паролата за кодовете за криптиране.

Опция за активиране Активиране на споделената конфигурация, и задайте пътя към мрежовия дял с конфигурацията IIS. Щракнете върху Приложи и въведете парола.

След това посочете акаунта, под който трябва да се стартира пула IIS. Освен това, този акаунт трябва да има права на RW за достъп до описаните по-рано мрежови директории (като правило се използва специален запис на услуга на домейна или акаунт за групова услуга на gMSA). За целта отворете секцията за удостоверяване на IIS и променете настройките за анонимно удостоверяване с потребителско име.

Опитайте да отворите сайта. Ако всичко работи, преминете към следващата стъпка..

Сега трябва да конфигурирате втория сървър по същия начин. Инсталирайте ARRhelper, свържете общата конфигурация на IIS от мрежова папка, посочете акаунт, за да стартирате пула.

Конфигуриране на балансиране на натоварването на Nginx

След като конфигурирането на уеб сървърите на IIS приключи, можете да продължите да конфигурирате Nginx.

Инсталирайте nginx с командата:
sudo apt-get install nginx
След инсталирането редактирайте конфигурационния файл / и т.н. / nginx / активирани / по подразбиране сайтове

В нашия случай имаме следната конфигурация:

# списък на уеб сървърите на IIS, между които трябва да разпределите товара
upstream web_servers
сървър 192.168.1.13;
сървър 192.168.1.14;

# порт
сървър
слушайте 80;
местоположение /
proxy_pass http://winitpro.ru;
# персонализиране на заглавки
proxy_set_header X-proxy 192.168.1.12;
proxy_set_header хост $ хост;
proxy_set_header X-Real-IP $ remote_addr;
proxy_set_header X-Forwarded-For $ remote_addr;
proxy_set_header X-Forwarded-Proto $ схема;
# Грешки, при които nginx трябва да премине към следващия сървър
proxy_next_upstream timeout error error invalid_header http_500 http_404;
proxy_set_header X-Client-IP $ remote_addr;

Запазете файла и рестартирайте nginx:

sudo /etc/init.d/nginx рестартиране

Остава да конфигурирате DNS записите на сайтовете, така че те да сочат ip адреса на nginx сървъра и да се уверите, че заявките се разпределят между уеб сървърите, използвайки алгоритъма за кръгла robin.