Гладкое повторное развертывание ВОЙНЫ в производстве?

Я задавался вопросом, существует ли 'гладкий способ' повторного развертывания ВОЙНЫ Java к рабочему серверу (никакой кластер, никакой OSGi)?

Все, что я могу придумать, является сервером остановки, файлом обновления, сервером перезапуска. И 10 минут заранее я должен отобразить предупреждение обслуживания на сайте.

Каков Ваш подход?

11
задан Pascal Thivent 31 May 2010 в 15:51
поделиться

4 ответа

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

Наш текущий подход заключается в использовании коммутатора с балансировщиком нагрузки перед всеми серверами. Мы запускаем как минимум 2 экземпляра серверов приложений. Когда мы отключаем один сервер для обслуживания, трафик автоматически переходит на другой.

Некоторые коммутаторы действительно недороги. Если у вас нет достаточной нагрузки, чтобы оправдать покупку новой коробки, ваши 2 экземпляра могут работать на одной коробке.

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

8
ответ дан 3 December 2019 в 09:40
поделиться

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

1
ответ дан 3 December 2019 в 09:40
поделиться

Некоторые серверы приложений поддерживают передислокацию без прерывания обслуживания. Это, по крайней мере, верно для WebLogic, смотрите Использование производственной передислокации для обновления приложений. Обратите внимание, что это не горячее развертывание (и я бы НИКОГДА не использовал горячее развертывание на производственных серверах).

Без поддержки сервера приложений, я боюсь, вы не сможете сделать настоящую "гладкую" передислокацию. Если вы хотите минимизировать время простоя, один из подходов заключается в параллельном развертывании нового приложения (на том же сервере или на другом) и изменении правил маршрутизации после завершения. Но клиенты потеряют свою сессию.

1
ответ дан 3 December 2019 в 09:40
поделиться

Обычно mv old.war new.war и пусть AS берет его оттуда, хотя при очень загруженных 24 / 7 услуг, я полагаю, это был бы не вариант.

0
ответ дан 3 December 2019 в 09:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: