使用 KVM 虚拟化使管理图像和应用程序更加容易,而不是隔离硬件

使用 KVM 虚拟化使管理图像和应用程序更加容易,而不是隔离硬件

用例:我们有几个网络服务器,短期内我们将用 2 个应用服务器组件来使其超载。

从长远来看,我们会将应用服务器组件从网络服务器迁移到专用硬件上(随着使用量的增长和我们获得更多硬件)。

我们正在考虑使用 KVM 创建单独的客户操作系统,以便我们可以单独开发(测试)各个应用程序,当需要迁移它们时,这个过程会简单得多,因为我们迁移的是完整的虚拟机。这还将确保我们拥有一致的操作系统配置,因为管理标准虚拟机映像比管理原始磁盘映像更容易。

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

问题是这样的:

  • 我们希望所有 CPU 资源在 Web 服务器和应用服务器组件之间 100% 共享。这意味着我会将所有 8 个核心分配给所有虚拟机。这样可以吗,或者有人认为这种推理存在任何危险信号吗?

答案1

我会用Linux 容器(LXC)而不是为此目的使用完整的虚拟机管理程序(KVM、ESXi 等)。

这里举个例子。

这让您可以访问物理资源、网络和操作系统隔离,但没有 KVM 的开销和管理复杂性。“操作系统”位于普通文件系统目录树中(增强的chroot)。

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

答案2

是的,您可以过度分配 vCPU。这是否会导致问题几乎完全取决于工作负载。如果虚拟机同时需要的线程数超过 pCPU 的数量,则时间开销可能会发挥作用。无论如何,您都需要密切关注这一点。

如果您计划同时对虚拟机进行压力测试,那么您将看到性能下降。如果您只计划对一台虚拟机进行压力测试,而其他虚拟机处于空闲状态,则性能差异不会那么大。

答案3

这些虚拟机真的需要 8 个核心吗?如果不是,我会坚持它们需要的。KVM 虚拟 CPU 对主机来说就像一个进程,主机可能会在任何物理 CPU 上安排它(除非你把它固定到特定的 CPU)。不必要的过度分配没什么大不了的,但避免它会减少主机需要能够安排的进程数量,并使 Linux 调度程序的工作更轻松

答案4

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

这正是您的操作系统的用途。您不能像您建议的那样过度配置 CPU 资源。如果您真的想要隔离,但又需要共享资源,那么您需要 Docker(容器),因为它们正是:操作系统级虚拟化。

相关内容