【问题标题】:.NET Web-Application and Load Balancer.NET Web 应用程序和负载均衡器
【发布时间】:2012-01-11 03:41:09
【问题描述】:
我有三层 .NET Web 应用程序,在 Web 层(总共 4 个 Web 服务器)前面带有 F5 负载均衡器(粘性会话),在 Web 层和 Web 层之间有另一个负载 F5 负载均衡器(粘性会话)应用层(总共 4 个应用服务器)。底层数据库是集群的。
问题
通过在 Web 层和应用层之间使用负载平衡器,这是管理会话状态的唯一方法吗?
如果您只在 Web 层前使用 F5 负载均衡器,将使用什么机制来处理应用层的会话状态?
【问题讨论】:
标签:
.net
load
web
load-balancing
【解决方案1】:
如果您不想在负载平衡器级别使用粘性会话,则可以使用 2 个标准选项进行会话状态管理。
See msdn Session-state
使用状态服务器模式配置您的应用程序,您可以配置一台服务器来运行会话状态服务,并且所有应用程序都配置为指向该服务器。所以状态存储在一台服务器的内存中。
<configuration>
<system.web>
<sessionState mode="StateServer"
stateConnectionString="tcpip=SampleStateServer:42424"
cookieless="false"
timeout="20"/>
</system.web>
</configuration>
另一个选项是使用 SQL Server 模式配置您的应用程序。状态存储在 SQL 数据库中。这是最安全的选择,因为会话状态是持久的。
<configuration>
<system.web>
<sessionState mode="SQLServer"
sqlConnectionString="Integrated Security=SSPI;data
source=SampleSqlServer;" />
</system.web>
</configuration>