我正在考虑将 .NET Web 应用程序背后的硬件从运行 Web 服务器和 SQL Server 的单个机器扩展为两个独立的单元,其中一个运行 Web 服务器,另一个运行 SQL Server。
在研究期间,我阅读了各种有关虚拟化的内容,但想知道它在 Web 应用程序扩展时如何发挥作用?对我来说,它似乎不是一种高可用性策略,因为它都位于同一硬件之上,所以如果硬件出现故障,整个系统就会像一堆纸牌一样倒塌!虽然我确信我在这里遗漏了一些东西。
那么虚拟化的商业案例是什么?本质上,我希望实现一个长期的、具有高可用性的良好横向扩展策略(我知道两台服务器很难实现高可用性,但这是我最终想要的,也许不是现在)。如何使用虚拟化来超越单台或双台服务器配置?我原本以为,实现高可用性和横向扩展的更有效策略是使用更多带有负载平衡 Web 层和联合数据库的服务器?
答案1
通过仅在一个虚拟主机上进行虚拟化,您可以实现更高级别的 HA - 能够在服务器应用程序的每一层创建多个服务器的群集(例如,两个具有日志传送或其他功能的 SQL 服务器,两个配置了负载平衡的 Web 服务器),然后您可以对每个级别的组件一次执行一个预定的维护,而不会中断服务可用性。
显然,仅使用一个盒子无法获得硬件级别的 HA,但这是您的选择。您可以根据需要随时添加它。
至于如何使用虚拟化来实现大量高可用性服务器,顶级虚拟化产品允许在虚拟主机服务器不可用的情况下进行一定程度的故障转移 -VMWare vmotion就是这种技术的一个例子。如果您从支持此类功能的虚拟主机开始,那么在不中断公共服务的情况下,添加、删除、升级故障转移组中可用的虚拟主机等就变得轻而易举。
这并非灵丹妙药。但确实非常棒。
答案2
继续研究。Hyper-V w/Failover Clustering 和 VMware HA 都解决了硬件 HA 问题。要使您的应用程序具有高可用性,您首先要使您的硬件具有高可用性,这就是 Hyper-V w/Failover Clustering 和 VMware HA 的目的。