2011-08-22 60 views
4

我们正在努力建立负载均衡通过防火墙我们的网站。我们将有两个Web服务器,即ws1和ws2,它们都使用进程内会话运行相同的Web应用程序。asp.net服务器负载均衡设置 - 它如何影响会议

我的问题是,如果有人访问我们的网站,目前拥有WS1一个会话,防火墙切换他们WS2,这将给他们WS2的一个新的会话。我的问题是,如果他们切换回WS1,而他们的原始会话还没有过期,他们将得到一个新的会话,或将浏览器仍然有其旧的会话标识,并带回他们的老会话?

+0

不是100%肯定,但我认为? – Tim

回答

4

当使用过程中的会话,两个服务器将是完全不知道彼此的。您的用户可能会切换并丢失会话,然后再切换回来,并恢复其旧会话。这不会为你和你的用户带来悲伤:取决于你对会话的依赖程度,事情会随机消失并重新出现。

你需要寻找到Session State Providers,这将让你使用一个公用存储您的会话数据。典型的选择是将会话存储在SQL Server中,因为您可能已经在两台服务器之间共享该会话。如果您不使用SQL Server,则可能需要为数据库编写自己的提供程序或找到由第三方创建的提供程序。 (这里的悖论是,现在你的SQL Server需要负载平衡/高可用性,现在你只是转移了这个问题。)

如果这不是一个选项,你的防火墙可能支持“session affinity”或“粘性会话”,它将使用某种状态检查来跟踪会话,并确保一旦会话启动,来自该会话的流量就会被定向到仅一台服务器。然而,这被认为是一个混乱,不应该依赖。在负载平衡的情况是最好使用一个中央存储的会话(如数据库)使用会话时