有些同事提出了在同一硬件上运行的不同虚拟机上的多个Web服务器(IIS7)的Web负载平衡架构。
这是一个真正有利的设置? 所有的机器都是64位,所以内存寻址不应该是一个问题。
我看到的方式是这样的:通过虚拟化,您可以对某些处理资源进行沙盒处理。 你把networking服务器分离出来, 您可以升级服务器而另一台服务器接pipe服务器,并在出现问题时redirect请求。
您可以快照虚拟机以回滚生产问题。
您可以更轻松地将虚拟机迁移到单独的硬件上,因此,您可以将虚拟机移动到新机器上,而不是迁移裸机设置(configuration全新的Web服务器),或者如果您设置了“适当的“群集你的虚拟机将是一个很好的位置,只是滚到生产,而不是从头开始重新configuration。
如果需要,您可以将独立的VSwitch设置到NIC以控制stream量。
我认为它提供了一些更大的灵活性和选项,让VM主机上的多台机器处理您的网站。
另一方面,如果只有一台主机,则可能会出现故障点。 如果您至less有两块网卡,这有助于缓解这种情况(例如,根据您的需要和设置,您可以将网卡专用于特定的虚拟机),根据主机的configuration,某些问题会更加明显。 例如,如果磁盘卷不是最佳的,那么由于I / O争用将会降低性能,而且当然你的处理器将不得不在虚拟机之间分配资源。
真正让我虚拟化的力量就是更简单的pipe理和迁移路线。 我认为将硬件从机器上抽象出来要容易得多,当购买更好/更大/更快的东西时,可以将已build立的工作设置迁移到该硬件,从而减less停机时间和configuration麻烦。 或者你可以平衡主机之间的机器。 在我们的情况下,如果我们遇到了问题,还是有可能的,如果我们必须这么做的话,那么将服务器作为虚拟机运行在工作站上,直到我们的主机服务器以临时设置使用虚拟机,真的注意到一个区别。
快照(在我们的用例中)对于确保更新不会在重新启动时将我们的系统转换为paperweights非常重要。 快照,更新(或更改configuration),重新启动,testing并删除快照,如果一切顺利的话。
那有意义吗? 如果你的网站被大量贩卖,也许不会,因为你会有I / O的争夺。 如果您的网站装载较less,并且您认为将来会获得另一台主机,我会强烈考虑。 我认为从虚拟化中抽象出来,可以使得随着时间的推移添加机器和改变configuration变得更加容易,但是如果你对性能感到担忧,那么虚拟化招致的开销就会受到一些伤害。
您将比仅运行一个实例招致更多开销。 唯一的好处是,如果一个虚拟机发生故障,您将有另一个虚拟机作为故障转移。 当然,如果你有更多的硬件,你的可靠性会更好。
这样做的一个可能的好处是,稍后您可以将虚拟机移动到其他硬件上并预订更多的资源,但是您可以通过在添加容量时将更多的服务器添加到负载平衡中来获得相同的好处。
我说是的,因为这也会让你有能力让其中一个虚拟机做一些维护,而另一个虚拟机正在运行,并向最终用户提供内容。
不是那么简单的回答…它依赖于成千上万的东西;-)
把所有的IO(共享内存,磁盘,networking,CPU)瓶颈都排除在最后:
对于你的Apache来说,运行“100个连接上的5个实例”比“500个连接上的1个实例”更有效。但是这也可能是刚刚启动多个apacs的归档,或者可能更好的解决了在那里整理apache,把一个nginx在前面(很多更好的连接轮询,仍然有运行你的应用程序的Apache); – )…
除此之外:在主机节点上拥有“一个虚拟服务器”,可以使克隆,备份和故障切换更简单。
多个虚拟机做同样的事情很可能没有任何好处(或者您可以通过其他方式更好地存档)
一个例外是容错,因此在同一个硬件上有两个虚拟机可以帮助防范SoftwareFails(仅在一个Apache上的segfault),但是这需要一个体面的设置。
–
一般:
“激活”是的! 备份,克隆,移动
“在相同的硬件上多次运行相同的映像”否(是的,也有可能是有意义的情况下)
performance:有更好的事情要做
FaultTolerance:只有softwareFails,不能做我的monint