负载均衡时会话共享的问题应该怎么样解决

  

下文给大家带来负载均衡时会话共享的问题应该怎么样解决,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍,今天我们就用在行业内累计的经验来做一个解答。

每个客户端在访问网站时,都会创建相应的会话,用来保存客户的状态信息,网站如果做了负载均衡,会议共享是要做的,IIS对于会话的存储有五种模式

负载均衡时会话共享的问题应该怎么样解决

<强>

1, InProc模式(进程内模式)。为默认设置。

会话状态存储在网络云服务器上的内存中。

2, StateServer模式(状态服务器模式)。

会话状态存储在一个名为ASP。净状态服务的单独进程中。这确保了在重新启动网络应用程序时会保留会话状态,并让会话状态可用于网路场中的多个Web服务器。

3, SQL Server模式。

会话状态存储到一个SQL Server数据库中。这确保了在重新启动网络应用程序时会保留会话状态,并让会话状态可用于网路场中的多个Web服务器。

4,自定义模式

此模式允许您指定自定义存储提供程序。

5,下模式

此模式禁止会话状态。


<强>

,,,如果网站做了负载均衡,对于会话存储就只能选择2,3,4了,下面先来介绍一下StateServer模式,首先得开启状态服务

负载均衡时会话共享的问题应该怎么样解决

然后再对web站点的“会话状态”进行设置

负载均衡时会话共享的问题应该怎么样解决

启用本机的状态服务

负载均衡时会话共享的问题应该怎么样解决

会自动在网络。配置里生成配置文件(如果不能生成就手动添加)

& lt; sessionState 模式=癝tateServer”, stateConnectionString=皌cpip=回路:42424”,超时=?0”,/在

但是这里就存在一个问题,如果每台服务器都照上面配置,各服务器的会话都存储在本机的StateServer里面,还是没有启动共享的作用,这里就需要让一台StateServer共享出来让其他服务器访问,并将会话存储到上面,运行注册表编辑器→打开注册表→找到HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ aspnet_state \ \服务参数节点→将AllowRemoteConnection的键值设置成“1”(1为允许远程电脑的连接,0代表禁止)

负载均衡时会话共享的问题应该怎么样解决


也可以修改StateServer的端口

负载均衡时会话共享的问题应该怎么样解决


接下来将其它服务器中。配置的配置文件进行修改(sessionState指向开启了允许远程访问的StateServer)

& lt; sessionState 模式=癝tateServer”, stateConnectionString=皌cpip=10.16.5.30:22222”,超时=?0”,/在

用StateServer这种共享式的会话存储方式不仅有安全隐患,而且像上面那台共享的StateServer只要重启服务器,所有的会话都会丢失,所以这种会话存储方式不是很完美,用StateServer存储sesssion比较适合单机IIS开启多进程的。

负载均衡时会话共享的问题应该怎么样解决

<强>

,,,要做保证安全并且不会因为重启服务器导致会话丢失,那就要用sql server来存储会话,ASP。NET 2.0版本后微软提供了aspnet_regsql.exe工具可以方便的配置会话数据库。该工具位于Web服务器上的系统根目录微软。NETFramework版本号文件夹中

cd  Microsoft.NET C: \ Windows \ \ Framework64 \ v4.0.30319   aspnet_regsql.exe , -ssadd  -sstype  c  -d  & lt; Database  Name>, -S  & lt; SQL  Server  IP>, -U  & lt; User  Name>, -P  & lt; Password>   aspnet_regsql.exe , -ssadd  -sstype  c  -d  ASPState  -S  10.16.5.36  -U  sa  -P  HAha789

注:& lt;数据库Name>为数据库名为ASPState, & lt; SQL Server IP>为数据库实例名像ibm pc \ SQLEXPRESS (若数据库不是2005的不要写ip地址,否则会连接失败),& lt;用户Name>为sa(或与sa同等权限的),& lt; Password>为sa用户名的密码会话定义成功,但是会提示在网络应用中进行相应的配置,此时查看会状态"置疑"发现增加了数据库ASPState,但是没有表。

负载均衡时会话共享的问题应该怎么样解决