Я хотел бы разместить на одной физической машине две копии одного и того же сайта минимизировать время простоя во время обновлений.
Я думаю, что я мог бы поставить балансировщик нагрузки перед машиной, назначить этому компьютеру два IP-адреса и установить IP-адреса в балансировщике нагрузки.
Проблема в том, что мне нужно обновить сайт (его код, а не инфраструктуру). Я думаю, что мог бы минимизировать время простоя, вынув один из «экземпляров» сайта, обновив его, затем вернув в онлайн и сделав то же самое с другим.
Возможно ли это?
Это того стоит?
Конечно, это то, что мы делаем. У нас есть два веб-сервера, A и B. У нас есть haproxy, который сидит перед ними, послушно балансируя запросы между ними. Как и вы, мы не храним данные сеанса так, как запрос должен вернуться на исходный сервер.
Когда мы хотим выполнить обновление, мы извлекаем сервер A из пула. Выполняем обновление и внутреннее тестирование сайта. Затем мы помещаем сервер A в пул и в тот же момент извлекаем сервер B из пула. Затем мы обновляем Сервер B и снова вставляем его.
Плюс: модернизация сайта без простоев.
Оборотная сторона: во время обновления у вас нет балансировки нагрузки или резервирования. Чтобы решить эту проблему, вам нужно подключить гораздо больше серверов.
Что касается того, стоит оно того или нет, ответить можете только вы. Наше программное обеспечение невероятно сложное, и его развертывание может занять до 5 минут (и это при полной автоматизации), и оно используется практически круглосуточно. Так что для нас это было несложно.
Если ваш сайт получает трафик только спорадически в течение дня или в основном, скажем, в рабочее время, и вы не преодолеете барьеры, с которыми может справиться один веб-сервер, то хлопот не стоит. Поднимать знамя обслуживания на 10 секунд, пока svn export
пробежки могут быть более подходящим решением.
Взгляните на WebFarmFramework и ARR. WFF автоматизирует развертывание кода, а также настройки IIS. Кроме того, если вы используете его балансировщик нагрузки, он переведет узлы в автономный режим, пока происходит обновление.
На самом деле я сейчас исследую ту же проблему, поэтому я не могу поручиться за это в производстве, просто еще одна идея, на которую нужно взглянуть.