Кластеризация Tomcat 6 — репликация сеанса с проверкой подлинности

В настоящее время у меня очень простой кластер, состоящий из двух экземпляров Tomcat 6.0.32 (Tomcat1 и Tomcat2), работающих на одном VPS. Я использую mod_proxy_ajp и mod_proxy_balancer в качестве балансировщика нагрузки через Apache (на том же VPS). Мы используем базовую аутентификацию формы (через j_security_check) для создания аутентифицированных сеансов для пользователей.

Балансировщик нагрузки работает хорошо, и неаутентифицированные сеансы успешно реплицируются между двумя экземплярами. Однако я не могу заменить аутентифицированные сеансы между каждым экземпляром.

Я использую очень простой JSP с именем session.jsp (на основе шаблона JPS http://www.syslog.gr/articles-mainmenu-99/15-tomcat-cluster-session-replication.html), чтобы проверить сеанс, чтобы убедиться, что это новый сеанс. и распечатайте JSESSIONID. У меня есть одна копия JSP внутри защищенной области и одна копия вне защищенной области.

Я провел следующие тесты:

Тест 1)
Я получаю доступ к session.jsp за пределами защищенной области приложения на Tomcat1, записываю JSESSIONID и подтверждаю балансировщиком нагрузки, что Tomcat1 обработал запрос. Затем я закрываю Tomcat1 и обновляю страницу. Теперь запрос обрабатывается Tomcat2 (подтверждено балансировщиком нагрузки). Когда страница завершает загрузку, я вижу свой исходный JSESSIONID, и моя сессия сохранилась.

Тест 2)
Я получаю доступ к session.jsp внутри защищенной области приложения на Tomcat1. Это предлагает мне войти в систему. После входа в систему меня отправляют на session.jsp, я записываю свой JSESSIONID и подтверждаю балансировщиком нагрузки, что Tomcat1 обработал запрос. Затем я закрываю Tomcat1 и обновляю страницу. Теперь запрос обрабатывается Tomcat2 (подтверждено балансировщиком нагрузки). Когда страницы загружаются, я проверяю свой файл cookie. Теперь у меня есть новый JSESSIONID, и мне снова предлагается войти в систему.

До сих пор я полагал, что аутентифицированные сеансы не реплицируются, как неаутентифицированные сеансы. Является ли это веской причиной для этого или указывает на проблему с конфигурацией?


person Ross    schedule 01.04.2011    source источник


Ответы (1)


Вы не работаете в режиме sticky_session, и его можно включить с помощью worker.loadbalancer.sticky_session=1.

И лучше проверьте: http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html

person Senthil    schedule 01.04.2011
comment
Насколько я понимаю, worker.loadbalancer — это настройка mod_jk. Поскольку мы используем mod_proxy, я не думаю, что это актуально. Закрепленные сеансы включены в mod_proxy и работают, проблема заключается в репликации аутентифицированного сеанса между экземплярами Tomcat. - person Ross; 01.04.2011