Я считаю, что мне не хватает некоторой конфигурации либо на стороне балансировки нагрузки, либо в tomcat, было бы здорово, если бы кто-то мог помочь и предоставить решение.
Что я пытаюсь сделать?
- Настройте два экземпляра tomcat с репликацией сеанса P2P Hazelcast для tomcat6, обратившись к этому руководство
- Я поместил файлы hazelcast-all-.jar, hazelcast-tomcat-sessionmanager-.jar и hazelcast.xml в папку $CATALINA_HOME/lib/
- Обновлены конфигурации прослушивателя и контекста, как показано ниже.
- Обновлен Tomcat Failover и параметр jvmRoute, как показано ниже.
- До сих пор мне удавалось вызвать экземпляры tomcat, которые подключаются друг к другу экземплярами hazelcast, я вижу это в журналах tomcat.
- Пользователи подключаются к балансировщику нагрузки и перенаправляются к членам балансировщика — здесь нет проблем.
- Но когда я отключаю один из экземпляров tomcat, чтобы протестировать отказоустойчивость и убедиться, что пользователи, подключенные к экземпляру tom, могут продолжить работу с экземпляром cat в том же сеансе и без повторного входа в систему. Но я считаю, что балансировщик нагрузки, похоже, создает новый сеанс и заставляет пользователя снова войти в систему, чтобы установить сеанс с экземпляром cat. Я подозреваю, что это, но не уверен.
- Или сеансы не реплицируются и не синхронизируются в обоих экземплярах hazelcast? - Это происходит
- У нас есть клиент, с помощью которого я могу отслеживать сеансы hazelcast? - Теперь я делаю
Я ссылался на эту проблему, которая вместо этого относится к настройке hazelcast.sessionId JSESSIONID, но не содержит никаких подробностей о том, как это сделать.
Версии -
Apache Haus - 2.2.32 (for load balancing)
Hazelcast - 3.8.6
Java 8
Tomcat - 6.0.48
Session objects that need to be clustered are Serializable.
stickysession=JSESSIONID
Конфигурация балансировщика нагрузки
<Proxy balancer://mycluster>
BalancerMember http://IPAddress1:8080/app/ route=tom
BalancerMember http://IPAddress2:8080/app/ route=cat
ProxySet lbmethod=byrequests stickysession=JSESSIONID|jsessionid
</Proxy>
ProxyPass /app/ balancer://mycluster/
ProxyPassReverse /app/ balancer://mycluster/
экземпляр Тома — server.xml
<Listener className="com.hazelcast.session.P2PLifecycleListener"/>
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tom">
экземпляр тома — context.xml
<Manager className="com.hazelcast.session.HazelcastSessionManager" sticky=true/>
экземпляр кошки — server.xml
<Listener className="com.hazelcast.session.P2PLifecycleListener"/>
<Engine name="Catalina" defaultHost="localhost" jvmRoute="cat">
экземпляр кошки — context.xml
<Manager className="com.hazelcast.session.HazelcastSessionManager" sticky=true/>
Обновлять:
Я полагаю, что приведенная ниже проблема аналогична ошибке синхронизации сеанса.