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

Нулевое время простоя загрузки / отката в IIS

Я не уверен, что это правильный способ задать этот вопрос, но вот в основном то, что я хотел бы сделать:

1.) Отправьте набор изменений на сайт в IIS.
2.) Не перебивайте пользователей.
3.) Уметь откатывать назад без особых усилий.

Итак, я знаю, что должно произойти несколько вещей:

1.) Вне процедуры - обработано
2.) Out of Proc cache - обработано

Итак, остаются вопросы:
1.) Как мне не отвлекать пользователей? Если я просто загружу файлы в корзину, приложение перезапустится и вернется в сеть через 10+ секунд.
2.) Как без усилий откатиться?

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

В теории это кажется здравым, но насчет механики я не уверен. Любые идеи?

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

Для его настройки вам потребуются:

Для начала установите ARR.

Настройте 3 веб-сайта в IIS:

  • Веб-сайт 1 будет сайтом, к которому ваши пользователи фактически подключаются, скажем так. http://192.168.1.1/. Это также сайт ARR. Просто настройте пустой каталог, на который он будет указывать, и поместите его в собственный пул приложений. Настройте пул приложений на отключение тайм-аута в соответствии с эти инструкции.
  • Веб-сайты 2 и 3 будут сайтами, на которых фактически размещается ваш контент. Они должны быть на собственных IP-адресах и из-за того, как работает ARR, на другом порту, чем на веб-сайте 1. Допустим, они http://192.168.1.2:8080 и http://192.168.1.3:8080. Они также должны находиться в своих собственных пулах приложений и указывать на разные каталоги в файловой системе (но оба каталога обычно имеют одинаковое содержимое)

После установки ARR в диспетчере IIS появится новая категория под названием «Фермы серверов» - щелкните ее правой кнопкой мыши и создайте новую ферму.

  • дайте ему имя, которое имеет для вас значение
  • добавьте Webserver 2 и Webserver 3 в качестве серверов - не забудьте нажать кнопку «дополнительные настройки», открыть категорию «applicationRequestRouting» и изменить httpPort на 8080 для каждого сервера.
  • Завершите работу мастера - вас спросят, хотите ли вы создать правила перезаписи URL - нажмите Да
  • Теперь у вас есть ферма серверов - чтобы завершить настройку, перейдите в ферму и нажмите кнопку «Конфигурация прокси» - включите «узел обратной перезаписи в заголовках ответов» и примените изменения.
  • В диспетчере IIS перейдите в категорию серверов корневого уровня и нажмите кнопку «Переопределить URL», появится правило, созданное для вашей фермы.
    • дважды щелкните правило, чтобы перейти к настройкам
    • откройте окно условий
    • добавить новое условие для {SERVER_PORT} не соответствует 8080
    • применить изменения

На этом этапе у вас есть основы того, что нам нужно для выполнения вашего запроса. Если вы пойдете в http://192.168.1.1/ вы получите свой веб-сайт либо с веб-сайта 1, либо с веб-сайта 2, но при наличии других сайтов это будет совершенно незаметно.

Теперь, когда вы хотите развернуть новую версию своего приложения, вы можете:

  • остановите 1 из серверов в вашей ферме (в инструментах серверной фермы перейдите в «Мониторинг и управление», выберите сервер и выберите «Изящно сделать сервер недоступным»)
  • разверните новую версию сайта в автономной системе
  • разогреть сайт, который находится в автономном режиме, используя его альтернативный IP / порт
  • сделать сайт снова доступным для фермы
  • повторить процесс для другого сервера

Инструмент веб-развертывания вступает в игру, когда вы говорите о желании написать все это сценарием. Это упрощает создание пакета для вашего приложения и его развертывание из командной строки. Вы также можете легко откатить этот пакет, если возникнут проблемы. ARR также поддерживает скрипт используя Microsoft.Web.Administration dll.

Еще одно - если вы действительно используете Windows 2008 R2 (это IIS 7.5), обратите внимание на Разминка приложения модуль - он также должен облегчить вам разогрев.

MattB выбил его из воды. +1 Я отвечу более подробно, но я не собираюсь брать его очки. Я добавлю к тому, что он сказал.

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

Однако я бы добавил пару вещей.

Создайте 2 сайта, как рекомендовал Мэтт. Назовите их примерно так: yoursite.com01 и yoursite.com02.

Создайте 2 правила перезаписи URL. Один для www.yourdomain.com и еще один для staging.yourdomain.com. Для производства используйте {HTTP_HOST} со значением (^ www.yourdomain.com $) | (yourIP). (или любое другое связывание, которое вы предпочитаете). Для промежуточной обработки используйте {HTTP_HOST} со значением (^ staging.yourdomain.com $). Назовите правила yoursite.com и staging.yoursite.com.

Привяжите Rule = yoursite.com к site = yoursite.com01 и rule = staging.yoursite.com к site = yoursite.com02.

Настройте FTP на сайте staging.yoursite.com.

Производственный трафик теперь направляется на Rule = staging.yoursite.com и Site = yoursite.com01. Пошатываясь на противоположное.

Вы можете развернуть его в любой момент, протестировать, предварительно раскрутить, попросить других людей протестировать и т. Д. Делайте это в течение дня, это не имеет значения. Каждый раз развертывать в одной и той же учетной записи FTP. Отлично работает с серверами сборки.

Затем, когда вы будете готовы к запуску, просто внесите 3 изменения: - переместите привязку FTP с yoursite.com02 на yoursite.com01 - измените правило перезаписи URL yoursite.com так, чтобы оно указывало на yoursite.com02 - измените постановку правила перезаписи URL. yoursite.com, чтобы указать на yoursite.com01

Теперь у вас есть нулевое время простоя, мгновенное переключение и функция немедленного отката!

Единственная проблема, которую следует учитывать, - это состояние сеанса вне процесса. Убедитесь, что ваш сервер состояний принимает оба идентификатора сайта, чтобы вы не потеряли состояние сеанса во время обмена.

Также обратите внимание, что это только Интернет, а не база данных.

Для написания сценариев используйте Редактор конфигурации. Внесите необходимые изменения и нажмите «Создать сценарий». Он предоставит вам код C #, appcmd или AHAdmin.

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