Достижение высокого уровня доступности и масштабируемости — ARR и NLB

По Вон Ю

Достижение высокого уровня доступности и масштабируемости.
Маршрутизация запросов приложений Майкрософт (ARR) для IIS 7.0 и более поздних версий и балансировка сетевой нагрузки (NLB).

Microsoft Corporation
Автор: Ахмед Бишт, Вон Ю
Опубликовано: 13 ноября 2008 г.

Краткие сведения

В этом документе содержатся инструкции по использованию маршрутизации запросов приложений (ARR) с балансировкой сетевой нагрузки (NLB) для достижения высокого уровня доступности и масштабируемости.

Общие сведения

Маршрутизация запросов приложений (Майкрософт) (ARR) для IIS 7.0 и более поздних версий — это модуль маршрутизации на основе прокси-сервера, который пересылает HTTP-запросы на серверы содержимого на основе заголовков HTTP, переменных сервера и алгоритмов балансировки нагрузки. Типичное развертывание ARR показано на схеме ниже.

Схема, показывающая перенаправление запросов H T T P A R.

Хотя ARR обеспечивает высокий уровень доступности и масштабируемости для серверов содержимого, общее развертывание не является высокодоступным или масштабируемым, так как:

  • ARR — это единственная точка отказа.
  • Масштабируемость серверов содержимого ограничена максимальной емкостью одного сервера ARR.

Чтобы устранить эти проблемы, администраторы могут рассмотреть возможность использования нескольких серверов ARR с балансировкой сетевой нагрузки (NLB). ARR можно развернуть в активном и пассивном режиме только для достижения высокого уровня доступности или в режиме "активный—активный" для достижения высокого уровня доступности и масштабируемости. В этом техническом документе описывается, как ARR и NLB можно развертывать вместе, чтобы реализовать основные сценарии ARR при достижении общей высокой доступности и масштабируемости. Балансировка сетевой нагрузки доступна на всех номерах SKU Windows Server 2008.

Использование маршрутизации запросов приложений и балансировки сетевой нагрузки

ARR создается как модуль на основе IIS и предназначен для принятия решений о маршрутизации на уровне 7 (приложение). Точнее, ARR использует другой модуль IIS, перезапись URL-адресов, для проверки входящих заголовков HTTP-запросов и переменных сервера для принятия решений о маршрутизации. Учитывая эту структуру, администраторы могут создавать интеллектуальные правила маршрутизации на основе сведений об уровне приложения, таких как:

  • Имя узла (HTTP_HOST): маршрутизация трафика на разные серверы содержимого на основе имени узла.
  • Запрошенный ресурс (URL-адрес). На основе расширений файлов определите, относятся ли запрошенные ресурсы к статическому содержимому или динамическому содержимому, и перенаправите запросы соответствующим образом.
  • Сведения о клиенте (HTTP_USER_AGENT). В зависимости от типа и версии браузера перенаправите запросы на соответствующие серверы содержимого.
  • Пользовательские заголовки (приложениями задаются в качестве файла cookie): маршрутизирует трафик на основе сведений о файлах cookie, заданных приложениями, таких как предпочтения пользователя или идентификатор пользователя.

Ниже приведены лишь некоторые примеры. Полный список заголовков HTTP и переменных сервера см. в приложении А.

Так как NLB принимает решения о маршрутизации на уровне 3, для маршрутизации на уровне приложений нельзя использовать сведения о конкретном приложении, например заголовки HTTP и переменные сервера. В то же время ARR не предоставляет отказоустойчивые функции развертывания для себя и должен полагаться на другие дополнительные технологии и решения для достижения высокого уровня доступности для уровня ARR. Балансировка сетевой нагрузки работает на другом уровне в сетевом стеке и включена на тех же серверах, где развернутА ARR:

Диграмма, показывающая подключения между A R R 1 и 2 и серверами содержимого.

Сценарий 1. Маршрутизация и балансировка нагрузки на основе HTTP

Сценарий маршрутизации и балансировки нагрузки на основе HTTP обеспечивает трехуровневую архитектуру развертывания, которая включает в себя:

  • Уровень 1 (Интернет). Обеспечивает двойную обработку статического содержимого, маршрутизацию и балансировку нагрузки оставшихся динамических запросов к серверам уровня 2.
  • Уровень 2 (приложение). Обрабатывает динамическое содержимое, использующее бизнес-логику.
  • Уровень 3 (данные). Хранит данные.

