【问题标题】:ASP.NET In a Web Farm网络场中的 ASP.NET
【发布时间】:2010-12-23 23:19:34
【问题描述】:

ASP.NET 应用程序部署为web farm 时需要注意哪些问题?

【问题讨论】:

标签: asp.net web-farm


【解决方案1】:

HOW TO: Set Up Multi-Server ASP.NET Web Applications and Web Services

日志聚合很容易被忽略 - 在处理 HTTP 日志之前,您可能需要将它们组合起来以创建一个日志,其中包括发送到跨服务器的请求。

【讨论】:

    【解决方案2】:
    1. 不要使用会话,而是使用配置文件。您可以配置一个 SQL 集群来为它们提供服务。会话会过于频繁地查询您的会话数据库,而配置文件只是自行加载,仅此而已。
    2. 使用分布式缓存存储(如 memached)来缓存数据,使用 ASP.Net 缓存来存储您需要的东西
    3. 使用 SAN 或 EMC 提供静态内容
    4. 使用 S3 或类似的东西来回退 3。
    5. 拥有一些不错的负载平衡器,这样您就可以轻松地更新每台服务器,而无需关闭网站

    【讨论】:

      【解决方案3】:

      所有会话状态信息都需要跨服务器复制。如前所述,最简单的方法是使用 MSSQL 会话状态提供程序。

      任何磁盘访问,例如用户存储的动态文件,都需要位于所有服务器都可用的区域。例如通过使用某种形式的网络附加存储。脚本文件、图像和 html 等将被复制到每个服务器上。

      尝试在应用程序对象中存储任何信息或在应用程序启动时加载信息都需要进行审查。每次用户点击农场中的新机器时,都会触发这些事件。

      正如其他人所建议的那样,每台服务器上的机器密钥都非常大。如果您对 IP 地址而不是域使用 ssl,您也可能会遇到问题。

      您必须考虑要采用哪种负载平衡策略,因为这可能会改变您的方法。

      【讨论】:

      • 考虑让 SSL 在负载均衡器处终止,然后向各个 Web 服务器发送纯 HTTP 请求。像 F5 的 BigIP 或类似的平衡器支持这一点。
      【解决方案4】:

      我遇到的一个大问题是不同机器密钥分布在不同服务器上的问题。 ASP.NET 使用 machineKey 进行各种加密操作,例如 ViewState 和 FormsAuthentication 票证。如果您有不同的机器密钥,您最终可能会导致服务器无法理解来自其他服务器的回发。如果您想了解更多信息,请查看此处:http://msdn.microsoft.com/en-us/library/ms998288.aspx

      【讨论】:

      【解决方案5】:

      会话很大,请确保您使用 SQL Server 来管理会话,并且所有服务器都指向同一个 SQL Server 实例。

      【讨论】:

      • +1 但我会说:State information,只是为了更通用;这个领域包括CacheApplication数据
      猜你喜欢
      • 1970-01-01
      • 2010-12-21
      • 2013-03-07
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多