Tomcat 6 集群 - 经过身份验证的会话复制

发布于 2024-10-29 01:55:17 字数 1268 浏览 6 评论 0原文

我目前有一个非常基本的集群,由在同一 VPS 上运行的两个 Tomcat 6.0.32 实例(Tomcat1Tomcat2)组成。我通过 Apache 使用 mod_proxy_ajp 和 mod_proxy_balancer 作为负载均衡器(在同一 VPS 上)。 我们使用基本表单身份验证(通过 j_security_check)为用户创建经过身份验证的会话。

负载均衡器运行良好,未经身份验证的会话正在两个实例之间成功复制。但是,我无法在每个实例之间替换经过身份验证的会话。

我正在使用一个非常基本的 JSP,称为 session.jsp (基于 JPS 模板 http://www.syslog.gr/articles-mainmenu-99/15-tomcat-cluster-session-replication.html) 测试会话以查看是否是新会话并打印出 JSESSIONID。我在保护区内有一份 JSP 副本,在保护区外有一份 JSP 副本。

我运行了以下测试:

测试 1)
我在 Tomcat1 上的应用程序保护区之外访问 session.jsp,记下 JSESSIONID 并与负载均衡器确认 Tomcat1 处理了该请求。然后我关闭 Tomcat1 并刷新页面。该请求现在由 Tomcat2 处理(由负载均衡器确认)。当页面加载完成时,我看到原来的 JSESSIONID 并且我的会话仍然存在。

测试2)
我在 Tomcat1 上的应用程序保护区内访问 session.jsp。这会提示我登录。登录后,我将被发送到 session.jsp 并记下我的 JSESSIONID 并与负载均衡器确认 Tomcat1 处理了请求。然后我关闭 Tomcat1 并刷新页面。该请求现在由 Tomcat2 处理(由负载均衡器确认)。当页面加载时,我检查我的 cookie。我现在有了一个新的 JSESSIONID,并且再次提示我登录。

到目前为止,我认为经过身份验证的会话不会像未经身份验证的会话那样被复制。这是一个很好的理由还是表明存在配置问题?

I currently have a very basic cluster composed of two Tomcat 6.0.32 instances (Tomcat1 and Tomcat2) running on the same VPS. I'm using mod_proxy_ajp and mod_proxy_balancer as the load balancer through Apache (on the same VPS).
We are using basic form authentication (via j_security_check) to create authenticated sessions for users.

The load balancer is working well and unauthenticated sessions are being replicated between the two instances successfully. However, I am unable to have authenticated sessions replace between each instance.

I am using a very basic JSP called session.jsp (based on the JPS template http://www.syslog.gr/articles-mainmenu-99/15-tomcat-cluster-session-replication.html) to test the session to see if it is a new session and print out the JSESSIONID. I have one copy of the JSP inside of the protected area and one copy outside of the protected area.

I've run the following tests:

Test 1)
I access session.jsp outside of the application's protected area on Tomcat1, I note down the JSESSIONID and confirm with the load balancer that Tomcat1 handled the request. I then shut down Tomcat1 and refresh the page. The request is now handled by Tomcat2 (as confirmed by the load balancer). When the page finishes loading I see my original JSESSIONID and my session has survived.

Test 2)
I access session.jsp inside of the applicaton's protected area on Tomcat1. This prompts me to log in. After logging in I am sent to session.jsp and note down my JSESSIONID and confirm with the load balancer than Tomcat1 handled the request. I then shut down Tomcat1 and refresh the page. The request is now handled by Tomcat2 (as confirmed by the load balancer). When the pages loads I check my cookie. I now have a new JSESSIONID and I am once again prompted to log in.

So far from this I've figured that authenticated sessions aren't being replicated like unauthenticated sessions. Is this a good reason for this or does it point to a configuration problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

戏剧牡丹亭 2024-11-05 01:55:17

您尚未在sticky_session模式下运行,可以使用worker.loadbalancer.sticky_session=1启用它

并更好地检查:

You have not running on sticky_session mode and it could be enabled with worker.loadbalancer.sticky_session=1

And bettter check : http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文