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

IIS: Как вы справляетесь с перезагрузкой Windows?

У нас есть один VPS (Windows 2008 R2 + IIS7.5) с приложением asp.net mvc 3.

Главный вопрос: как справиться с проблемами, когда Windows требуется перезагрузка? (после установки обновлений Windows или чего-либо еще). Цель состоит в том, чтобы сделать сайт 24/7, но сначала можно показать сообщение пользователям. (мы скоро вернемся, что-то вроде app_offline.htm)

Наше приложение использует SQL, а также записывает / читает некоторые файлы (загруженные фотографии, документы), которые не хранятся в SQL.

Что вы порекомендуете?

  1. Балансировка нагрузки с помощью ARR? (с серверами 1 + 2, но что делать, если интерфейсному серверу требуется перезагрузка?)
  2. Отказоустойчивый кластер Windows?
  3. Отказоустойчивый кластер SQL?
  4. Что делать с загруженными файлами?

Я действительно не знаю, какое решение было бы лучшим (и самым простым).

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

Очевидно, что SQL и файловое хранилище должны быть расположены на разных внутренних серверах или кластерах. Самая простая настройка HA будет выглядеть примерно так:

A Load Balancer (Possibly redundant)
       |
Two Web Servers
 |     |     |
 |  Clustered SQL Server (Unless a single point of failure is ok)
 |
File Servers using DFS-R (Unless a single point of failure is ok)

У нас есть haproxy балансировщик нагрузки перед нашими веб-серверами. У нас есть сценарий выключения, который отправляет команду экземпляру haproxy, чтобы вывести сервер из пула (это, э-э, отстой, поскольку он использует SSH-клиент .net, который входит в систему haproxy и запускает команду, передающую ее в socat stdio /etc/haproxy/haproxysock - но работает). Когда сервер возвращается в режим онлайн, он запускает другую команду, которая возвращает сервер в пул.

Это означает, что конечные пользователи никогда не узнают, когда сервер приходит или уходит, так как всегда есть второй веб-сервер, который воспользуется слабиной.

На тот случай, если у нас когда-нибудь случится катастрофический сбой, у нас есть специальное сообщение «Упс, мы скоро вернемся», которое haproxy-серверы, если есть пустой пул или если каждый сервер вышел из строя.

По поводу остального устройства полагаюсь на Брент ответ. DFS-R великолепен (и также хорош для аварийного переключения вне площадки). Мы не занимаемся кластеризацией SQL, но делаем зеркальное отображение SQL, что почти так же хорошо.

Если ресурсы не проблема, и ваша цель - установить время безотказной работы как можно ближе к пять девяток / высокая доступность (HA) пока все еще можно перезагрузить. Я рекомендую использовать решение для виртуализации серверов, включая общее хранилище между вашими хостами. На рисунке ниже я использую iSCSI и VMware с сетью хранения. В сети используется протокол маршрутизатора горячего резервирования (HSRP) (одобрен Cisco, но есть и другие). В этой конфигурации и для вашей ситуации VMotion не является обязательным. SRDF и другая репликация / кластеризация данных обеспечивает полное резервирование на всех уровнях. Рисунок является упрощенным и не иллюстрирует LUN или соображения, если вместо iSCSI использовалась фабрика FC.

Кроме того, как показывает опыт, многие центры обработки данных вкладывают огромное количество времени и ресурсов в технологии, но забывают о правильном распределении энергии. Мощность, легко может испортить день. Учитывайте симметрию резервных источников питания, PDU, панелей и коммерческих источников питания. ИБП тоже критично.

ИМО, самым простым решением было бы взглянуть на Azure, он не только позволяет вам сосредоточиться на разработке, но и имеет отличное время безотказной работы (и они возмещают вам, когда он не работает). SQL находится на другом сервере, и вы можете хранить загруженные файлы в хранилище BLOB-объектов.

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

Да, и если у вас есть подписка MSDN, Bizspark или сайт Spark, это почти бесплатно (конечно, в зависимости от посещаемости вашего сайта).