使用KVM虚拟化来简化pipe理映像和应用程序,而不是分离硬件

用例:我们有几个Web服务器,我们将在短期内用2个应用服务器组件重载。

从长远来看,我们将把应用程序服务器组件从networking服务器迁移到专用硬件上(随着使用的增长,我们获得更多的硬件)。

我们正在考虑使用KVM来创build单独的客户操作系统,以便我们可以单独开发(testing)各个应用程序,当需要将它们迁移时,该过程要简单得多,因为我们正在移动完整的虚拟机。 这也将确保我们具有一致的操作系统configuration,因为pipe理标准虚拟机映像比pipe理原始磁盘映像更容易。

第二个好处是能够启动虚拟机来升级生产硬件上的服务器组件,而不需要第二组硬件(而预算限制了我们的硬件支出)。

问题是这样的:

  • 我们希望所有的cpu资源在web服务器和应用服务器组件之间共享100%。 这意味着我将所有的8核心分配给所有的虚拟机。 这是好的,还是有人在这个推理中看到任何红旗?

为此,我将使用Linux容器(LXC)而不是完整的虚拟机pipe理程序(KVM,ESXi等)。

这里的例子。

这使您可以访问物理资源,networking和操作系统隔离,但不具有KVM的开销和pipe理复杂性。 “OS”位于正常的文件系统目录树(增强的chroot )中。

请指定您正在使用的Linux操作系统发行版。

是的,您可以过度分配您的vCPU。 是否会造成问题,几乎完全取决于工作量。 如果虚拟机同时需要更多的线程,那么时间开销可能会发挥作用,然后是pCPU的数量。 无论如何,这是你想要密切关注的东西。

如果你打算一起testing虚拟机,那么你会看到性能下降。 如果你只打算强调一个虚拟机,而其他虚拟机是空闲的,性能差异将不会太大。

那些虚拟机真的需要8个内核吗? 如果没有,我会坚持他们所需要的。 KVM虚拟CPU看起来就像主机的一个进程,主机也可以在任何物理CPU上进行调度(除非将其固定到特定的CPU)。 没有必要的过度configuration并不是什么大事,但是避免它减less了主机需要调度的进程数量,并且使Linux调度程序的生活更轻松

我们希望所有的cpu资源在web服务器和应用服务器组件之间100%共享。

这正是你的操作系统的用途。 您不能按照您的build议过度调配CPU资源。 如果你真的想要隔离,但共享资源,你会想你Docker(容器),因为他们正是:操作系统级虚拟化。