У нас есть веб-приложение, работающее на Tomcat 6 (на WS2K3), которое обновляется каждую неделю с выходом нового выпуска. В настоящее время у нас есть очень простой пакетный сценарий, который каждую ночь проверяет содержимое одной папки на сервере, если существует военный файл, он закрывает службу Tomcat, удаляет старый каталог приложения и военный файл, и мы помещаем в него новый военный файл. там и снова включите сервис.
Хотя это работает нормально, и мы испытываем менее 5 минут простоя при каждом из этих развертываний, растущие потребности бизнеса заставляют нас искать другое решение.
Лучшее решение, которое я могу придумать, - это поставить балансировщик нагрузки / прокси перед веб-сервером, добавить еще один веб-сервер для постановки и балансировки нагрузки, а во время развертывания отключить один из этих хостов в конфигурации балансировщика нагрузки, развернуть, а затем перенаправить все трафик на веб-сервер с новой версией и так далее.
Проблема: у меня нет опыта работы с такого рода решениями и очень мало по этим темам, если бы кто-нибудь мог указать мне правильное направление с точки зрения решений (это вообще хороший способ добиться почти нулевого времени простоя и гибкого развертывания?) или названия программ (бесплатно лучше, но проприетарные тоже можно), которые были бы очень признательны.
Во-первых, вы можете использовать стандартное приложение-менеджер Tomcat для повторного развертывания приложения из WAR без необходимости останавливать сам Tomcat. Время простоя - это только то, что нужно для развертывания этого единственного приложения.
Но для почти нулевого времени простоя вам действительно нужен балансировщик нагрузки и несколько серверов Tomcat. HTTP-сервер Apache с mod_proxy / mod_proxy_balancer или mod_jk - хорошее бесплатное решение для этого. Однако у вас есть выбор относительно того, как обрабатывать сеансы - вы можете либо потерять их при переключении с одного сервера на другой, либо реплицировать их между серверами (что довольно легко настроить). Большая часть сложности кластеризации и балансировки нагрузки связана с обработкой сеанса.