На следующей схеме показано трехуровневое развертывание.

Схема, показывающая поток содержимого между R R и серверами содержимого на каждом уровне.

Хотя в приведенном выше примере показано правило маршрутизации, которое отличает статическое содержимое от динамического, другой распространенный сценарий заключается в отличии запросов на представление от запросов веб-службы.

Вариант 1: активный/пассивный

В режиме "активный— пассивный" обычно есть два сервера ARR, на которых один сервер обрабатывает запросы, а другой сервер находится в качестве сервера отработки отказа. Как отмечалось выше, хотя эта конфигурация обеспечивает высокий уровень доступности за счет удаления единой точки отказа, она не является решением для горизонтального масштабирования, так как совокупная емкость серверов содержимого ограничена максимальной емкостью одного сервера ARR.

В этой настройке, так как два сервера ARR настроены одинаково, используется общая конфигурация. Сначала установите ARR на обоих серверах, а затем создайте кластер NLB. Кластер балансировки сетевой нагрузки настроен на прием трафика только на одном из узлов кластера. Это достигается путем настройки правил портов кластера с режимом фильтрации с одним узлом. Узел, принимающий трафик, определяется параметром приоритета узла для узлов кластера балансировки сетевой нагрузки. Дополнительные сведения см. в разделе Конфигурация балансировки сетевой нагрузки .

За исключением функции сопоставления имен узлов в ARR, нет сведений о состоянии среды выполнения, которые должны быть совместно использоваться двумя серверами ARR. Поэтому для этого сценария не требуется специальная настройка для ARR или NLB. Даже если вы используете функцию сопоставления серверов в ARR, сведения о сопоставленном состоянии будут доступны пассивному серверу через файл cookie в заголовке запроса.

Этот сценарий полностью поддерживается в выпуске ARR версии 1.

Настройка ARR

Шаг 1. Включение общей конфигурации на двух серверах ARR.

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

Шаг 2. Настройка трехуровневой архитектуры развертывания с помощью ARR.

  • Выполните действия, описанные в этом документе, чтобы настроить ARR в трехуровневой архитектуре развертывания.

  • В общих чертах приведенный выше документ описывает:

    • Как сделать статическое содержимое доступным на сервере ARR.
    • Как написать правила перезаписи URL-адресов для статического содержимого, чтобы оно обслуживалось непосредственно с сервера ARR.
    • Как написать правила перезаписи URL-адресов для динамического содержимого, чтобы оно перенаправляться на серверы приложений.

Конфигурация сетевой подсистемы балансировки нагрузки

Конфигурация сетевой подсистемы балансировки нагрузки состоит из следующих этапов.

  1. Установите компонент балансировки сетевой нагрузки на всех серверах ARR.
  2. Создайте кластер балансировки сетевой нагрузки для ARR.
  3. Настройте балансировку балансировки сетевой нагрузки для активного и пассивного развертывания.

Установка функции балансировки сетевой нагрузки на всех серверах ARR

  1. Откройте Диспетчер сервера.
    Снимок экрана: окно диспетчер сервера с подробными сведениями на главной панели.
  2. Разверните узел Компоненты.
  3. Нажмите кнопку Добавить компоненты.
  4. В мастере добавления компонентов выберите Балансировка сетевой нагрузки.
    Снимок экрана: окно мастера добавления компонентов с функциями на главной панели.
  5. Нажмите кнопку Установить , чтобы подтвердить установку компонента балансировки сетевой нагрузки.
    Снимок экрана: окно мастера добавления компонентов с подтверждением выбора установки на главной панели.
  6. Убедитесь, что компонент балансировки сетевой нагрузки установлен успешно.
    Снимок экрана: окно мастера добавления компонентов со страницей
  7. Повторите описанные выше действия на всех серверах ARR.

