У меня есть установка из нескольких серверов Tomcat, распределенных между несколькими серверами, и на всех работает одно и то же. Apache находится поверх Apache и балансировщик нагрузки перед серверами Apache. Я хочу объединить Tomcats в кластер с использованием общего сеанса, чтобы минимизировать время простоя и прерывание работы пользователя при развертывании приложений.
Я знаю, что кластеризация работает на одном сервере, но можно ли настроить Tomcat таким образом, чтобы он разделял сеансы между серверами на разных машинах?
=> Server 1
==> Apache 1
===> Tomcat 1
=> Server 2
==> Apache 2
===> Tomcat 2
Когда Server / Tomcat 1 будет отключен, пользователи и их сеансы будут переведены на Server / Tomcat 2 и наоборот.
Я работаю над настройкой того же, приведенная ниже ссылка от Apache дает обзор того, как этого добиться:
http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html
В основном это состоит из двух частей:
1) Создание сериализуемых объектов сеанса
2) Настройка конфигурации кластера в tomcat (server.xml).
В зависимости от того, какой менеджер tomcat вы используете, вам может потребоваться включить многоадресную рассылку на ваших узлах, чтобы обеспечить связь между узлами. Репликация сеанса выполняется tomcat с помощью этих многоадресных запросов. Я видел много людей, использующих этот подход, и он сработал для них (кажется, стандартный / простой способ сделать это).
Также вот подробный пост в блоге о том же - всего 5 частей, с некоторыми видео.
http://www.ramkitech.com/2012/10/tomcat-clustering-series-simple-load.html
P.S:
Я использую тот же подход для той же проблемы с двумя узлами tomcat. Я столкнулся с небольшой проблемой, которая задокументирована ниже. Если у вас все же получится / вы столкнетесь с аналогичной проблемой, взгляните на это
Взгляни на Teracotta для веб-сессий.
Используйте быстрый и надежный плагин веб-сеансов Terracotta, чтобы получить преимущества масштабируемости веб-архитектуры без сохранения состояния без перегрузки вашей базы данных или перезаписи приложения. Terracotta for Sessions работает с вашим любимым веб-фреймворком и вашими собственными объектами сеанса.
В руководство по веб-сессиям перечисляет пять простых шагов, которые вы должны сделать, чтобы оценить продукт (FOSS).
Вы можете сохранять сеансы в базе данных, чтобы они были доступны для обоих котов. Или храните их в общем каталоге между котами.
Вы можете сохранять сеансы в memcached, который используется обоими серверами. Это должно обеспечить лучшую производительность и масштабируемость, чем использование общих сеансов в базе данных или общего каталога между n серверами.