[英]Hazelcast HTTP session replication doesn't replicate anything
我在hazelcast http 会话复制功能上遇到了一些问题。
我正在尝试在集群中的一对 tomcat 7.0.54(带有 DeltaManager 的 SimpleTcpCluster)中部署一个带有 hazelcast http 会话复制的 web 应用程序,在 java 1.7.0_25 下与其他非 hazelcast 集群应用程序一起运行。
我有一些问题:
编辑:
更详细的解释我在做什么:
我正在尝试创建一个简单的 web 应用程序,只有一个 servlet,在第一个用户请求时生成一个新的 http 会话,然后对于每个 GET 请求将打印会话 ID。 这是servlet代码:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Get Method. Check Session...");
HttpSession session = req.getSession(false);
if (session==null) {
System.out.println("User with null session, generating one...");
session = req.getSession(true);
if (session==null)
System.out.println("Session can not be generated.");
}
if (session!=null)
System.out.println("Received GET request from session " + session.getId());
}
为了引入 hazelcast WM 以在 2 个 tomcat 之间复制会话,我已将其添加到我的项目中:
hazelcast-3.2.5.jar 到 WEB-INF 文件夹
hazelcast-wm-3.2.5.jar 到 WEB-INF 文件夹
将标准 hazelcast.xml 放入 WEB-INF 文件夹(与打包在 hazelcast 3.2.5 的 ZIP 存档中的 hazelcast.xml 完全相同,放入 bin 文件夹中)
将hazelcast过滤器添加到我的web.xml中,与官方文档中的示例完全相同
在官方文档中,我没有发现需要任何其他配置( http://hazelcast.org/docs/latest/manual/html/httpsessionclustering.html ),并且我满足了所有要求。
在两个 tomcat 前面,我有一个 HAproxy 来平衡两个节点之间的流量(使用 stiky-session)。
当两个节点都启动时,它们会加入集群,并且双方都有这个日志:
INFO: [192.168.0.68]:4701 [dev] [3.2.5]
Members [2] {
Member [192.168.0.68]:4701 this
Member [192.168.0.49]:4701
}
当我发出第一个请求时,我在第一个节点上得到了这个日志:Get Method。 检查会话...用户为空会话,生成一个...收到来自会话 HZ2F779DFA402A406E9ACCA3E0298B37F5 的 GET 请求
并且在此之后的每个请求都会生成此日志:
获取方法。 检查会话...
收到来自会话 HZ2F779DFA402A406E9ACCA3E0298B37F5 的 GET 请求
当我杀死这个 tomcat 时,HAProxy 开始将所有请求发送到第二个,我预计会话将是相同的(HZ2F779DFA402A406E9ACCA3E0298B37F5),但我得到了这个日志:
获取方法。 检查会话...
具有空会话的用户,生成一个...
收到来自会话 HZB89D6CDC1CC94FDEBC82019BAAA9022E 的 GET 请求
获取方法。 检查会话...
收到来自会话 HZB89D6CDC1CC94FDEBC82019BAAA9022E 的 GET 请求
为什么会话被改变? 我做错了什么?
这个用例非常简单,可能我遗漏了一些东西,但我无法弄清楚。 还有其他先决条件吗?
使用的软件:
榛铸 3.2.5
Tomcat 7.0.54
Java 1.7.0_25
你能发布一些日志,特别是像这样的东西:
Members [2] {
Member [192.168.1.100]:5701 this
Member [192.168.1.100]:5702
}
关于您的问题:
那应该不是问题。
可分发是什么意思?
只要没有端口冲突,我认为这应该不是问题。
您能否确保在hazelcast 配置中粘性会话是正确的?
请按照https://github.com/hazelcast/hazelcast-wm#using-sticky-sessions 中提到的步骤操作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.