【问题标题】:Enabling sticky sessions on a load balancer在负载均衡器上启用粘性会话
【发布时间】:2013-04-18 03:24:41
【问题描述】:

任何关于这个的建议将不胜感激,我整个上午都在研究,但我仍在摸不着头脑。几周前我在一家新公司开始工作,我是唯一的 .NET 开发人员,因为开发最初是由一家外包公司完成的,我被要求进行研究。 我对现有系统的了解非常有限,但据我所知,情况如下。

我们希望在 asp.net 网站上启用粘性会话。根据我收集的研究,我需要执行以下步骤。我们正在使用 ASP.NET 状态服务

设置是一个负载平衡服务器,它服务于两个 Web 服务器。

  1. 确保两个 Web 服务器具有相同的机器密钥。
  2. 确保网站在部署前已经预编译。用于通过 ASP.NET 状态服务对对象进行序列化。
  3. 确保 iis 元数据库上的应用程序路径在两个 Web 服务器上相同。

我缺乏的一点知识是会话存储在哪里。会话是否存储在负载均衡器上,它们可以存储在负载均衡器上吗?根据我的阅读,它们由 ASP.NET 状态服务存储,如果该服务在负载均衡器上运行,因此会话存储在负载均衡器上。

据我了解,ASP.NET 状态服务在每台 Web 服务器上运行,它们只是相互通信,以便将会话存储在两台服务器上。我假设他们这样做的方式是基于所使用的算法类型。任何信息将不胜感激。

【问题讨论】:

    标签: asp.net session iis load-balancing sticky


    【解决方案1】:

    zeencat,看看状态服务器模式部分的http://msdn.microsoft.com/en-us/library/ms178586.aspx

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

    据我了解,ASP.Net 状态服务在一台服务器上运行,作为一种名为 ASP.NET 状态服务的服务,两台服务器将具有相同的 web.config 文件:

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

    这样,会话存储在托管服务的服务器上。

    希望对你有帮助, []

    【讨论】:

    • 什么是“SampleStateServer”。是我的机器名吗?
    • @SachinTrivedi,我相信这是用于存储会话的服务器的名称或 IP。不确定:)
    【解决方案2】:

    如果您在 AWS 中,请考虑使用 ElastiCache;如果在本地,请考虑使用 Redis 作为您的 ASP.NET 会话存储,而不是使用粘性会话。它在自动缩放、负载平衡和性能方面具有更多优势。更多信息http://blogs.msdn.com/b/webdev/archive/2014/05/12/announcing-asp-net-session-state-provider-for-redis-preview-release.aspx

    【讨论】:

      猜你喜欢
      • 2021-09-06
      • 2014-09-21
      • 2017-10-22
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 2016-08-12
      • 1970-01-01
      相关资源
      最近更新 更多