在负载均衡器上启用粘性会话

6
任何关于这个问题的建议都将不胜感激,我已经研究了整个上午,但仍然是一头雾水。我几周前加入了一家新公司,在这里我是唯一的.NET开发人员,因为原来的外包公司负责开发,现在我被要求进行研究。
我对现有系统的了解极其有限,但从我所了解的情况来看,情况如下。
我们想在一个asp.net网站上启用粘性会话。从我的调查中,我收集到以下步骤。我们使用ASP.NET状态服务。
设置是负载平衡服务器,服务于两个Web服务器。
1.确保两个Web服务器具有相同的机器密钥。
2.确保网站在部署之前已被预编译。用于由ASP.NET状态服务序列化对象。
3.确保IIS元数据中的应用程序路径在两个Web服务器上是相同的。
我缺乏的一些知识是会话存储在哪里。会话存储在负载均衡器上吗?从我所读到的,它们是由ASP.NET状态服务存储的,因此服务是否应在负载均衡器上运行,因此会话存储在负载均衡器上。
据我了解,ASP.NET状态服务在每个Web服务器上运行,它们只是相互通信,以便会话跨两个服务器存储。我假设他们这样做的方式是基于所使用算法的类型。任何信息都将不胜感激。
2个回答

8

zeencat,看一下http://msdn.microsoft.com/en-us/library/ms178586.aspx的“State Server Mode”部分:

StateServer模式将会话状态存储在一个名为ASP.NET状态服务的进程中,该进程与ASP.NET工作进程或IIS应用程序池分离。使用此模式可以确保在Web应用程序重新启动时保留会话状态,并使会话状态对Web农场中的多个Web服务器可用。 要使用StateServer模式,必须首先确保ASP.NET状态服务在用于会话存储的服务器上运行。当安装ASP.NET和.NET Framework时,ASP.NET状态服务作为服务安装

据我所知,ASP.Net状态服务在一个服务器上运行,作为称为ASP.NET状态服务的服务,两个服务器将具有相同的web.config文件:

<configuration>
  <system.web>
    <sessionState mode="StateServer"
      stateConnectionString="tcpip=SampleStateServer:42424"
      cookieless="false"
      timeout="20"/>
  </system.web>
</configuration>

这样的话,会话将存储在托管服务的服务器上。
希望这有所帮助, []

“SampleStateServer”是什么?它是我的机器名称吗? - Sachin Trivedi
2
@SachinTrivedi,我相信这是用于存储会话的服务器的名称或IP。不太确定 :) - drigomed

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接