Równoważenie obciążenia między serwerami IIS przy użyciu Nginx

Oficjalnym rozwiązaniem MSFT do równoważenia obciążenia między serwerami sieciowymi Windows w farmie IIS jest rozszerzenie Routing żądań aplikacji (ARR). W tym artykule rozważymy schemat, w którym jako moduł równoważenia obciążenia między serwerami internetowymi Internetowych usług informacyjnych (IIS w wersji 8.0 i wyższej) zostanie użyty sprawdzony serwer proxy HTTP / reverse Nginx.

Nginx Jest to prosty, szybki i niezawodny serwer HTTP. Korzystanie z Nginx jest zalecane przede wszystkim w przypadku witryn statycznych i jako odwrotne proxy przed wysoce obciążonymi stronami dynamicznymi. Nginx pozwala szybko przetwarzać żądania statyczne, wykonywać buforowanie proxy i wdrażać proste funkcje równoważenia obciążenia.

Wskazówka. Główną wadą routingu żądań aplikacji (ARR) w porównaniu z Nginx jest to, że nie pozwala on na śledzenie żądań HTTP dla wielu witryn i wymaga dodatkowej licencji dla systemu Windows.

W naszym przykładzie farma internetowa składa się z dwóch serwerów IIS opartych na systemie Windows Server 2012. Serwer Linux z zainstalowanym Nginx będzie działał jako serwer front-end. W razie potrzeby tę konfigurację można łatwo skalować, dodając wymaganą liczbę serwerów IIS. Nginx jest w stanie ukryć wiele serwerów WWW zaplecza, dystrybuując żądania między nimi przy użyciu różnych reguł. Dodanie lub usunięcie dowolnego serwera IIS z takiej farmy nie wpływa na dostępność witryny z punktu widzenia użytkowników.

Skonfiguruj serwery WWW w farmie IIS

Przede wszystkim musisz zainstalować rolę IIS na obu serwerach Windows. Zadanie jest wykonywane za pomocą konsoli. Menedżer serwera lub z Powerhell:

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

Na osobnym serwerze, serwerze plików Windows, utwórz dwa foldery sieciowe:

  • Pierwszy przechowa ogólną konfigurację IIS - \\ file-srv1 \ iis_config
  • Po drugie - pliki witryny - \\ file-srv1 \ iis_site

W uprawnieniach obu folderów publicznych dodaj grupę Wszyscy z uprawnieniami do pełnej kontroli.

Następnie w obu witrynach musisz zainstalować rozszerzenie Pomocnik ARR, co pozwoli ci użyć poprawnych adresów gości w nagłówkach IIS (w przeciwnym razie adres IP serwera z Nginx zawsze będzie tam podany). To rozszerzenie jest częścią Pakiet routingu żądań aplikacji IIS (ARR) 3.0 i po zainstalowaniu tego ostatniego na dowolnym serwerze, jego dystrybucji requestrouterhelper_x64.msi można ręcznie skopiować z katalogu% ProgramFiles% \ IIS \ Application Request Routing.

Po zainstalowaniu IIS skopiuj zawartość katalogu c: \ inetpub \ wwwroot do folderu sieciowego \\ file-srv1 \ iis_site. Następnie w konsoli zarządzania IIS wybierz witrynę DefaultWebSite i otwórz jej ustawienia (Podstawowe ustawienia), określając w polu Ścieżka fizyczna ścieżka folderu sieciowego.

Skonfiguruj witrynę zgodnie z własnymi wymaganiami, sprawdź, czy otwiera się i działa poprawnie. Następnie otwórz sekcję Wspólna konfiguracja i kliknij przycisk Eksportuj konfigurację.

Podaj pełną ścieżkę do folderu sieciowego, w którym będzie przechowywana konfiguracja IIS, i podaj hasło do kluczy szyfrowania.

Włącz opcję Włącz konfigurację współdzieloną, i określ ścieżkę do udziału sieciowego za pomocą konfiguracji IIS. Kliknij Zastosuj i wprowadź hasło.

Następnie określ konto, na którym ma zostać uruchomiona pula usług IIS. Co więcej, to konto musi mieć również prawa RW, aby uzyskać dostęp do wcześniej opisanych katalogów sieciowych (z reguły używane jest specjalne konto usługi domeny lub konto usługi grupy gMSA). Aby to zrobić, otwórz sekcję Uwierzytelnianie IIS i zmień ustawienia Anonimowego uwierzytelnienia za pomocą nazwy użytkownika.

Spróbuj otworzyć stronę. Jeśli wszystko działa, przejdź do następnego kroku..

Teraz musisz skonfigurować drugi serwer w ten sam sposób. Zainstaluj ARRhelper, podłącz ogólną konfigurację IIS z folderu sieciowego, określ konto, aby uruchomić pulę.

Konfigurowanie równoważenia obciążenia na Nginx

Po zakończeniu konfiguracji serwerów internetowych IIS możesz przystąpić do konfigurowania Nginx.

Zainstaluj nginx za pomocą polecenia:
sudo apt-get install nginx
Po instalacji edytuj plik konfiguracyjny / etc / nginx / sites-enabled / default

W naszym przypadku otrzymaliśmy następującą konfigurację:

# lista serwerów internetowych IIS, pomiędzy którymi należy rozłożyć obciążenie
podrzędne serwery WWW
serwer 192.168.1.13;
serwer 192.168.1.14;

# port
serwer
słuchaj 80;
lokalizacja /
proxy_pass http://winitpro.ru;
# dostosowanie nagłówków
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 Schemat X-Forwarded-Proto $;
# Błędy, w których nginx powinien przejść na następny serwer
limit czasu błędu proxy_next_upstream nieprawidłowy nagłówek http_500 http_404;
proxy_set_header X-Client-IP $ remote_addr;

Zapisz plik i uruchom ponownie nginx:

sudo /etc/init.d/nginx restart

Pozostaje skonfigurować rekordy DNS witryn, aby wskazywały na adres IP serwera nginx i upewniły się, że żądania są dystrybuowane między serwerami sieciowymi przy użyciu algorytmu round robin.