2015-06-18 3 views
0

У меня есть консольное приложение C#/Windows, которое использует материалы HttpListener для обработки запросов, IIS настроен на обратный прокси-сервер с помощью ARR.Обновление Iero Zero Downtime ARR/обратного прокси

Проблема заключается в том, что при обновлении этого приложения существует короткий простоя между выключенным старым экземпляром и новым.

Подход, о котором я думаю, состоял бы в том, чтобы добавить 2 сервера в ферму серверов через локальные имена хостов с 2 портами и при обновлении. Я бы начал новый экземпляр, который будет прослушивать неиспользуемый порт, прекратить прослушивание новых запросов на старый экземпляр и изящно закрыть его (т.е. обрабатывать текущие запросы). Эти последние два шага будут начаты новым экземпляром, чтобы убедиться, что он готов обрабатывать запросы.

Является ли балансировка нагрузки IIS ARR достаточно умной, чтобы попробовать другой экземпляр и пометить, что теперь отключен один, как недоступный, без потери каких-либо запросов до тех пор, пока новый не будет обновлен, или я должен добавить проверки работоспособности и т. Д. (Это снова приведет к короткий период простоя?)

ответ

0

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

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

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

Может быть, если вы разделяете немного больше конфигурации, которую вы используете в ARR (как фрагмент% WINDIR% \ system32 \ Inetsrv \ Config \ applicationHost.config и раздел webFarms)

Смежные вопросы