加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – Load Balancer中的HTTP会话

发布时间:2020-12-15 01:42:01 所属栏目:大数据 来源:网络整理
导读:我们有两台服务器用于负载平衡.有时,在成功登录我们的应用程序后,我们会收到无效会话,即使会话超时配置为30分钟,用户会话也已过期.我们不确定是否在其中一个服务器中发生了身份验证,后续请求是否发送到另一个服务器.这似乎是随机的,不会发生在所有用户身上.

我们有两台服务器用于负载平衡.有时,在成功登录我们的应用程序后,我们会收到无效会话,即使会话超时配置为30分钟,用户会话也已过期.我们不确定是否在其中一个服务器中发生了身份验证,后续请求是否发送到另一个服务器.这似乎是随机的,不会发生在所有用户身上.

注意到仅在所选网络中发生无效会话.我们的应用程序可在印度各地的21家商店中访问.其中7家商店有这个问题,甚至所有商店都使用Airtel网络.我们的应用程序在我的办公室网络和airtel数据卡中正常工作.但是在我的笔记本电脑上使用Jio网络连接时遇到了奇怪的问题.如何在Jio网络中发生这种情况?

Language: Java 

框架:春天

Server: Jboss 7.1.1
正如您所说,问题很可能是因为会话是在一台服务器上创建的,但是一些后续请求将转到另一台没有正确会话属性的服务器,因此它认为用户未登录.

您需要在负载均衡器中配置粘性会话,以便对给定会话的所有请求始终重定向到会话所在的两个服务器之一(并坚持使用).换句话说,一旦user1的会话在serverA上创建,所有后续请求都会在该会话中坚持使用它.同样,user2的会话可能会也可能不会在同一服务器或服务器B上结束.粘性会话(或会话亲和性)可以仅通过配置实现,无需更改代码.

或者,您可以将会话保留在外部数据源中,并在两个服务器之间共享,而无需粘性会话. Spring Session框架提供了一种使用许多外部数据源实现会话持久性的非常方便的方法.会话持久性需要代码(好的,Spring配置)更改,因此它们比使用粘性会话更具侵入性,但它更有利于服务的负载平衡,可伸缩性和可用性.

以下是一些可以帮助您决定或至少了解更多内容的参考资料:

http://blog.haproxy.com/2012/03/29/load-balancing-affinity-persistence-sticky-sessions-what-you-need-to-know/

https://touk.pl/blog/2016/03/22/haproxy-sticky-sessions-for-soap-payloads/

http://docs.spring.io/spring-session/docs/current/reference/html5/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读