Обеспечение высокой доступности и масштабируемости — ARR и аппаратный балансировщик нагрузки

Вон Йо

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

Корпорация Майкрософт F5
Автор: Вон Йо Автор: Райан Корок
Опубликовано: 13 ноября 2008 г.

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

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

Обзор

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

Схема типичного развертывания R R. R обеспечивает высокий уровень доступности и масштабируемость серверов содержимого.

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

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

Чтобы устранить эти проблемы, администраторы могут рассмотреть возможность использования нескольких серверов ARR с аппаратными подсистемами балансировки нагрузки, такими как F5 BIG-IP. ARR можно развернуть в активном/пассивном режиме, чтобы обеспечить высокую доступность, или в активном/активном режиме, чтобы обеспечить и высокую доступность, и масштабируемость. В этом техническом документе описывается, как можно развернуть ARR и F5 BIG-IP, чтобы обеспечить основные сценарии ARR при достижении общей высокой доступности и масштабируемости.

Использование маршрутизации запросов приложений и F5 BIG-IP

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

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

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

Функциональность уровней 3 и 4 F5 Big-IP дополняет силу ARR в принятии решений по маршрутизации на основе уровня 7, таких как заголовки HTTP и переменные сервера. В то же время ARR не предоставляет отказоустойчивые функции развертывания для себя и должен полагаться на другие дополнительные технологии и решения для обеспечения высокой доступности для уровня ARR, как показано ниже:

Схема F5 BIG-IP функциональности уровня три и четыре. F5 BIG-IP уровни три и четыре дополняют возможности ARR в принятии решений по маршрутизации на основе уровня семь.

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

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

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

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

Схема, иллюстрирующая развертывание трех уровней. В нем показано правило маршрутизации, которое отличает статическое содержимое формы динамического содержимого.

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

Вариант 1. Активный или пассивный

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

В этой настройке, так как два сервера ARR настроены так же, используется общая конфигурация. BIG-IP F5 настраивается таким образом, чтобы он перенаправляет все запросы на активный сервер ARR и направляет только запросы к пассивному серверу ARR при необходимости.

За исключением функции привязки по имени узла в ARR, нет информации о состоянии выполнения, которая должна разделяться между двумя серверами ARR. Таким образом, для этого сценария специальная конфигурация не требуется ни на серверах ARR, ни на F5 BIG-IP. Даже если вы используете функцию сопоставления сервера в ARR, аффинизованные сведения о состоянии будут доступны пассивному серверу через файл cookie в заголовке запроса, когда F5 BIG-IP направляет запросы на бывший пассивный, но теперь активный сервер.

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

Конфигурация ARR

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

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

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

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

  • На высоком уровне приведенный выше документ описывает:

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

Конфигурация BIG-IP F5

В этом сценарии вы создадите виртуальный сервер, который балансирует нагрузку на пул двух (или более) серверов ARR. Метод балансировки нагрузки, который вы выбираете, должен отправлять весь трафик на основной сервер ARR, пока он не станет недоступным. На этом этапе BIG-IP LTM должен отправлять весь трафик на вторичный сервер ARR.

Шаг 1. Настройка пула серверов ARR.

  • В разделе "Локальный трафик" щелкните "Пулы". Затем нажмите кнопку "Создать", чтобы создать пул.
  • Любое уникальное имя будет работать для пула; В примере используется ARR_Pool.
  • Для монитора работоспособности можно использовать настраиваемый HTTP-монитор или HTTP-монитор по умолчанию.
  • Метод балансировки нагрузки можно оставить равным «Round Robin». В этом сценарии, так как существует только активный и пассивный сервер ARR, балансировка нагрузки не используется.
  • Обязательно включите активацию группы приоритетов. Это настраивает BIG-IP для отправки трафика на серверы с наивысшим приоритетом. Если эти серверы недоступны, BIG-IP отправляет трафик на сервер ARR со следующим значением максимального приоритета.
  • В этом сценарии сервер ARR в 10.0.0.1 имеет значение приоритета 1, а 10.0.0.2 имеет значение приоритета 2. Весь трафик будет отправлен в 10.0.0.2, пока он не исчезнет, а затем трафик будет отправлен в 10.0.0.1.

Снимок экрана веб-страницы Big-IP. В поле

Шаг 2. Настройка пула серверов ARR.

  • В разделе "Локальный трафик" щелкните "Виртуальные серверы". Затем нажмите кнопку "Создать", чтобы создать виртуальный сервер.
  • Любое уникальное имя будет работать для виртуального сервера; В примере используется ARR_VS.
  • Для назначения можно использовать IP-адрес, на который пользователи будут указывать свои браузеры. В этом примере мы используем 65.197.145.23. Для порта сервиса мы используем "80".
  • В разделе "Тип виртуального сервера" есть несколько вариантов. Так как вы зависите от ARR для маршрутизации, вы можете выбрать HTTP для высокой производительности, который предназначен для оптимальной производительности.
  • Для пула по умолчанию выберите пул, созданный на шаге 1.

Снимок экрана страницы F five Big IP. В поле

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

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

В режиме Active/Active можно использовать два или более серверов ARR. Эта конфигурация обеспечивает как высокий уровень доступности, так и масштабируемость, в отличие от режима "Активный/пассивный", который обеспечивает только высокую доступность. Как отмечалось ранее, так как несколько серверов ARR настроены одинаково, используется общая конфигурация. BIG-IP F5 настраивается для балансировки нагрузки входящих запросов ко всем доступным и работоспособным серверам ARR, которые в свою очередь перенаправляют запросы на серверы содержимого. Независимо от того, используется ли функция привязки сервера на F5 BIG-IP или нет, на серверах ARR не требуется специальная конфигурация. Для одной из них серверы ARR используют одну общую конфигурацию, чтобы они были настроены так же. Во-вторых, так как ARR использует файл cookie клиента для хранения сведений о сопоставлении сервера для собственного использования, эти сведения доступны для каждого запроса и поэтому доступны на серверах ARR. Этот сценарий полностью поддерживается в выпуске ARR версии 1.

Конфигурация ARR

Конфигурация ARR для Active/Active идентична конфигурации Active/Passive. Основное различие заключается в настройке F5.

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

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

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

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

  • На высоком уровне приведенный выше документ описывает:

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

Конфигурация BIG-IP F5

В этом сценарии все доступные серверы ARR считаются активными и кандидатами для балансировки нагрузки трафика. Используйте BIG-IP LTM, чтобы оценить работоспособность и производительность фронтендов ARR, а также направить трафик к наиболее эффективным.

Шаг 1. Настройка пула серверов ARR.

  • В разделе "Локальный трафик" щелкните "Пулы". Затем нажмите кнопку "Создать", чтобы создать пул.
  • Любое уникальное имя будет работать для пула; В примерах используется ARR_Pool. — Для монитора работоспособности можно использовать пользовательский HTTP-монитор или HTTP-монитор по умолчанию. — Так как у вас есть несколько серверов ARR для распределения трафика, необходимо выбрать метод балансировки нагрузки, который лучше всего подходит для ваших потребностей. Если все серверы ARR имеют аналогичные аппаратные характеристики, метод динамической балансировки нагрузки, например самый быстрый, наблюдаемый или прогнозный, даст вам распределение на основе производительности.

Снимок экрана: веб-страница F five Big I P. В поле

Шаг 2. Настройка виртуального сервера.

  • В разделе "Локальный трафик" щелкните "Виртуальные серверы". Затем нажмите кнопку "Создать", чтобы создать виртуальный сервер.
  • Любое уникальное имя будет работать для виртуального сервера; В примере используется ARR_VS. — Для назначения можно использовать IP-адрес, на который пользователи будут указывать свои браузеры. В этом примере мы используем 65.197.145.23. Для служебного порта мы используем "80". — В разделе "Тип виртуального сервера" есть несколько вариантов. Так как вы зависите от ARR для маршрутизации, вы можете выбрать HTTP для высокой производительности, который предназначен для оптимальной производительности. — Для пула по умолчанию выберите пул, созданный на шаге 1.

Снимок экрана веб-страницы F5 BIG-IP. В поле пула по умолчанию выбран пул, созданный на первом шаге, пул ARR.

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

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

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

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

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

Вариант 1. Активный или пассивный

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

В этой настройке, так как два сервера ARR настроены так же, используется общая конфигурация. BIG-IP F5 настраивается для маршрутизации всех запросов на активный сервер ARR и при необходимости направляет только запросы на пассивный сервер ARR.

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

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

Конфигурация ARR

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

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

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

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

  • На высоком уровне приведенный выше документ описывает:

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

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

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

Конфигурация BIG-IP F5

В этом сценарии вы создадите виртуальный сервер, который балансирует нагрузку на пул двух (или более) серверов ARR. Метод балансировки нагрузки, который вы выбираете, должен отправлять весь трафик на основной сервер ARR, пока он не станет недоступным. На этом этапе BIG-IP LTM должен отправлять весь трафик на вторичный сервер ARR.

