Я не уверен, что это правильный способ задать этот вопрос, но вот в основном то, что я хотел бы сделать:
1.) Переместите набор изменений на сайт в IIS.
2.) Не перебивайте пользователей.
3.) Быть в состоянии откатиться без особых усилий.
Итак, я знаю, что должно произойти несколько вещей:
1.) Вне сессии Proc - обработано
2.) Out of Proc cache - обработано
Итак, вопросы, которые остаются:
1.) Как мне не мешать пользователям? Если я просто загружаю файлы в мусорное ведро, приложение перезагружается и занимает более 10 секунд, чтобы вернуться в Интернет
2.) Как мне откатиться без усилий?
Я думал, что возможным решением было бы создать два сайта в IIS, один общедоступный и один частный. Загрузки идут в приват и нагреваются. После прогрева сайты меняются местами. Откат влечет за собой только обмен на приватный без загрузки.
Это звучит теоретически, но я не уверен в механике. Есть идеи?
Ответы:
Вот как я мог бы подойти к этой проблеме - имейте в виду, что я не делал этого раньше, это просто концепции, которые я немного опробовал в своей среде разработки. Вы должны быть в состоянии установить довольно надежную среду, используя это и некоторые скрипты на вашем языке. По сути, мы собираемся настроить среду балансировки нагрузки гетто и использовать ее для переключения между новым сайтом и старым сайтом.
Для его настройки вам понадобятся:
Установите ARR для начала.
Настройте 3 сайта в IIS:
http://192.168.1.1/
. Это также сайт ARR. Просто настройте пустой каталог, чтобы он указывал на него, и поместите его в свой пул приложений. Настройте пул приложений так, чтобы он не превышал время ожидания в соответствии с этими инструкциями .http://192.168.1.2:8080
иhttp://192.168.1.3:8080
. Они также должны быть в своих собственных пулах приложений и указывать на разные каталоги в файловой системе (но оба каталога обычно имеют одинаковое содержимое)После установки ARR в диспетчере IIS появится новая категория «Фермы серверов» - щелкните правой кнопкой мыши и создайте новую ферму.
{SERVER_PORT}
не соответствует 8080На данный момент у вас есть основы того, что нам нужно для выполнения вашего запроса. Если вы зайдете на сайт,
http://192.168.1.1/
вы получите свой веб-сайт либо с Веб-сайта 1, либо с Веб-сайта 2, но все остальные сайты будут совершенно прозрачны.Теперь, когда вы хотите развернуть новую версию своего приложения, вы можете:
Инструмент веб-развертывания вступает в игру, когда вы говорите о желании все это написать в сценарии. Это позволяет легко создать пакет для вашего приложения и развернуть его из командной строки. Вы также можете легко откатить этот пакет, если возникнут проблемы. ARR также сценариев с использованием DLL
Microsoft.Web.Administration
.Еще одна вещь - если вы на самом деле работаете в Windows 2008 R2 (то есть IIS 7.5), взгляните на модуль Application Warmup - это должно также облегчить вам часть прогрева.
источник
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.
У меня это было в течение нескольких месяцев с веб-страницей для обмена экземплярами, и я никогда не оглядываюсь назад. Это делает развертывание таким освежающим по сравнению с традиционными развертываниями.
источник