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

Горячее развертывание в производстве веб-приложения J2EE

Как развернуть файл WAR Java на рабочем сервере без простоев. В настоящее время я использую Apache2 -> Jetty6, когда мне нужно обновить веб-приложение, я распаковываю архив в каталог, а затем перезапускаю службу Jetty.

/etc/init.d/jetty6 restart

Перезапуск может занять 5 минут. Есть ли другой способ? Как это делают «большие» сайты?

По моему опыту, горячее развертывание, такое как JBoss, не удается, потому что сборщик мусора не собирает все, а службе / процессу не хватает памяти, улучшилась ли ситуация?

Как насчет этого. Создайте сценарий, который выполняет следующие действия:

  • Запустите второй экземпляр пристани на порту 8081.
  • Перезагрузите альтернативную конфигурацию apache для отправки трафика на 8081. Я думаю, что этот шаг должен быть быстрым. Я использую nginx, который работает мгновенно.
  • Убить причал 8080
  • Скопируйте обновленную войну в папку 8080 jetty webapps
  • Перезапустить причал на порту 8080
  • Верните apache к 8080
  • Убить причал на 8081

Вам нужно позаботиться о следующих вещах:

  • сеансы (сеансы на основе файлов cookie)
  • изменения структуры базы данных (которые ломают старое приложение)

Чтобы сохранить сеансы при перезапуске приложения, вам понадобится центральное место для хранения сеанса, которое находится за пределами приложения. Например. 2 базы данных с репликацией или memcached с репликацией.

При изменении базы данных вам необходимо убедиться, что новое приложение указывает только на базу данных с новой структурой. Не удаляйте поля и не делайте новую структуру несовместимой со старым приложением. Например. не удаляйте атрибуты и не меняйте их тип.

Настройте apache для использования балансировки нагрузки с двумя серверами приложений (которые могут работать на одном сервере). Используйте липкость сеанса. Когда один из серверов развернут, другой может отвечать на запросы.

Большие сайты используют распределенную AS с кластерами серверов, циклическим DNS, балансировщиками нагрузки ...