【问题标题】:How to handle sticky sessions issue?如何处理粘性会话问题?
【发布时间】:2015-07-14 08:05:01
【问题描述】:

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

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

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

维沙尔

【问题讨论】:

  • 你的负载均衡器是什么? (例如,它是 Windows 网络负载均衡器吗?)

标签: c# session iis webserver load-balancing


【解决方案1】:

这个问题主要取决于您的负载平衡器和粘性的持久性。

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-12-07
      • 1970-01-01
      • 2012-05-16
      • 2012-03-12
      • 2015-06-17
      • 1970-01-01
      • 2019-08-20
      • 2011-09-16
      相关资源
      最近更新 更多