Создание кластера балансировки сетевой нагрузки для ARR

  1. Убедитесь, что балансировка сетевой нагрузки установлена на всех экземплярах серверов ARR.
  2. Перейдите в раздел Запуск > всех программ > Администрирование и откройте диспетчер балансировки сетевой нагрузки.
    Снимок экрана: окно диспетчера балансировки сетевой нагрузки с выделенными кластерами балансировки сетевой нагрузки.
  3. Щелкните правой кнопкой мыши Кластеры балансировки сетевой нагрузки и выберите Создать кластер.
    Снимок экрана: диалоговое окно
  4. В диалоговом окне Новый кластер в текстовом поле Узел введите адрес сервера одного из серверов ARR. При наличии нескольких интерфейсов введите адрес сервера, на который требуется создать кластер балансировки сетевой нагрузки.
    Снимок экрана: диалоговое окно создания кластера с ip-адресом в поле ввода узла.
  5. В режиме "активный/ пассивный" (режим с одним узлом в NLB) приоритет определяет порядок отработки отказа. По умолчанию активным узлом является сервер с приоритетом 1.
    Снимок экрана: диалоговое окно
  6. Требуется IP-адрес кластера( виртуальный IP-адрес). Нажмите кнопку Добавить. Это IP-адрес, с которым будут взаимодействовать клиенты.
    Снимок экрана: диалоговое окно
  7. Введите виртуальный IP-адрес и нажмите кнопку ОК.
    Снимок экрана: диалоговое окно
  8. Щелкните Далее.
    Снимок экрана: диалоговое окно
  9. Примите значения по умолчанию. Более подробные сведения см. в приложении.
    Снимок экрана: диалоговое окно
  10. Нажмите кнопку Готово , чтобы завершить создание кластера NLB.
    Снимок экрана: диалоговое окно
  11. Теперь, когда кластер NLB создан, вы можете добавить в кластер дополнительные члены. Выполните остальные действия на всех дополнительных рядовом серверах. В диспетчере балансировки сетевой нагрузки щелкните правой кнопкой мыши только что выбранный кластер и выберите Добавить узел в кластер.
    Снимок экрана: диалоговое окно
  12. Введите адрес сервера добавляемого члена. При наличии нескольких интерфейсов выберите интерфейс, который должен использоваться кластером балансировки сетевой нагрузки.
    Снимок экрана: диалоговое окно
  13. Обратите внимание, что назначение приоритета является взаимоисключающим и уникальным среди рядового сервера в кластере. В режиме "активный/ пассивный" (режим с одним узлом в NLB) приоритет определяет порядок отработки отказа.
    Снимок экрана: диалоговое окно
  14. Нажмите кнопку Готово , чтобы добавить рядовой сервер в кластер.
    Снимок экрана: диалоговое окно
  15. Диспетчер сетевых Load Balancer должен выглядеть примерно так:
    Снимок экрана: окно диспетчера балансировки сетевой нагрузки.

Настройка балансировки сетевой нагрузки для активного и пассивного развертывания

  1. Чтобы настроить NLB для активного и пассивного развертывания, в диспетчере балансировки сетевой нагрузки щелкните правой кнопкой мыши кластер и выберите Свойства кластера. Перейдите на вкладку Правила порта . Нажмите кнопку Изменить.
    Снимок экрана: диалоговое окно
  2. Выберите Один узел и нажмите кнопку ОК.
    Снимок экрана: диалоговое окно добавления и изменения правила порта. В разделе Режим фильтрации выбран один узел.

Балансировка сетевой нагрузки успешно настроена для работы в активном и пассивном режиме с ARR.

Вариант 2: активный/активный

В режиме "активный/активный" можно использовать два или более серверов ARR. Эта конфигурация обеспечивает высокий уровень доступности и масштабируемости, в отличие от режима "Активный/сквозной", который обеспечивает только высокий уровень доступности.

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

Независимо от того, включена ли функция сопоставления на NLB или нет, специальная настройка на серверах ARR не требуется. Например, серверы ARR используют одну общую конфигурацию, чтобы настроить их таким же образом. Во-вторых, поскольку ARR использует файл cookie клиента для хранения сведений о сходстве сервера для собственного использования, эти сведения доступны для каждого запроса и, следовательно, доступны на серверах ARR. Для балансировки сетевой нагрузки рекомендуется задать для сходства значение None, так как это приводит к более равномерному распределению нагрузки.

Этот сценарий полностью поддерживается в выпуске ARR версии 1.

Настройка ARR

Конфигурация ARR для параметра "активный/активный" идентична конфигурации "активный/пассивный". Основное различие заключается в настройке балансировки сетевой нагрузки.

Шаг 1. Включение общей конфигурации на двух серверах ARR.

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

