Windows 最有效的负载平衡解决方案是什么?

Rob*_*rey 4 windows hosting load-balancing

为此,我特指在 Windows 上运行网站,但它并非特定于 IIS。我们有时也会运行 Tomcat。显然,这里有许多硬件和软件选项可供选择,并且在 Windows 世界中需要考虑许多要点,例如粘性会话和有时在 Web 应用程序中固有的状态。

因此,我正在寻找任何关于有效负载平衡策略的良好经验,无论是基于硬件还是基于软件,以及证明与此相关的业务成本合理的理由。

谢谢

更新:

为了回答 Paul 提出的一些更深层次的探索性问题,我个人会寻找最小负载的负载平衡,并且肯定会使用会话故障转移。现在这种事情也可以通过像 Memcached 或类似的东西来处理。SSL 终止在很大程度上取决于您是采用硬件还是软件路线,但我也可以回答我自己的问题。

数量可以是任何东西,从一个有计划的初创公司到希望成倍增长的计划,而不是向用户展示臭名昭著的失败鲸鱼......

该问题特别询问了过去在 Windows 上运行网站时,哪些负载平衡策略对您有效。如果您提出的策略是硬件负载平衡,例如在负载平衡器上发生 SSL 终止,并且您详细说明了为什么这对您来说是一个很好的策略,那么这将有助于回答我的问题。现在,我对不同的方法和替代方案没有足够的经验,因此我的问题。

Ste*_*ans 5

我是 Windows 负载平衡服务 (WLBS) 的忠实粉丝。我意识到有些人可能会说这不适合处理大型站点的任务,但不知何故 Microsoft 能够使其适用于 Microsoft.com,所以我倾向于不同意这些说法。


Dom*_*c D 5

像 scevans 提到的负载平衡当然可以用 Windows NLB 来完成。我猜大多数 Windows 网上商店都是以这种方式开始的。有些人继续无限期地使用它。

NLB 表现不佳是一个常见的误解,从性能的角度来看,它确实还不错。NLB 非常适合某些事情,例如相对稳定且未处于积极开发状态的应用程序。NLB 开始让你失望的地方是它的状态检查,NLB 基本上完全没有注意到应用层,因此在某个时间点,当你的 JVM 或 IIS 工作进程之一爆炸时,NLB 将继续看到损坏的服务器在监听,并继续愉快地将请求路由到您的 up 服务器上的 down 应用程序,这显然很糟糕。

这就是专门构建的 Web 负载平衡器开始发挥作用的地方。几乎所有这些都支持各种平衡方法,包括循环、最少连接和这两种方法的加权版本。

能够为每个服务器上的每个应用程序指定一个健康检查页面带来了新的信心水平,并允许负载平衡器做出更好的决策。根据您的应用程序,通常应该专门构建健康检查页面。我喜欢健康检查页面快速轮询数据库服务器以确保数据库连接正常工作。这个调用应该非常便宜,我们的数据库向导提供了这个,我认为它是一个“选择 1”,但我可能是错的。如果调用成功,测试页面会显示一个服务器标识符(我们还使用此页面来查看我们在启用粘性的农场上卡住的服务器)。无论如何,负载均衡器每分钟都会遇到几次,然后解析响应文件,只要它没有失败它就会留在轮换中。如果该页面由于任何原因失败,服务器将从轮换中删除。这对于管理 Web 服务器的人员没有专业知识/访问负载平衡器的情况也很方便。通过简单地重命名运行状况检查文件,他们可以轻松地将服务器从轮换中拉出以进行部署或故障排除。大多数负载平衡器也可以配置一个抱歉的服务器。如果您在场中所有节点上的运行状况检查均失败,则用户将被发送到包含(静态)维护页面的不同服务器。

负载平衡器上的 SSL 终止也很方便。一些负载均衡器不使用 HTTPS 进行健康检查,因此在某些情况下,卸载 SSL 是您利用上面列出的所有与健康检查相关的酷功能的唯一方法。卸载 SSL 显然还可以释放 Web 服务器 CPU 周期来为 Web 提供服务,而不是加密/解密,但对我而言,更大的好处在于故障排除和 SSL 管理。根据您的平台和工具,跨大型服务器群管理 SSL 证书并不容易(msdeploy 直到最新版本才支持它)。在 2 个负载均衡器上安装证书通常比 10 多个服务器更快/更容易。这对故障排除也很有帮助,时不时地,您会遇到超级奇怪的问题,您需要深入到数据包级别并窥探发送到 Web 服务器的内容。使用卸载的 SSL,所有这些流量都是纯文本的,并且非常容易分析。注意:这也意味着您的负载均衡器和您的服务器之间的网段需要安全。

关于故障转移,我认为应用程序应该设计为不需要粘性会话,除非有非常令人信服的理由。在 .NET 世界中,这通常就像配置应用程序以将其会话状态发送到所有节点上的 sql server 一样简单,并确保所有会话对象都是可序列化的(第一次打开时会出现一个很大的错误)如果不是,则打开它)。当您在此配置中运行时,您可以在不影响用户的情况下随时在 Web 服务器上工作,只需从轮换中移除服务器,进行更改,然后将其放回轮换中即可。由于会话数据都集中存储在 SQL 中,因此哪个节点响应请求并不重要。

关于软件与硬件以及证明成本的合理性,这有点狡猾。如果你有预算的硬件平衡器很好。在硬件中做事显然更快,更重要的是,您从硬件供应商那里获得的支持通常要好得多。如今,软件平衡器的功能越来越完善。

我的大部分经验都集中在 F5-BigIP、Cisco Arrowpoint/CSS 和 Cisco ACS 线路上。我最近开始研究 IIS7 应用程序请求路由 (ARR),为我的一个咨询客户提供预算。如果您有备用硬件和 Windows 许可证,则无需花费任何费用,而且功能看起来相当完整。我有兴趣看看它是如何叠加的。您可以在此处找到有关ARR 的更多信息。

如果您需要更具体的信息,请告诉我