как разделить сессии между независимыми экземплярами Tomcat - PullRequest
1 голос
/ 04 сентября 2010

У меня есть несколько экземпляров tomcat, работающих на физически независимых машинах.

Я хочу настроить tomcat для совместного использования сеансов между этими экземплярами.

Я попытался настроить org.apache.catalina.session.PersistentManager from http://tomcat.apache.org/tomcat-6.0-doc/config/manager.html. Но я вижу файл сеанса только когда закрываю экземпляры tomcat и не знаю, разделяют ли экземпляры этот сеанс.Думаю, нет.Потому что не имеет смысла, если tomcat записывает сессию только при завершении работы.

Другая вещь, которую я нашел, это cluster-howto , но я не могу этого сделать, потому что машиныне могу видеть друг друга.Они используют только общий путь хранения.

Другая вещь, которую, я думаю, я могу сделать, это реализовать manager , но это кажется немного сложным.

У меня естьдобавить, что я использую Tomcat для развертывания военных файлов Grails и использую сеанс Grails.Я думаю, что это как-то связано с Spring

Итак, вопрос в том, что, по вашему мнению, лучше всего сделать для более эффективного выполнения задачи?Или может я что-то упустил?Можете ли вы дать мне указатель?

1 Ответ

2 голосов
/ 06 сентября 2010

F5 Big IP выполняет балансировку нагрузки перед серверами tomcat, поэтому он обработает sessionID для вас , отправив вас обратно на правильный сервер Tomcat.Используйте алгоритм sticky-round-robin.

В соответствии с сценарием использования в ваших комментариях -

Я пытаюсь сохранить некоторые данные в сеансе, а затем перенаправить их на сервер входа, который в сценарии успехаперенаправляет на мои серверы.И меня беспокоит, что произойдет, если балансировщик нагрузки перенаправит запрос на сервер, который ранее не сохранил необходимые данные в сеансе.Может быть, мне нужна липкая сессия.Итак: можно ли настроить липкий сеанс в среде без кластера tomcat?

При успешном входе в систему - вы сначала перенаправляете обратно в BigIP.Он получит идентификатор сессии из браузера.Он отправит вас на правильный Tomcat, и вы сможете получить данные сеанса.

Если нет, похоже, вам нужно сохранить сам «sessionID» против некоторого «идентификатора пользователя» в базе данных, но этоплохой дизайн.Я думаю, что первый должен работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...