[英]How to create an ASP.NET web farm?
我正在寻找有关如何创建ASP.NET Web场的信息 - 也就是说,如何使ASP.NET应用程序(最初设计为在单个Web服务器上工作)在2,3,10等服务器上运行?
我们创建了一个Web应用程序,当时有500个用户同时工作正常。 但现在我们需要让它适用于10 000个用户(同时使用Web应用程序)。
因此,我们需要设置20个Web服务器,并通过在其Web浏览器中键入“www.MyWebApp.ru”来使10 000个用户可以使用Web应用程序,尽管他们的请求将由20个Web服务器处理,他们知道这一点。
1)是否有特殊的标准软件来创建ASP.NET Web场 ?
2)或者我们是否应该通过手动 (使用ASP.NET / C#)在不同Web服务器之间传输请求来自己创建Web场 ?
我发现很少有关于ASP.NET Web场的信息和Web上的可伸缩性:在大多数情况下,有关可伸缩性的文章讲述了如何优化ASP.NET应用程序并使其运行得更快。 但我没有找到在2个Web服务器上运行的“Hello world”类ASP.NET Web应用程序的示例。
如果有人可以发布文章的链接,或者更好地讲述自己在ASP.NET“web耕作”中的经验并解决可扩展性问题,那将会很棒。
谢谢你,米哈伊尔。
1)是否有特殊的标准软件来创建ASP.NET Web场?
没有。
2)或者我们是否应该通过手动(使用ASP.NET / C#)在不同Web服务器之间传输请求来自己创建Web场?
没有。
要构建Web场,您需要某种形式的负载平衡。 对于最多8台服务器,您可以使用内置于Windows的网络负载平衡(NLB)。 对于8台以上的服务器,您应该使用硬件负载平衡器。
然而,负载平衡实际上只是冰山一角。 还有许多其他问题需要解决,包括:
如果它可能有用,我在本书中讨论了许多这些问题: Ultra-Fast ASP.NET:使用ASP.NET和SQL Server构建超快速和超可扩展的Web站点 。
我要说你应该配置一个NLB集群(网络负载平衡),它基本上可以在集群节点之间拆分所有请求(并且附加的好处是检测事情是否已关闭并停止发送请求)。 Windows中内置了这些功能,但它们与硬件设备的性能或可扩展性无法比较。 如果你使用的是Windows 2008,那么设置它真的很简单。 如果这样做,请确保您拥有共享计算机密钥,或者您将开始获取视图状态无效的异常(当1个服务器提交表单并且它发布到另一个并且他们使用不同的密钥对数据进行编码时)。
您也可以使用DNS循环法,但在20个服务器上,大概在1个数据中心,我不会看到这样疯狂的长度。 如果您有多个数据中心,虽然这绝对值得考虑(因为NLB在数据中心之间不会很好地工作)。
您还需要确定用户是否交换了服务器,而不会丢失会话。 最简单的方法是使用会话状态数据库(在web.config中可配置,或者您可以在IIS的配置中在服务器范围内执行此操作)。 如果您不使用会话,只需在web.config的Pages指令中关闭它们并将其称为一天。 您也可以使用会话状态服务器,但我对此没有任何经验。
考虑花一些时间优化代码或将缓存指令添加到静态内容也是值得考虑的 - 即使您只需要减少一些服务器的需求,它也可能非常划算。
希望有所帮助。
如果你的服务器保持无状态,那么很好的路由器可以实现一些循环Robbin协议(将每个调用发送到单个已发布服务器的ip到不同的Web服务器)。
如果它不是无状态的(比如 - 如果需要登录,或ssl),则需要将每个会话保持在同一服务器上。
以下是有关MS应用程序请求路由的一些信息 - 您将获得所有内容:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.