Шаг 1. Настройка пула серверов ARR.

  • В разделе "Локальный трафик" щелкните "Пулы". Затем нажмите кнопку "Создать", чтобы создать пул.
  • Любое уникальное имя будет работать для пула; В примере используется ARR_Pool. — Для монитора работоспособности можно использовать пользовательский HTTP-монитор или HTTP-монитор по умолчанию. — Метод балансировки нагрузки можно оставить равным Round Robin. В этом сценарии, так как существует только активный и пассивный сервер ARR, балансировка нагрузки не используется. — Обязательно включите активацию группы приоритетов. Это настраивает BIG-IP для отправки трафика на серверы с наивысшим приоритетом. Если эти серверы недоступны, BIG-IP отправляет трафик на сервер ARR со следующим значением максимального приоритета. — В этом сценарии сервер ARR в 10.0.0.1 имеет значение приоритета 1, а 10.0.0.2 имеет значение приоритета 2. Весь трафик будет отправлен в 10.0.0.2, пока он не исчезнет, а затем трафик будет отправлен в 10.0.0.1.

Снимок экрана: веб-сайт Big I P. В поле имени — пул подчеркивания R R. На панели

Шаг 2. Настройка виртуального сервера.

  • В разделе "Локальный трафик" щелкните "Виртуальные серверы". Затем нажмите кнопку "Создать", чтобы создать виртуальный сервер.
  • Любое уникальное имя будет работать для виртуального сервера; В примере используется ARR_VS. — Для назначения можно использовать IP-адрес, на который пользователи будут указывать свои браузеры. В этом случае мы используем. Для служебного порта мы используем "80". — В разделе "Тип виртуального сервера" есть несколько вариантов. Так как вы зависите от ARR для маршрутизации, вы можете выбрать HTTP для высокой производительности, который предназначен для оптимальной производительности. — Для пула по умолчанию выберите пул, созданный на шаге 1.

Снимок экрана веб-страницы F5. В поле «Пул по умолчанию» выбран пул ARR. На панели «Локальный трафик» выбраны виртуальные серверы.

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

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

В режиме Active/Active можно использовать два или более серверов ARR. Эта конфигурация обеспечивает как высокий уровень доступности, так и масштабируемость, в отличие от режима "Активный/пассивный", который обеспечивает только высокую доступность. Так как несколько серверов ARR настроены одинаково, используется общая конфигурация. BIG-IP F5 настраивается для балансировки нагрузки входящих запросов ко всем доступным и работоспособным серверам ARR, которые в свою очередь перенаправляют запросы на серверы содержимого.

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

Конфигурация ARR

Конфигурация ARR для Active/Active идентична конфигурации Active/Passive. Основное различие заключается в настройке F5.

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

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

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

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

  • На высоком уровне приведенный выше документ описывает:

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

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

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

Конфигурация BIG-IP F5

В этом сценарии все доступные серверы ARR считаются активными и кандидатами для балансировки нагрузки трафика. Используйте BIG-IP LTM, чтобы оценить работоспособность и производительность фронтендов ARR, а также направить трафик к наиболее эффективным.

Шаг 1. Настройка пула серверов ARR.

  • В разделе "Локальный трафик" щелкните "Пулы". Затем нажмите кнопку "Создать", чтобы создать пул.
  • Любое уникальное имя будет работать для пула; В примере используется ARR_Pool. — Для монитора работоспособности можно использовать пользовательский HTTP-монитор или HTTP-монитор по умолчанию. — Так как у вас есть несколько серверов ARR для распределения трафика, необходимо выбрать метод балансировки нагрузки, который лучше всего подходит для ваших потребностей. Если все серверы ARR имеют аналогичные аппаратные характеристики, метод динамической балансировки нагрузки, например самый быстрый, наблюдаемый или прогнозный, даст вам распределение на основе производительности.

Снимок экрана: веб-страница F пять. В поле

Шаг 2. Настройка виртуального сервера.

  • В разделе "Локальный трафик" щелкните "Виртуальные серверы". Затем нажмите кнопку "Создать", чтобы создать виртуальный сервер.
  • Любое уникальное имя будет работать для виртуального сервера; В примере используется ARR_VS. — Для назначения можно использовать IP-адрес, на который пользователи будут указывать свои браузеры. В этом случае мы используем. Для служебного порта мы используем "80". — В разделе "Тип виртуального сервера" есть несколько вариантов. Так как вы зависите от ARR для маршрутизации, вы можете выбрать HTTP для высокой производительности, который предназначен для оптимальной производительности. — Для пула по умолчанию выберите пул, созданный на шаге 1.

Снимок экрана: веб-страница F5. В поле

Сводка

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

Приложение

Приложение 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