gpt4 book ai didi

asp.net - 网络负载平衡场景中的 session 状态

转载 作者:太空狗 更新时间:2023-10-30 02:01:08 24 4
gpt4 key购买 nike

我们目前已经为站点设置了当前服务器:

  • 服务器 1:管理系统和数据库
  • 服务器 2:公共(public)站点
  • 服务器 3:公共(public)站点

服务器 2 和 3 使用 Windows 网络负载平衡系统进行管理。他们都在运行公共(public)站点代码的副本。

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

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

当前公共(public)站点的 web.config 如下所示:

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

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

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

这样做明智吗?

我发现了很多关于这个主题的相互矛盾的文档,如果有人能深入了解他们以前是如何做的/将会这样做,我将不胜感激。

另外(当我在这里的时候!),管理系统允许您为文章上传图片。我正在考虑在服务器 2 和 3 上设置一个虚拟目录,这将指向管理站点上上传目录的网络共享映射,有什么理由不赞成这样做吗?

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

谢谢,肖恩

最佳答案

取决于您想要的状态服务。

通常在负载平衡的情况下,您会选择 SQL Server session 或 ASP.NET 状态服务。

每个都有其优缺点(SQL Server Session 需要序列化/反序列化,但在服务器故障时保持状态,ASP.NET 状态在服务器故障转移时不保持状态但由于没有序列化/反序列化而更快).

无论如何,请考虑将服务托管在单独的独立机器上 - 这样它就不会与其他进程争夺资源。

关于这两者的讨论需要您进一步研究 - 因为您最关心的是可用性还是速度。

请记住,如果您想在 Web 服务器(即网络场)之间共享 session ,则需要将每个服务器的 machineKey 设置更新为相同。

Here's一篇关于 ASP.NET session 状态(以及我提到的 machineKey 问题)的好文章。

关于asp.net - 网络负载平衡场景中的 session 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3289619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com