为此,我特别指的是在 Windows 上运行的网站,但它并不特定于 IIS。我们有时也会运行 Tomcat。现在显然这里有许多硬件和软件选项可供选择,并且在 Windows 世界中需要考虑许多要点,例如粘性会话和有时在 Web 应用程序中固有的状态。
因此,我正在寻找的是任何有效负载平衡策略的良好经验,无论是基于硬件还是软件,以及证明与此相关的业务成本合理的理由。
谢谢
更新:
为了回答 Paul 提出的一些更深入的探索性问题,我个人会寻找负载最小的负载平衡,并且肯定会使用会话故障转移。现在这种事情也可以通过 Memcached 或类似的东西来处理。SSL 终止在很大程度上取决于您是走硬件还是软件路线,但我不妨回答我自己的问题。
数量可以是从有计划的初创公司到希望成倍增长而不会向用户展示臭名昭著的失败鲸鱼的任何东西......
该问题专门询问过去哪些负载平衡策略对您在 Windows 上运行网站有效。如果您提出的策略是硬件负载平衡,例如 SSL 终止发生在负载平衡器上,并且您详细说明了为什么这对您来说是一个好的策略,那么这将有助于回答我的问题。现在,我只是对不同的方法和替代方案没有足够的经验,因此我提出了问题。
我是 Windows 负载平衡服务 (WLBS) 的忠实粉丝。我意识到有些人可能会说它不能胜任处理大型网站的任务,但微软能够以某种方式使其适用于 Microsoft.com,所以我倾向于不同意这些说法。
就像 scevans 提到的负载平衡当然可以用 windows NLB 来完成。我猜大多数 Windows 网上商店都是这样开始的。有些人会无限期地继续使用它。
NLB 表现不佳是一个普遍的误解,从表现的角度来看,它确实还不错。NLB 对于一些相对稳定且未处于积极开发中的应用程序非常有用。NLB 开始让你失望的地方是它的状态检查,NLB 基本上完全忽略了应用程序层,因此在某个时间点,当你的 JVM 或 IIS 工作进程之一崩溃时,NLB 将继续看到损坏的服务器正在监听,并继续愉快地将请求路由到您的 up 服务器上的 down 应用程序,这显然很糟糕。
这就是专门构建的 Web 负载均衡器开始发挥作用的地方。几乎所有这些方法都支持各种平衡方法,包括循环法、最小连接和两者的加权版本。
能够为每个服务器上的每个应用程序指定一个健康检查页面带来了新的信心水平,并允许负载平衡器做出更好的决策。根据您的应用程序,健康检查页面通常应该是专门构建的。我喜欢健康检查页面快速轮询数据库服务器以确保数据库连接正常。这个调用应该非常便宜,我们的数据库向导提供了这个,我认为它是“选择 1”,但我可能错了。如果调用成功,测试页面会显示一个服务器标识符(我们还使用此页面查看我们在启用粘性的 Farms 上卡住的服务器)。无论如何,负载均衡器每分钟会命中几次,然后解析响应文件,只要它没有失败,它就会保持轮换。如果该页面因任何原因失败,则将服务器从轮换中删除。这对于管理 Web 服务器的人员不具备负载均衡器的专业知识/访问权限的情况也很方便。通过简单地重命名健康检查文件,他们可以轻松地将服务器从轮换中拉出来以进行部署或故障排除。大多数负载平衡器也可以配置一个抱歉的服务器。如果场中所有节点的运行状况检查均失败,则用户将被发送到包含(静态)维护页面的不同服务器。
负载平衡器上的 SSL 终止也很方便。一些负载均衡器不使用 HTTPS 进行健康检查,因此在某些情况下,卸载 SSL 是您利用上面列出的所有与健康检查相关的酷炫功能的唯一方法。卸载 SSL 显然还可以释放 Web 服务器 CPU 周期来服务 Web,而不是加密/解密,但对我来说,更大的好处在于故障排除和 SSL 管理。根据您的平台和工具,跨大型服务器场管理 SSL 证书并不容易(msdeploy 直到最新版本才支持它)。在 2 个负载均衡器上安装证书通常比 10 多个服务器更快/更容易。它对故障排除也很有帮助,时不时地你会遇到超级奇怪的问题,你需要深入到数据包级别并窥探正在发送到 Web 服务器的内容。使用卸载的 SSL,所有这些流量都是纯文本的,并且非常容易分析。注意:这也意味着负载均衡器和服务器之间的网段需要安全。
关于故障转移,我认为应用程序应该设计为不需要粘性会话,除非有非常令人信服的理由。在 .NET 世界中,这通常就像配置应用程序以将其会话状态发送到所有节点上的 sql 服务器一样简单,并确保所有会话对象都是可序列化的(第一次打开时会遇到一个很大的错误如果不是,则打开)。当您在此配置中运行时,您可以随时在 Web 服务器上工作而不会影响用户,只需将服务器从轮换中移除,进行更改,然后将其放回轮换中即可。由于会话数据都集中存储在 SQL 中,因此哪个节点响应请求并不重要。
关于软件与硬件以及证明成本的合理性,这有点棘手。如果你有预算硬件平衡器很好。在硬件中做事显然更快,更重要的是,您从硬件供应商那里获得的支持通常要好得多。如今,软件平衡器的功能越来越完善。
我的大部分经验是在 F5-BigIP、Cisco Arrowpoint/CSS 和 Cisco ACS 产品线上。我最近开始为我的一个咨询客户研究 IIS7 应用程序请求路由 (ARR) 的预算。如果您有备用硬件和 Windows 许可证,它不会花费您任何费用,而且它看起来功能相当完整。我有兴趣看看它是如何堆积起来的。您可以在此处找到有关 ARR 的更多信息。
如果您想了解更多具体信息,请告诉我
我认为,您将不得不更多地定义“有效”。
你想做什么样的负载均衡?循环,最小负载,地理负载平衡?
您想在数据包检查中进行多深(2/3 级或 7 级深度数据包检查)?
您需要会话故障转移吗?
你在说什么样的卷?
您希望在哪里完成 SSL 终止?
您的选择从简单的 Windows NLB 到具有 SSL 加速器的全球分布式硬件负载平衡器冗余阵列。“最有效”没有一个最佳答案
我们更喜欢具有冗余硬件的硬件负载平衡器解决方案。我们还使用负载均衡器作为 SSL 终止点。它不处理会话故障转移。它依赖于网络服务器来做到这一点。例如,我们曾经将 Weblogic 服务器配置为处理会话故障转移。
HAProxy。超级可靠,安全并运行许多大型系统。该网页有很多关于一般负载平衡的信息,并且有一些公司会为您提供交钥匙系统,例如Loadbalancer.org
如果您很便宜且任务很小,那么有一个名为 Distributor 的小而高效的 Java 负载均衡器(Sourceforce -distributor.shourceforce.com)以及服务器恢复后的故障转移和恢复。
试试看,告诉我你的想法!
当然,如果您每小时有数百万次点击,这不是硬件负载平衡,这不适合您!!!!
保罗