Назад | Перейти на главную страницу

Маршрут ARR к определенному серверу в ферме

У меня есть 3 местоположения, в каждом из которых есть свой сервер (s1.mysite.com, s2.mysite.com, s3.mysite.com). Все они являются частью сайта: app.mysite.com.

Я хотел бы использовать ARR для пересылки запроса на определенные серверы в ферме в зависимости от того, из какого местоположения поступает запрос (запрос с сайта 1 направляется на s1.mysite.com, который является локальным для их местоположения), позволяя переключаться на один из других в случае проблемы с этим конкретным сервером.

Я знаю, как распределить запрос на основе строки запроса на конкретный сервер по DNS-имени (s1.mysite.com), но это имя не будет работать, если этот сервер выйдет из строя.

Могу ли я добиться этой избыточности и распределения работы таким образом с помощью Microsoft ARR?

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

  • Попытка достичь высокой доступности, отдавая предпочтение серверам приложений, которые дадут лучшее время отклика (сценарий 1)
  • Представление персонализированного контента в зависимости от того, на каком сайте находится пользователь (сценарий 2)

Сценарий 1

Если вы пытаетесь достичь высокой доступности и получить наилучшее время отклика, вы столкнетесь с проблемой из-за того, что все запросы должны сначала пройти через сервер ARR. Чтобы обойти это, нужно иметь ARR на каждом сайте, использовать DNS для направления пользователей на сервер ARR своего сайта, а затем использовать алгоритм балансировки нагрузки «Наименьшее время ответа». Это теоретически направит пользователей сайта 1 на s1.mysite.com, а также обеспечит переключение на s2 и s3, если s1 выйдет из строя.

Однако, если проблема с сетью вызывает недоступность s1.mysite.com, это также может стать причиной недоступности сервера ARR на сайте 1. Однако это защитит вас от сбоев приложений на s1.mysite.com.

Сценарий 2

Похоже, что нет ничего доступного из коробки для выполнения типа маршрутизации, который вы хотите выполнить. Однако есть API, позволяющие создавать настраиваемого поставщика перезаписи для перезаписи URL. Информацию о том, как это сделать, можно найти Вот. Вы можете использовать информацию из серверных переменных, заголовков запросов или даже параметров строки запроса в сочетании с настраиваемым поставщиком перезаписи для выполнения желаемого типа маршрутизации.