Нульовий час простою / відкат у IIS


17

Я не впевнений, чи це правильний спосіб задати це питання, але ось, що я хотів би зробити:

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

Отже, є кілька речей, які, як я знаю, мають відбутися:

1.) Поза сеансом програми - обробляється
2.) З кешу Proc - обробляється

Тож питання, які залишаються:
1.) Як я не можу перешкоджати перешкоджати користувачам? Якщо я просто завантажую файли у кошик, додаток переробляється та займає 10 секунд, щоб повернутися в Інтернет.
2. Як я можу відкати назад без зусиль?

Я думав, що можливим рішенням буде два сайти, створені в IIS, один загальнодоступний і один приватний. Завантаження йде в приватний режим і розігрівається. Після розминки ділянки поміняються місцями. Відкат тягне за собою лише заміну на приватну без завантаження.

Теоретично це здається здоровим, але я не впевнений у механіці. Будь-які ідеї?


@NickatUship: чи є лише один сервер, на якому розміщений веб-сайт? А якщо ні, то будь-яка можливість додавання секунди?
МетББ

@ NickatUship: також, на якій версії IIS ви працюєте?
МетББ

Ми могли б вирішити це за допомогою нашого балансира - це правда. Я сподівався, що зможу щось зробити на самому сервері - це буде працювати краще для нашого потоку. Ми на IIS 7.
ChickenMilkBomb

мені цікаво, чи не могли б ми використати глобальні правила перезапису URL-адреси для нульового простою 1) Переписати * .domain.com на * .arbitrarysiteA.com, що є додатком у IIS 2.) завантажити на * .arbitrarySiteB.com 3.) зігріти його вгору 4.) перемкнути перезапис на * .siteB.com
ChickenMilkBomb

Відповіді:


29

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

Щоб налаштувати його, вам знадобиться:

Встановіть 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 Manager під назвою "Ферми серверів" - клацніть правою кнопкою миші та створіть нову ферму.

  • дайте йому ім’я, яке для вас є значимим
  • додайте Webserver 2 та Webserver 3 в якості серверів - обов’язково натисніть кнопку "розширені налаштування", відкрийте категорію "applicationRequestRouting" та змініть httpPort на 8080 для кожного сервера
  • Закінчіть майстра - вас запитають, чи потрібно створити правила перезапису URL-адрес - натисніть Так
  • Тепер у вас є ферма серверів - щоб закінчити конфігурацію, перейдіть до ферми та натисніть кнопку конфігурації проксі - увімкніть "зворотний перезапис хоста у заголовки відповідей" та застосуйте зміни
  • У IIS Manager перейдіть до категорії сервера кореневого рівня та натисніть кнопку Переписати URL-адресу, там буде створено правило, створене для вашої ферми
    • двічі клацніть правило, щоб перейти до налаштувань
    • відкрийте вікно Умови
    • додайте нову умову для {SERVER_PORT}не відповідає 8080
    • застосувати зміни

На даний момент ви маєте основи того, що нам потрібно для виконання вашого запиту. Якщо ви перейдете до http://192.168.1.1/вас, ви отримаєте свій веб-сайт або з веб-сайту 1, або з веб-сайту 2, але це буде абсолютно непомітно, що є й інші сайти.

Тепер, що ви можете зробити, коли ви хочете розгорнути нову версію програми:

  • drainstop 1 із серверів у вашій фермі (в інструментах ферми серверів перейдіть до розділу "Моніторинг та управління", виберіть сервер і виберіть "Зробити сервер недоступним")
  • розгорніть нову версію сайту в автономній системі
  • розігрійте веб-сайт, відключений офлайн, використовуючи його альтернативний IP / порт
  • зробити сайт знову доступним для ферми
  • повторіть процес для іншого сервера

Інструмент веб-розгортання починає грати, коли ви говорите про те, щоб хотіти все це сценаріювати. Це дуже просто створити пакет для вашої програми та розгорнути його з командного рядка. Ви також можете легко відкатати цей пакет, якщо є проблеми. ARR також можливий сценарій використання Microsoft.Web.Administrationdlls.

Ще одна річ - якщо ви насправді на Windows 2008 R2 (який є IIS 7.5), подивіться на модуль Application Warmup - він повинен полегшити частину прогріву і вам.


Дивовижний - спасибі матовий. +1 навіть для того, щоб все це відкласти. Я розслідую і повернусь до ради.
ChickenMilkBomb

Ідеально .. може бути не дурним доказом .. але робота над розслідуванням
Vivek Kumbhar


10

МетБ ударив його з води. +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.

Прив’яжіть правило = yoursite.com до сайту = yoursite.com01 і правило = staging.yoursite.com для сайту = yoursite.com02.

Встановіть FTP на staging.yoursite.com.

Зараз виробничий трафік переходить до правила = staging.yoursite.com та Site = yoursite.com01. Постановка на протилежне.

Ви можете розгорнутись на інсценування в будь-якій точці, протестувати, попередньо прокручувати, тестувати інших людей тощо. Робіть це протягом дня, це не має значення. Кожного разу використовуйте один і той же обліковий запис FTP. Чудово працює з серверами збірки.

Тоді, коли ви будете готові йти в прямому ефірі, просто внесіть 3 зміни: - перемістіть прив’язку FTP з vašite.com.com02 на ваш сайт.com01 - змініть URL-адресу Перезапис правила на ваш сайт.com, щоб вказати на Ваш сайт.com02 - Змініть URL Перезапис правила постановки. tvojeite.com, щоб вказати на vašite.com.com01

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

Єдине, що потрібно врахувати, - це стан поза сеансом процесу. Переконайтеся, що ваш сервер стану приймає обидва ідентифікатори веб-сайту, щоб ви не втрачали стан сеансу під час своп.

Також зауважте, що це лише Інтернет, а не база даних.

Для сценаріїв використовуйте Редактор конфігурації. Внесіть потрібні зміни та натисніть "Створити сценарій". Це дасть вам код C #, appcmd або AHAdmin.

У мене це було декілька місяців, коли передній край веб-сторінки мінявся місцями, і я ніколи не оглядаюсь назад. Це робить розгортання настільки освіжаючими порівняно з традиційними.


@Scott - дякую за подальший досвід, добре знати, що я розмістив, не є загальною божевільністю, оскільки я ніколи цього не робив.
МетБ

У мене не було великого успіху внесення змін до правил перезапису URL-адрес, не втрачаючи часу простою. Більшість часу для мене: будь-які зміни правил перезапису URL-адрес на серверах з високим трафіком призведуть до скорочення процесора до 100% протягом ~ 5-10 секунд, що може спричинити затримку та сприйняття сповільненнями у користувачів.
кавун

1
@kavun Так, правда в цьому є. Під час оновлення версії за останні кілька років правила перезапису URL-адрес на глобальному рівні почали спричиняти переробку додатків для всіх сайтів. Це раніше не було. Тож якщо у вас на одному сервері є сайти ASP.NET, це може мати вплив. Однак якщо у вас є спеціалізований сервер ARR саме для цього, штраф за переробку додатка мінімальний, і ви все одно можете використовувати хороше рішення, як це.
Скотт Форсайт - MVP
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.