繁体   English   中英

网络农场中的 ASP.NET

[英]ASP.NET In a Web Farm

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

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

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

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

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

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

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

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

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

如何:设置多服务器 ASP.NET Web 应用程序和 Web 服务

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM