如何处理粘性会话问题?

时间:2015-07-02 09:07:25

标签: c# session iis webserver load-balancing

我遇到了这个奇怪的问题,我的应用程序的用户很少从Dock中插入他们的笔记本电脑并在使用应用程序时移动到WIFI网络,现在在他们点击应用程序中的任何导航后更改网络时它将它们带回来提到会话的登录页面已过期。

背景:托管应用程序的服务器具有动态路由命令请求的负载均衡器,因此当用户从一个网络转到另一个网络时,Web浏览器维护的旧会话保持打开但负载blancer将其识别为新的请求,因此分配给需要登录的下一个可用服务器,现在如果用户有幸在他之前的同一个Web服务器上路由,那么一切正常,否则他被重定向到新的Web浏览器。

请帮我解决罕见的情景问题。 提前谢谢。

维沙尔

2 个答案:

答案 0 :(得分:0)

此问题主要取决于您的负载均衡器和粘性的持续性。

一些平衡器在内部处理粘性持久性,因此它们在客户端IP和路由之间有一个表。你的情况听起来像那样。

现在,如果将持久性从内部表转移到cookie(或URL附录),则可以解决此问题。通过使用cookie,客户端将在每个请求上发送cookie,负载均衡器可以检查所请求的路由是否仍然有效,然后提供请求。 Apache(http://httpd.apache.org/docs/2.4/mod/mod_proxy_balancer.html#stickyness_implementation)有一个非IIS示例,它们如何处理粘性,但可行性取决于您的平衡器。

答案 1 :(得分:0)

由于您已就地进行负载均衡,因此只是将会话存储在Jsession或Cookie中的问题,为避免此问题,我建议您配置服务器以使用Cookie。默认情况下,Tomcat 7(我相信Tomcat 8)配置为使用Jsession