Вы здесь

Создание кластера IIS с балансировкой нагрузки средствами nginx


Добрый день, ниже будет рассказано как cделать отказоустойчивый кластер с балансировкой нагрузки. Балансировать нагрузку будем при помощи nginx, т.к. iisовский ARR 1) требует доп. лицензию на винду, 2) не может мониторить http ответы нескольких сайтов.

Приступим.

Сперва установим собственно IIS, 2 штуки (можно больше =) ). Эту процедуру показывать не буду тут все ясно-понятно, заходим в менеджер сервера, добавляем роль веб-сервера на наши сервера.

Тем временем, пока IIS ставится расшарим 2 папки на каком-нибудь сервере (желательно не на том где стоят наши веб сервера). 1 папка для хранения конфигурации IIS, вторая для хранения сайтов.

 

Дальше нам нужно установить аддон arrhelper на оба сервера, скачать можно здесь - /sites/default/files/files/requestrouterhelper_x64.msi

Он нужен для того, что бы в headerы IISа записывались правильные IP адреса посетителей сайта, иначе всегда будет адрес балансировщика.

Далее, после того как iisы установлены копируем (если нужен дефолтный сайт) содержимое папки c:\inetpub\wwwroot в нашу расшаренную папку для сайтов (не забыв в ней создать папку для дефолтного сайта)

После этого заходим в консоль управления IIS, переходим в дефолтный сайт, заходим в основные настройки и прописываем наш сетевой путь до сайта.

Далее жмем по нашему серверу и заходим в общую конфигурацию, в ней жмем экспорт конфигурации, указываем сетевой путь до расшаренной папки, где будет лежать конфигурация IISов, и ввдодим пароль для ключей шифрования. Жмем ОК.

Далее жмем использовать общюю конфигурацию, вводим адрес места где лежит наша кофигурация, жмем применить и вводим наш пароль.

Далее нужно прописать пользователя от имени которого запускаются пулы приложений, и у которого есть доступ к нашим сетевым папкам. Для этого нужно зайти в проверку подлинности, и изменить анонимную проверку подлинности. Можно поставить проверку пулом приложений, либо выбрать доменного пользователя.

Далее пробуем открыть наш сайт если открылся можно продолжать, если нет, то что то сделано не так.

Переходим на наш второй сервер. Не забываем поставить ARRhelper, и подключаем общюю конфигурацию, аналогично тому как делали с первым сервером.

Для удобства тестироваания можно залить на сайт следующую простенькую asp страницу - /sites/default/files/files/default.aspx, она показывает адрес сервера, адрес клиента и имя сайта.

С настройкой IIS закончили, теперь переходим к настройке nginx. Я ставил на ubuntu, вы можете ставить на чем угодно, роли не играет.

Собственно ставим nginx - sudo apt-get install nginx

После установки правим конфиг - sudo nano /etc/nginx/sites-enabled/default

мой конфиг такой:

#собственно наши веб сервера
    upstream web_servers {
        server 192.168.0.11;
        server 192.168.0.12;
        }
 #какой порт слушать
    server {
        listen 80;
        location / {
                #собственно проксирование
                proxy_pass http://web_servers;
                #установка headerов
                proxy_set_header X-proxy 192.168.0.13;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                #из этого хедера arrhelper берет ip
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header X-Forwarded-Proto $scheme;
                #установка ошибок, при получении которых nginx будет пробовать зайти на следующий сервер
                proxy_next_upstream     error timeout invalid_header http_500 http_404;
                proxy_set_header X-Client-IP $remote_addr;
                }
        }

Рестартуем nginx - sudo /etc/init.d/nginx restart Если не выдало ошибок, то все должно работать.

На этом пока все, можете пробовать прописать в DNS для вашего сайта адрес вашего nginx и заходить на сайт, вы увидете что запросы приходят на разные сервера (в данном случае, по умолчанюи балансировка - round robin, nginx так же умеет hash и т.д..

Так же вы можете посмотреть видеоинструкцию:

0 0

Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.


Если вам помогла статья, вы можете >>отблагодарить автора<<