Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вон Йо
Обеспечение высокого уровня доступности и масштабируемости:
Маршрутизация запросов приложений Майкрософт (ARR) для IIS 7.0 и более поздних версий и балансировка нагрузки сети (NLB).
| Корпорация Майкрософт |
|---|
| Автор: Ахмед Бишт, Вон Йо |
| Опубликовано: 13 ноября 2008 г. |
Краткие сведения
В этом документе содержатся инструкции по использованию маршрутизации запросов приложений (ARR) с балансировкой сетевой нагрузки (NLB) для обеспечения высокой доступности и масштабируемости.
Обзор
Маршрутизация запросов приложений (ARR) для IIS 7.0 и выше — это модуль маршрутизации на основе прокси-сервера, который перенаправит HTTP-запросы на серверы контента на основе заголовков HTTP, переменных сервера и алгоритмов балансировки нагрузки. Обычное развертывание ARR показано на схеме ниже:
Хотя ARR обеспечивает высокий уровень доступности и масштабируемость для серверов содержимого, общее развертывание не является высокодоступным или масштабируемым, так как:
- ARR — это единственная точка сбоя.
- Масштабируемость серверов содержимого ограничена максимальной емкостью одного сервера ARR.
Чтобы устранить эти проблемы, администраторы могут рассмотреть возможность использования нескольких серверов ARR с балансировкой сетевой нагрузки (NLB). ARR можно развернуть в активном/пассивном режиме, чтобы обеспечить высокую доступность, или в активном/активном режиме, чтобы обеспечить и высокую доступность, и масштабируемость. В этом техническом документе описывается, как можно развертывать ARR и NLB для обеспечения основных сценариев ARR при достижении общей высокой доступности и масштабируемости. NLB доступна для всех редакций Windows Server 2008.
Использование маршрутизации запросов приложений и балансировки сетевой нагрузки
ARR создается как модуль на основе IIS и предназначен для принятия решений по маршрутизации на уровне 7 (приложение). Более точно ARR использует другой модуль IIS, перезапись URL-адресов, чтобы проверить входящие заголовки HTTP-запросов и переменные сервера для принятия решений о маршрутизации. Учитывая эту структуру, администраторы могут создавать интеллектуальные правила маршрутизации на основе сведений об уровне приложения, таких как:
- Имя узла (HTTP_HOST): маршрутизация трафика на разные серверы контента на основе имени узла.
- Запрошенный ресурс (URL-адрес): на основе расширений файлов определите, являются ли запрошенные ресурсы статическим содержимым или динамическим содержимым, а также маршрутизировать запросы соответствующим образом.
- Сведения о клиенте (HTTP_USER_AGENT): на основе типа браузера и версии перенаправите запросы на соответствующие серверы содержимого.
- Пользовательские заголовки (устанавливаемые как файлы cookie приложениями): Маршрутизация трафика на основе информации о файлах cookie, устанавливаемых приложениями, таких как предпочтения пользователя или идентификатор пользователя.
Выше приведены лишь некоторые из примеров. Полный список заголовков HTTP и переменных сервера см. в приложении A.
Так как NLB принимает решения о маршрутизации на уровне 3, сведения о конкретных приложениях, такие как заголовки HTTP и переменные сервера, нельзя использовать для обеспечения маршрутизации на основе приложений. В то же время ARR не предоставляет отказоустойчивые функции развертывания для себя и должен полагаться на другие дополнительные технологии и решения для обеспечения высокой доступности для уровня ARR. NLB работает на другом уровне в сетевом стеке и включен на тех же серверах, что и при развертывании ARR:
Сценарий 1. Маршрутизация на основе HTTP и балансировка нагрузки
Сценарий маршрутизации и балансировки нагрузки на основе HTTP позволяет использовать архитектуру развертывания на уровне 3 уровня, которая включает в себя:
- Уровень 1 (Web): предоставляет двойные цели обработки статического содержимого и маршрутизации и балансировки нагрузки оставшихся динамических запросов на серверы уровня 2.
- Уровень 2 (приложение): обрабатывает динамическое содержимое, использующее бизнес-логику.
- Уровень 3 (Данные): хранит данные.
На следующей схеме показано развертывание 3 уровня:
Хотя в приведенном выше примере показано правило маршрутизации, которое отличает статическое содержимое от динамического содержимого, другой распространенный сценарий — различать запросы презентации от запросов веб-службы.
Вариант1: активный или пассивный
В режиме "Активный/Пассивный" обычно есть два сервера ARR, где один сервер обрабатывает запросы, а другой сервер является резервным на случай неисправности. Как отмечалось выше, в то время как эта конфигурация обеспечивает высокую доступность, удаляя единую точку сбоя, это не решение для горизонтального масштабирования, так как совокупная емкость серверов содержимого ограничена максимальной емкостью одного сервера ARR.
В этой настройке, так как два сервера ARR настроены так же, используется общая конфигурация. Сначала установите ARR на обоих серверах, а затем создайте кластер NLB. Кластер NLB настроен для приема трафика только на одном из узлов кластера. Настраивая правила портов кластера в режиме фильтрации одного узла, этого можно достичь. Узел, принимающий трафик, определяется настройкой приоритета узла в кластерных узлах NLB. Дополнительные сведения см. в разделе конфигурация NLB.
За исключением функции привязки по имени узла в ARR, нет информации о состоянии выполнения, которая должна разделяться между двумя серверами ARR. Таким образом, для этого сценария специальная конфигурация не требуется для ARR или NLB. Даже если вы используете функцию привязки к серверу в ARR, связанные с сервером данные о состоянии будут доступны пассивному серверу через cookie в HTTP-заголовке запроса.
Этот сценарий полностью поддерживается в выпуске ARR версии 1.
Конфигурация ARR
Шаг 1. Включение общей конфигурации на двух серверах ARR.
- Выполните действия, описанные в этом документе, чтобы настроить общую конфигурацию в IIS.
Шаг 2. Настройка 3-уровней архитектуры развертывания с помощью ARR.
Выполните действия, описанные в этом документе, чтобы настроить ARR в архитектуре развертывания 3 уровня.
На высоком уровне приведенный выше документ описывает:
- Как сделать статический контент доступным на сервере ARR.
- Как записывать правила перезаписи URL-адресов для статического содержимого, чтобы они обслуживались непосредственно с сервера ARR.
- Как записывать правила перезаписи URL-адресов для динамического содержимого, чтобы они перенаправляются на серверы приложений.
Конфигурация NLB
Конфигурация NLB разделена на следующие действия:
- Установите функцию NLB на всех серверах ARR.
- Создайте кластер NLB для ARR.
- Настройте NLB для активного и пассивного развертывания.
Установка функции NLB на всех серверах ARR
- Откройте диспетчер серверов.
- Разверните функции.
- Нажмите кнопку "Добавить компоненты".
- В мастере добавления компонентов выберите "Балансировка сетевой нагрузки".
- Нажмите кнопку "Установить", чтобы подтвердить установку компонента NLB.
- Убедитесь, что компонент NLB успешно установлен.
- Повторите описанные выше действия на всех серверах ARR.
- Убедитесь, что NLB устанавливается на всех экземплярах серверов ARR.
- Перейдите к разделу "Запуск > всех программ администрирования" > и откройте диспетчер балансировки нагрузки сети.
- Щелкните правой кнопкой мыши кластеры балансировки нагрузки сети и выберите новый кластер.
- В диалоговом окне "Создать кластер" в текстовом поле "Хост" введите адрес одного из серверов системы ARR. Если существует несколько интерфейсов, введите адрес сервера, на который нужно создать кластер NLB.
- В активном/пассивном режиме (одиночный режим узла в NLB) приоритет определяет порядок, в котором выполняется отработка отказа. По умолчанию сервер с приоритетом 1 является активным узлом.
- Требуется IP-адрес кластера, виртуальный IP-адрес. Нажмите кнопку "Добавить ". Это IP-адрес, с которыми клиенты будут взаимодействовать.
- Введите виртуальный IP-адрес и нажмите кнопку "ОК".
- Нажмите кнопку Далее.
- Примите значения по умолчанию. Дополнительные сведения см. в приложении.
- Нажмите кнопку "Готово ", чтобы завершить создание кластера NLB.
- Теперь, когда кластер NLB создан, вы можете добавить в кластер дополнительные члены. Выполните оставшиеся действия на всех дополнительных серверах-членах. В диспетчере балансировки нагрузки сети щелкните правой кнопкой мыши только что выбранный кластер, а затем выберите "Добавить узел в кластер".
- Введите адрес сервера добавляемого участника. Если существует несколько интерфейсов, выберите тот, который должен использоваться кластером NLB.
- Обратите внимание, что назначение приоритета является взаимоисключающим и уникальным среди серверов-членов в кластере. В активном/пассивном режиме (режим одного узла в NLB) приоритет определяет порядок переключения при отказе.
- Нажмите кнопку "Готово ", чтобы добавить сервер-член в кластер.
-
Диспетчер балансировки нагрузки сети должен выглядеть следующим образом:
Настройка NLB для активного и пассивного развертывания
- Чтобы настроить NLB для активного или пассивного развертывания, в диспетчере балансировки нагрузки сети щелкните кластер правой кнопкой мыши и выберите свойства кластера. Щелкните вкладку "Правила порта ". Нажмите кнопку "Изменить".
- Выберите одиночный хост и нажмите ОК.
NLB успешно настроен для работы в активно/пассивном режиме с ARR.
Вариант 2: Active/Active
В режиме Active/Active можно использовать два или более серверов ARR. Эта конфигурация обеспечивает как высокий уровень доступности, так и масштабируемость, в отличие от режима "Активный/пассивный", который обеспечивает только высокую доступность.
Как отмечалось ранее, так как несколько серверов ARR настроены одинаково, используется общая конфигурация. Основное различие заключается в настройке NLB. Чтобы одновременно использовать все серверы ARR, правило порта кластера NLB настраивается в нескольких режимах узла.
Независимо от того, включена ли функция сопоставления на NLB или нет, на серверах ARR не требуется специальная конфигурация. Для одной из них серверы ARR используют одну общую конфигурацию, чтобы они были настроены так же. Во-вторых, так как ARR использует файл cookie клиента для хранения сведений о сопоставлении сервера для собственного использования, эти сведения доступны для каждого запроса и поэтому доступны на серверах ARR. Рекомендация для NLB заключается в том, чтобы задать соответствие ни с чем, так как это приводит к более равномерному распределению нагрузки.
Этот сценарий полностью поддерживается в выпуске ARR версии 1.
Конфигурация ARR
Конфигурация ARR для Active/Active идентична конфигурации Active/Passive. Основное различие заключается в настройке NLB.
Шаг 1. Включение общей конфигурации на двух серверах ARR.
- Выполните действия, описанные в этом документе, чтобы настроить общую конфигурацию в IIS.
Шаг 2. Настройка 3-уровней архитектуры развертывания с помощью ARR.
Выполните действия, описанные в этом документе, чтобы настроить ARR в архитектуре развертывания 3 уровня.
На высоком уровне приведенный выше документ описывает:
- Как сделать статический контент доступным на сервере ARR.
- Как записывать правила перезаписи URL-адресов для статического содержимого, чтобы они обслуживались непосредственно с сервера ARR.
- Как записывать правила перезаписи URL-адресов для динамического содержимого, чтобы они перенаправляются на серверы приложений.
Конфигурация NLB
Конфигурация NLB разделена на следующие действия:
- Установите функцию NLB на всех серверах ARR.
- Создайте кластер NLB для ARR.
- Настройте NLB для активного/активного развертывания.
Установите функцию NLB на всех серверах ARR: документировано [здесь](достижение высокого уровня доступности и масштабируемости-arr-and-nlb.md#install NLB).
Создание кластера NLB для ARR: документировано [здесь](достижение высокого уровня доступности и масштабируемости-arr-and-nlb.md#create nlb).
Настройте NLB для активного/активного развертывания.
- Чтобы настроить NLB для активного или активного развертывания, в диспетчере балансировки нагрузки сети щелкните кластер правой кнопкой мыши и выберите свойства кластера. Щелкните вкладку "Правила порта ". Нажмите кнопку "Изменить".
- Выберите Множественные узлы. Для параметра affinity выберите None. Как упоминалось выше, рекомендация заключается в том, чтобы не использовать сходство в NLB, так как это приведет к лучшему распределению нагрузки.
NLB успешно настроен для работы в активно-активном режиме с помощью ARR.
Сценарий 2. Совместное размещение с использованием привязки к имени хоста
Этот сценарий использует функцию сопоставления имен узла в ARR, чтобы включить развертывание общего размещения следующим образом:
- Уменьшите управление и обслуживание вручную, связанное с традиционным развертыванием общего размещения.
- Максимально увеличить существующие ресурсы сервера, обеспечивая равномерное использование всех ресурсов сервера.
- Легко масштабировать среду.
- Создание бизнес-возможностей для продажи дополнительной емкости.
Дополнительные сведения о общем размещении и ARR см. в этом документе.
На следующей схеме показана общая среда размещения с помощью ARR:
Вариант1: активный или пассивный
Как отмечалось ранее, в Active/Passive режиме обычно есть два сервера ARR, в которых один сервер обрабатывает запросы, в то время как другой является резервным сервером. Хотя эта конфигурация обеспечивает высокий уровень доступности, удалив единую точку сбоя, это не решение горизонтального масштабирования, так как совокупная емкость серверов содержимого ограничена максимальной емкостью одного сервера ARR.
В этой настройке, так как два сервера ARR настроены так же, используется общая конфигурация. Кластер NLB настроен для приема трафика только на одном из узлов кластера. Это достигается путем настройки правил кластера в режиме фильтрации одиночного хоста. Узел, принимающий трафик, определяется настройкой приоритета узла в кластерных узлах NLB. Дополнительные сведения см. в разделе конфигурация NLB.
Функция сопоставления имен узла в ARR сравнит запросы к конкретному серверу (или группе серверов в RC) на основе имени узла. Сведения о состоянии выполнения аффинированного сопоставления между именами узлов и серверами содержимого сохраняются в памяти в экземпляре сервера ARR. В выпуске ARR версии 1 ARR использует Microsoft External Cache версии 1 для IIS для совместного использования и поддержания этого состояния среды выполнения между несколькими серверами ARR. Дополнительные сведения об этом сценарии доступны в этом документе.
Этот сценарий полностью поддерживается в выпуске ARR версии 1.
Конфигурация ARR
Шаг 1. Настройка Application Request Routing (ARR) для веб-хостинга с общим использованием и привязкой к имени хоста.
- Выполните действия, описанные в этом документе, чтобы настроить функцию аффинити имени хоста в ARR для общего хостинга.
Шаг 2. Включение и настройка внешнего кэша.
- Выполните действия, описанные в этом документе, чтобы включить и настроить внешний кэш.
Конфигурация NLB
Конфигурация NLB разделена на следующие действия:
- Установите функцию NLB.
- Создайте кластер NLB для ARR.
- Настройте NLB для активного и пассивного развертывания.
Установите компонент NLB: задокументировано [здесь](документация по достижению высокой доступности и масштабируемости-arr-and-nlb.md#Установка компонентов NLB).
Создание кластера NLB для ARR: документировано [здесь](достижение высокого уровня доступности и масштабируемости-arr-and-nlb.md#Создание кластера NLB для ARR).
Настройка NLB для активного и пассивного развертывания: документировано [здесь](достижение высокого уровня доступности и масштабируемости-arr-and-nlb.md#Configure NLB для активного или пассивного).
Вариант 2: Активный/Активный в ARR
В режиме Active/Active можно использовать два или более серверов ARR. Эта конфигурация обеспечивает высокий уровень доступности и масштабируемости, в отличие от режима "Активный или пассивный", что обеспечивает высокую доступность. Так как несколько серверов ARR настроены одинаково, используется общая конфигурация. Чтобы использовать все серверы ARR одновременно, NLB настраивается в режиме множественных хостов. Как отмечалось ранее, информация о состоянии во время выполнения сопоставления между именами узлов и серверами содержимого хранится в памяти экземпляра сервера ARR. Для совместного использования этих сведений между несколькими серверами ARR используется внешний кэш Майкрософт для IIS. Дополнительные сведения о внешнем кэше см. в этом документе.
Конфигурация ARR
Конфигурация ARR для Active/Active идентична конфигурации Active/Passive. Основное различие заключается в настройке NLB.
Шаг 1. Настройка Application Request Routing (ARR) для веб-хостинга с общим использованием и привязкой к имени хоста.
- Выполните действия, описанные в этом документе, чтобы настроить функцию аффинити имени хоста в ARR для общего хостинга.
Шаг 2. Включение и настройка внешнего кэша.
- Выполните действия, описанные в этом документе, чтобы включить и настроить внешний кэш.
Конфигурация NLB
Конфигурация NLB разделена на следующие действия:
- Установите функцию NLB.
- Создайте кластер NLB для ARR.
- Настройте NLB для активного/активного развертывания.
Установите компонент NLB: задокументировано [здесь](документация по достижению высокой доступности и масштабируемости-arr-and-nlb.md#Установка компонентов NLB).
Создание кластера NLB для ARR: документировано [здесь](достижение высокого уровня доступности и масштабируемости-arr-and-nlb.md#Создание кластера NLB для ARR).
Настройка NLB для активного/активного развертывания: документировано [здесь](достижение высокого уровня доступности и масштабируемости-arr-and-nlb.md#Configure NLB for active/active). Рекомендация заключается в том, чтобы не использовать сходство в NLB для этого сценария ARR.
Сводка
В этом техническом документе рассматриваются два основных сценария ARR для обеспечения высокой доступности и масштабируемости путем развертывания нескольких серверов ARR и использования NLB.
Приложение
Приложение A. Все доступные заголовки HTTP и переменные сервера для написания правил принятия решений маршрутизации
| ALL_HTTP | ALL_RAW | APPL_MD_PATH |
|---|---|---|
| APPL_PHYSICAL_PATH | CERT_COOKIE | CERT_FLAGS |
| CERT_ISSUER | CERT_KEYSIZE | CERT_SECRETKEYSIZE |
| CERT_SERIALNUMBER | CERT_SERVER_ISSUER | CERT_SERVER_SUBJECT |
| ТЕМА_СЕРТИФИКАТА | CONTENT_LENGTH | CONTENT_TYPE |
| DOCUMENT_ROOT | GATEWAY_INTERFACE | HTTP_ACCEPT |
| HTTP_ACCEPT_ENCODING | HTTP_ACCEPT_LANGUAGE | HTTP_CONNECTION |
| HTTP_CONTENT_LENGTH | HTTP_HOST | HTTP_IF_MODIFIED_SINCE |
| HTTP_IF_NONE_MATCH | HTTP_REFERER | HTTP_UA_CPU |
| HTTP_USER_AGENT | HTTPS | HTTPS_KEYSIZE |
| HTTPS_SECRETKEYSIZE | HTTPS_SERVER_ISSUER | HTTPS_SERVER_SUBJECT |
| INSTANCE_ID | INSTANCE_META_PATH | LOCAL_ADDR |
| PATH_INFO | PATH_TRANSLATED | QUERY_STRING (Строка_запроса) |
| REMOTE_ADDR | REMOTE_HOST | REMOTE_PORT |
| REMOTE_USER (удаленный_пользователь) | REQUEST_FILENAME | REQUEST_METHOD |
| REQUEST_URI | SCRIPT_FILENAME | SCRIPT_NAME |
| SERVER_ADDR | SERVER_NAME | SERVER_PORT |
| ЗАЩИЩЕННЫЙ ПОРТ СЕРВЕРА | SERVER_PROTOCOL | SERVER_SOFTWARE |
| URL |
Приложение B. Дополнительная документация по NLB
Инструкции по NLB Server Core:
- Установите функцию NLB:
https://download.microsoft.com/download/6/3/5/6350896f-1e08-440b-9f24-d50f5e9b2390/ServerCoredeepdive.ppt
- Установите функцию NLB:
NLB и SSL:
Другие ссылки на NLB:
- https://technet.microsoft.com/library/cc782694.aspx
- https://technet.microsoft.com/library/cc778263.aspx
https://support.microsoft.com/kb/323437https://support.microsoft.com/kb/890159- https://blogs.msdn.com/clustering