Шаг 2. Настройка трехуровневой архитектуры развертывания с помощью ARR.

  • Выполните действия, описанные в этом документе, чтобы настроить ARR в трехуровневой архитектуре развертывания.

  • В общих чертах приведенный выше документ описывает:

    • Как сделать статическое содержимое доступным на сервере ARR.
    • Как написать правила перезаписи URL-адресов для статического содержимого, чтобы оно обслуживалось непосредственно с сервера ARR.
    • Как написать правила перезаписи URL-адресов для динамического содержимого, чтобы оно перенаправляться на серверы приложений.

Конфигурация сетевой подсистемы балансировки нагрузки

Конфигурация сетевой подсистемы балансировки нагрузки состоит из следующих этапов.

  1. Установите компонент балансировки сетевой нагрузки на всех серверах ARR.
  2. Создайте кластер балансировки сетевой нагрузки для ARR.
  3. Настройте балансировку балансировки сетевой нагрузки для активного и активного развертывания.

Установите функцию балансировки сетевой нагрузки на всех серверах ARR: задокументировано [здесь](достижение высокого уровня доступности и масштабируемости arr-and-nlb.md#install NLB).

Создание кластера NLB для ARR: задокументировано [здесь](достижение высокого уровня доступности и масштабируемости arr-and-nlb.md#create nlb).

Настройте балансировку балансировки сетевой нагрузки для активного и активного развертывания.

  1. Чтобы настроить балансировку сетевой нагрузки для активного развертывания, в диспетчере балансировки сетевой нагрузки щелкните кластер правой кнопкой мыши и выберите Свойства кластера. Перейдите на вкладку Правила порта . Нажмите кнопку Изменить.
    Снимок экрана: диалоговое окно
  2. Выберите Несколько узлов. Для параметра Сходство выберите Нет. Как упоминалось выше, рекомендуется не использовать сходство в балансировке нагрузки, так как это приведет к лучшему распределению нагрузки.
    Снимок экрана: диалоговое окно добавления и изменения правила порта. В разделе Режим фильтрации выбрано несколько узлов.

Балансировка сетевой нагрузки успешно настроена для работы в режиме "активный—активный" с ARR.

Сценарий 2. Совместное размещение с использованием сопоставления имени узла

В этом сценарии используется функция сопоставления имени узла в ARR, чтобы обеспечить развертывание общего размещения для:

  • Сократите ручное управление и обслуживание, связанное с традиционным развертыванием общего размещения.
  • Увеличьте существующие ресурсы сервера, обеспечивая равномерное использование всех ресурсов сервера.
  • Простое масштабирование среды.
  • Создание бизнес-возможностей для продажи дополнительных мощностей.

Дополнительные сведения о совместном размещении и ARR см. в этом документе.

На следующей схеме показана общая среда размещения с использованием ARR:

Схема, показывающая поток запросов и ответов.

Вариант 1: активный/пассивный

Как отмечалось ранее, в режиме "активный- пассивный" обычно имеется два сервера ARR, на которых один сервер обрабатывает запросы, в то время как другой сервер находится в качестве сервера отработки отказа. Хотя эта конфигурация обеспечивает высокий уровень доступности за счет удаления единой точки отказа, она не является решением для горизонтального масштабирования, так как совокупная емкость серверов содержимого ограничена максимальной емкостью одного сервера ARR.

В этой настройке, так как два сервера ARR настроены одинаково, используется общая конфигурация. Кластер балансировки сетевой нагрузки настроен на прием трафика только на одном из узлов кластера. Это достигается путем настройки правил кластера с режимом фильтрации с одним узлом. Узел, принимающий трафик, определяется параметром приоритета узла для узлов кластера балансировки сетевой нагрузки. Дополнительные сведения см. в разделе Конфигурация балансировки сетевой нагрузки .

Функция сопоставления имени узла в ARR сравнит запросы к определенному серверу (или группе серверов в кандидате-кандидате) на основе имени узла. Сведения о состоянии среды выполнения сопоставленного сопоставления между именами узлов и серверами содержимого хранятся в памяти экземпляра сервера ARR. В выпуске ARR версии 1 ARR использует внешний кэш Майкрософт версии 1 для IIS для совместного использования и поддержки этого состояния среды выполнения между несколькими серверами ARR. Дополнительные сведения об этом сценарии см. в этом документе.

Этот сценарий полностью поддерживается в выпуске ARR версии 1.

Настройка ARR

Шаг 1. Настройка ARR для общего размещения с сопоставлением имени узла.

  • Выполните действия, описанные в этом документе, чтобы настроить функцию сопоставления имен узлов в ARR для общего размещения.

Шаг 2. Включение и настройка внешнего кэша.

  • Выполните действия, описанные в этом документе, чтобы включить и настроить внешний кэш.

Конфигурация сетевой подсистемы балансировки нагрузки

Конфигурация сетевой подсистемы балансировки нагрузки состоит из следующих этапов.

  1. Установите компонент балансировки сетевой нагрузки.
  2. Создайте кластер балансировки сетевой нагрузки для ARR.
  3. Настройте балансировку балансировки сетевой нагрузки для активного и пассивного развертывания.

Установите функцию балансировки сетевой нагрузки: Задокументировано [здесь](достижение высокого уровня доступности и масштабируемости arr-and-nlb.md#Install NLB features).

Создание кластера балансировки сетевой нагрузки для ARR: задокументировано [здесь](достижение высокого уровня доступности и масштабируемости arr-and-nlb.md#Создание кластера NLB для ARR).

Настройка сетевой подсистемы балансировки нагрузки для развертывания "активный/пассивный". Задокументировано [здесь](достижение высокого уровня доступности и масштабируемости arr-and-nlb.md#Configure NLB for active/passive).

Вариант 2. Активный/активный в ARR

В режиме "активный/активный" можно использовать два или более серверов ARR. Эта конфигурация обеспечивает высокий уровень доступности и масштабируемость, в отличие от режима "активный—пассивный", который обеспечивает только высокий уровень доступности. Так как несколько серверов ARR настроены одинаково, используется общая конфигурация. Чтобы использовать все серверы ARR одновременно, NLB настраивается в режиме нескольких узлов. Как отмечалось ранее, сведения о состоянии среды выполнения сопоставленного сопоставления между именами узлов и серверами содержимого хранятся в памяти в экземпляре сервера ARR. Для совместного использования этих сведений между несколькими серверами ARR используется внешний кэш Майкрософт для IIS. Дополнительные сведения о внешнем кэше см. в этом документе.

Настройка ARR

Конфигурация ARR для параметра "активный/активный" идентична конфигурации "активный/пассивный". Основное различие заключается в настройке балансировки сетевой нагрузки.

Шаг 1. Настройка ARR для общего размещения с сопоставлением имени узла.

  • Выполните действия, описанные в этом документе, чтобы настроить функцию сопоставления имен узлов в ARR для общего размещения.

Шаг 2. Включение и настройка внешнего кэша.

  • Выполните действия, описанные в этом документе, чтобы включить и настроить внешний кэш.

Конфигурация сетевой подсистемы балансировки нагрузки

Конфигурация сетевой подсистемы балансировки нагрузки состоит из следующих этапов.

  1. Установите компонент балансировки сетевой нагрузки.
  2. Создайте кластер балансировки сетевой нагрузки для ARR.
  3. Настройте балансировку балансировки сетевой нагрузки для активного и активного развертывания.

Установите функцию балансировки сетевой нагрузки: Задокументировано [здесь](достижение высокого уровня доступности и масштабируемости arr-and-nlb.md#Install NLB features).

Создание кластера балансировки сетевой нагрузки для ARR: задокументировано [здесь](достижение высокого уровня доступности и масштабируемости arr-and-nlb.md#Создание кластера NLB для ARR).

Настройка сетевой подсистемы балансировки нагрузки для развертывания "активный—активный": задокументировано [здесь](достижение высокого уровня доступности и масштабируемости arr-and-nlb.md#Configure NLB for active/active). Рекомендуется не использовать сходство в NLB для этого сценария ARR.

Итоги

В этом техническом документе были рассмотрены два основных сценария ARR для достижения высокого уровня доступности и масштабируемости за счет развертывания нескольких серверов ARR и использования балансировки сетевой нагрузки.

Приложение

Приложение А. Все доступные заголовки 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
CERT_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_PORT_SECURE SERVER_PROTOCOL SERVER_SOFTWARE
URL-адрес

Приложение Б. Дополнительная документация по балансировке сетевой нагрузки