Балансировка нагрузки HTTP с помощью маршрутизации запросов приложений
Команда IIS
Обзор
В этом разделе приводятся инструкции по настройке маршрутизации запросов приложений для балансировки нагрузки HTTP-запросов для обеспечения высокой доступности и масштабируемости. В пошаговом руководстве также описано, как маршрутизация запросов приложений отслеживает работоспособность серверов содержимого и выполняет сопоставление запросов от клиента к серверу содержимого.
Goal
Чтобы сбалансировать HTTP-запросы между несколькими серверами контента с помощью маршрутизации запросов приложений, как показано ниже:
Необходимые компоненты
В этом пошаговом руководстве требуются следующие предварительные требования:
- IIS 7.0 или более поздней версии в Windows 2008 (любой номер SKU) или более поздней версии.
- Модули маршрутизации запросов приложений Майкрософт версии 1 и зависимые модули.
- Не менее двух серверов содержимого с рабочими сайтами и приложениями.
Выполните действия, описанные в этом документе, чтобы установить маршрутизацию запросов приложений.
Еще одним предварительным условием является определение и настройка фермы серверов с помощью шагов, описанных в разделе "Определение и настройка группы серверов маршрутизации запросов приложений (ARR).
Шаг 1. Проверка правил переопределения URL-адресов
Если ферма серверов создана с помощью шагов, описанных в разделе "Определение и настройка группы серверов маршрутизации запросов приложений (ARR), правила перезаписи URL-адресов уже созданы для простого сценария балансировки нагрузки.
Чтобы проверить правила перезаписи URL-адресов с помощью пользовательского интерфейса:
- Запустите диспетчер IIS.
- Выберите ферму серверов myServerFarm, созданную в разделе "Определение и настройка группы серверов маршрутизации запросов приложений (ARR).
- Показаны следующие значки:
- Дважды щелкните правила маршрутизации.
- Убедитесь, что для проверки входящих запросов проверка box проверка используется перезапись URL-адресов.
- Разгрузка SSL включена по умолчанию. Если эта функция включена, все соединения между сервером ARR и серверами приложений выполняются в виде четкого текста, даже для HTTPS-запросов от клиентов к серверу ARR. Если сервер ARR и серверы приложений развертываются в доверенной сети, например в одном центре обработки данных, включение разгрузки SSL не жертвует безопасностью. Кроме того, включение этой функции может помочь расширить ресурсы сервера на серверах приложений, так как они не должны тратить циклы в шифровании и расшифровке запросов и ответов.
Чтобы отключить разгрузку SSL, не проверка включить разгрузку SSL проверка и нажмите кнопку "Применить". - Откройте браузер и отправьте несколько запросов на сервер ARR.
- Чтобы убедиться, что запросы распределяются одинаково между серверами приложений, выберите myServerFarm. Дважды щелкните " Мониторинг и управление".
- В представлении панели мониторинга убедитесь, что запросы распределяются равномерно.
Чтобы проверить правила перезаписи URL-адресов с помощью командной строки:
Откройте командную строку с правами администратора .
Перейдите к
%windir%\system32\inetsrv
.Чтобы убедиться, что правила перезаписи URL-адресов созданы правильно, введите appcmd.exe list config -section:system.webServer/rewrite/globalRules. Он возвращает globalRules, который выглядит следующим образом:
<system.webServer> <rewrite> <globalRules> <rule name="ARR_myServerFarm_loadbalance" patternSyntax="Wildcard" stopProcessing="true"> <match url="*" /> <conditions> </conditions> <action type="Rewrite" url="http://myServerFarm/{R:0}" /> </rule> </globalRules> </rewrite> </system.webServer>
Чтобы отключить разгрузку SSL, сначала удалите все правила перезаписи URL-адресов:
appcmd.exe clear config -section:system.webServer/rewrite/globalRules
Затем создайте правила перезаписи URL-адресов для пересылки трафика HTTPS. В частности, с этим правилом ARR перенаправит запросы с помощью SSL, если входящие запросы являются HTTPS:
appcmd.exe set config -section:system.webServer/rewrite/globalRules /+"[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True']" /commit:apphost appcmd.exe set config -section:system.webServer/rewrite/globalRules /[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].match.url:"*" /commit:apphost appcmd.exe set config -section:system.webServer/rewrite/globalRules /+"[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].conditions.[input='{HTTPS}',pattern='On']" /commit:apphost appcmd.exe set config -section:system.webServer/rewrite/globalRules /[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].action.type:"Rewrite" /[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].action.url:"https://myServerFarm/{R:0}" /commit:apphost
Наконец, создайте правила перезаписи URL-адресов, чтобы перенаправлять HTTP-трафик в виде чистого текста на серверы приложений:
appcmd.exe set config -section:system.webServer/rewrite/globalRules /+"[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True']" /commit:apphost appcmd.exe set config -section:system.webServer/rewrite/globalRules /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].match.url:"*" /commit:apphost appcmd.exe set config -section:system.webServer/rewrite/globalRules /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].action.type:"Rewrite" /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].action.url:"http://myServerFarm/{R:0}" /commit:apphost
Чтобы убедиться, что правила перезаписи URL-адресов были созданы правильно с отключенной разгрузкой SSL, введите appcmd.exe list config -section:system.webServer/rewrite/globalRules. Он возвращает globalRules, который выглядит следующим образом:
<system.webServer> <rewrite> <globalRules> <rule name="ARR_myServerFarm_loadbalance_SSL" patternSyntax="Wildcard" stopProcessing="true"> <match url="*" /> <conditions> <add input="{HTTPS}" pattern="On" /> </conditions> <action type="Rewrite" url="https://myServerFarm/{R:0}" /> </rule> <rule name="ARR_myServerFarm_loadbalance" patternSyntax="Wildcard" stopProcessing="true"> <match url="*" /> <conditions> </conditions> <action type="Rewrite" url="http://myServerFarm/{R:0}" /> </rule> </globalRules> </rewrite> </system.webServer>
Шаг 2. Настройка мониторинга работоспособности проверка
Маршрутизация запросов приложений отслеживает работоспособность серверов содержимого двумя способами:
- Через динамический трафик
- С помощью явного тестирования URL-адресов
Динамическое тестирование трафика выполняется автоматически по умолчанию при выполнении запросов к маршрутизации запросов приложений. Явное тестирование URL-адресов — это дополнительный тест, который можно использовать при динамическом тестировании трафика. В этом разделе описано пошаговое руководство по настройке явного тестирования URL-адресов.
Чтобы настроить мониторинг работоспособности проверка с помощью пользовательского интерфейса:
- Для тестирования URL-адресов требуется конкретный URL-адрес для тестирования. Чтобы удовлетворить это требование, используйте Блокнот для создания текстового файла с именем healthCheck.txt, содержащего предложение "Я работоспособна".
- Поместите файл healthCheck.txt на серверы приложений.
- Убедитесь, что healthCheck.txt правильно отображается, открыв страницу в браузере.
- В диспетчере IIS выберите ферму серверов myServerFarm. Показаны следующие значки:
- Дважды щелкните тест работоспособности.
- Введите
http://(server name or FQDN of ARR server)/healthCheck.txt
в качестве значения URL-адреса . - Введите работоспособное значение соответствия ответа. Совпадение ответа — это необязательный тест, чтобы убедиться, что текст ответа содержит ожидаемую строку. В этом случае, так как healthCheck.txt содержит предложение "Я работоспособна". Ответ будет искать слово "здоровый".
- Щелкните Apply (Применить), чтобы сохранить изменения.
- Чтобы проверить функциональность мониторинга работоспособности проверка, остановите отслеживаемый сайт на одном из серверов приложений. Так как для значения интервала (секунд) задано значение 30 секунд, дождитесь 30 секунд в течение следующего проверка работоспособности.
- После ожидания 30 секунд отправьте несколько запросов на сервер ARR.
- Чтобы убедиться, что все запросы будут переходить к работоспособному серверу, дважды щелкните " Мониторинг и управление", а затем обновите панель мониторинга с помощью клавиши F5. Обратите внимание, что статистика среды выполнения была сброшена. Это сделано намеренно. При необходимости может потребоваться отправить дополнительные запросы и обновить панель мониторинга.
- Мониторинг работоспособности также используется для обнаружения работоспособности неработоспособного сервера. Чтобы проверить эту функциональность, запустите сайт, остановленный на шаге 9. Опять же, так как значение интервала (секунд) равно 30 секундам, дождитесь 30 секунд в течение следующего проверка работоспособности.
- После ожидания 30 секунд отправьте несколько запросов на сервер ARR.
- Чтобы убедиться, что запросы распределяются равномерно между серверами, обновите панель мониторинга в диспетчере IIS. Обратите внимание, что статистика среды выполнения была сброшена. Это сделано намеренно. При необходимости может потребоваться отправить дополнительные запросы и обновить панель мониторинга.
Чтобы настроить мониторинг работоспособности проверка с помощью командной строки:
Откройте командную строку с правами администратора .
Перейдите к
%windir%\system32\inetsrv
.Чтобы задать URL-адрес
http://(server name or FQDN of ARR server)/healthCheck.txt
работоспособности, в качестве строки для сопоставления введите:appcmd.exe set config -section:webFarms /[name='myServerFarm1'].applicationRequestRouting.healthCheck.url:"http://(server name or FQDN of ARR server)/healthCheck.txt " /[name='myServerFarm1'].applicationRequestRouting.healthCheck.responseMatch:"I am healthy." /commit:apphost
Шаг 3. Настройка сопоставления клиентов
Маршрутизация запросов приложений предоставляет функцию сопоставления клиентов, которая сопоставляет клиента с сервером контента за маршрутизацией запросов приложений в течение сеанса клиента. Если эта функция включена, алгоритм балансировки нагрузки применяется только для самого первого запроса от клиента. С этого момента все последующие запросы от одного клиента будут перенаправлены на тот же сервер содержимого в течение сеанса клиента. Эта функция полезна, если приложение на сервере содержимого работает с отслеживанием состояния, и запросы клиента должны направляться на тот же сервер содержимого, так как управление сеансами не является централизованным.
Чтобы настроить сходство клиентов с помощью пользовательского интерфейса, выполните следующие действия.
- Запустите диспетчер IIS.
- Выберите ферму серверов myServerFarm, созданную в разделе "Определение и настройка группы серверов маршрутизации запросов приложений (ARR).
- Показаны следующие значки:
- Дважды щелкните сходство сервера.
- Чтобы включить сопоставление клиентов, проверка поле проверка сопоставления клиента и нажмите кнопку "Применить".
Маршрутизация запросов приложений использует файл cookie для включения сопоставления клиентов. Имя файла cookie будет использоваться для задания файла cookie на клиенте. Тем не более чем клиент должен принимать файлы cookie для правильной работы клиента. - Чтобы проверить функциональность сопоставления клиентов, отправьте несколько запросов на сервер ARR. Обновите панель мониторинга в диспетчере IIS (мониторинг и управление). Убедитесь, что статистика среды выполнения изменяется только для одного из серверов приложений, на которых клиент был сопоставлен. При необходимости может потребоваться отправить дополнительные запросы и обновить панель мониторинга.
Чтобы настроить сходство клиентов с помощью командной строки, выполните следующие действия.
Откройте командную строку с правами администратора .
Перейдите к
%windir%\system32\inetsrv
.Чтобы включить сходство клиентов, введите следующее:
appcmd.exe set config -section:webFarms /[name='myServerFarm1'].applicationRequestRouting.affinity.useCookie:"True" /commit:apphost
Шаг 4. Запрет новых подключений
Запрет новых подключений на сервере — это грациозный способ вывода сервера из среды фермы серверов. Более понятно, когда используется функция сопоставления клиентов, так как маршрутизация запросов приложений будет учитывать существующие сеансы при отключении новых подключений. То есть, когда клиент сходится с сервером, который не разрешает новые подключения, клиент будет продолжать направляться на тот же сервер и, следовательно, не оказывает влияния на клиента. Однако новые клиенты не будут перенаправлены на сервер, который запрещает новые подключения.
Чтобы запретить новые подключения с помощью пользовательского интерфейса:
- Используя настройку из шага 3 выше, определите сервер, к которому связан клиент.
- Выберите ферму серверов myServerFarm, созданную в разделе "Определение и настройка группы серверов маршрутизации запросов приложений (ARR).
- Показаны следующие значки:
- Дважды щелкните " Мониторинг и управление".
- Выберите сервер, в котором ваш клиент сходен. В области действий нажмите кнопку "Запретить новые Подключение".
- В диалоговом окне подтверждения нажмите кнопку Да.
- Чтобы убедиться, что запросы от клиентов продолжают направляться на сопоставленный сервер, который теперь запрещает новые подключения, отправляет несколько запросов на сервер ARR. Обновите панель мониторинга в диспетчере IIS. Убедитесь, что статистика среды выполнения изменяется только для сервера, на который клиент сходится. При необходимости может потребоваться отправить дополнительные запросы и обновить панель мониторинга.
- Чтобы убедиться, что новые клиенты не направляются на сервер, который запрещает новые подключения, удалите файлы cookie, заданные маршрутизацией запросов приложений, закрыв и перезапустив браузер.
- Отправьте несколько запросов на сервер ARR. Обновите панель мониторинга в диспетчере IIS. Убедитесь, что статистика среды выполнения изменяется только для серверов, доступных. В частности, убедитесь, что статистика среды выполнения сервера не позволяет изменять новые подключения. При необходимости может потребоваться отправить дополнительные запросы и обновить панель мониторинга.
Итоги
Теперь вы успешно настроили ряд параметров маршрутизации запросов приложений для горизонтального масштабирования и равномерного распределения нагрузки. Дополнительные возможности маршрутизации с помощью маршрутизации запросов приложений см. в статье "Использование маршрутизации запросов приложений".