当前位置 : 主页 > 网络编程 > ASP >

asp.net – 网络负载平衡方案的会话状态

来源:互联网 收集:自由互联 发布时间:2021-06-24
我们目前为网站设置了当前服务器: 服务器1:管理系统数据库 服务器2:公共站点 服务器3:公共站点 使用Windows网络负载平衡系统管理服务器2和3.它们都运行公共站点代码的副本. 这些
我们目前为网站设置了当前服务器:

>服务器1:管理系统&数据库
>服务器2:公共站点
>服务器3:公共站点

使用Windows网络负载平衡系统管理服务器2和3.它们都运行公共站点代码的副本.

这些网站严重依赖会话,因为他们使用用户登录,我的问题是:

如何在服务器之间保留状态?

公共站点的web.config目前如下所示:

<sessionState mode="StateServer" cookieless="false" timeout="40" stateConnectionString="tcpip=localhost:42424"/>

当然,这只是将“localhost”更改为我想要存储会话的I.P的情况?我正在考虑使用数据库服务器来存储会话,所以它看起来像这样:

<sessionState mode="StateServer" cookieless="false" timeout="40" stateConnectionString="tcpip=databaseserverIP:42424"/>

这是明智的吗?

我发现了很多关于这个主题的相互矛盾的文档,并希望有人能够深入了解他们之前/将会如何做到这一点.

此外(虽然我在这里!),管理系统允许您上传文章的图像.我正在考虑在服务器2和3上设置一个虚拟目录,这将指向网络共享映射到管理站点上的上传目录,是否有任何理由不赞同这个?

为我的无知道歉,这对我来说是一个未知的领域!

谢谢,肖恩

取决于您想要的国家服务.

通常在负载平衡的场景中,您可以使用SQL Server会话或ASP.NET状态服务.

每个都有它的pro / con(SQL Server会话需要序列化/反序列化,但是如果服务器崩溃则保持状态,如果服务器故障转移,ASP.NET状态不会保持状态,但由于没有序列化/反序列化,它会更快).

无论如何,考虑在独立的独立机器上托管服务 – 因此它不会与其他进程争夺资源.

关于这两者的讨论需要您进一步研究 – 就像您的主要关注点是可用性还是速度一样.

请记住,如果要在Web服务器(即webfarm)之间共享会话,则需要将每个服务器的machineKey设置更新为相同.

Here’s一篇关于ASP.NET Session State的好文章(以及我提到的machineKey问题).

网友评论