在单个 VMWare 主机服务器上运行 100 台虚拟机

在单个 VMWare 主机服务器上运行 100 台虚拟机

我已经使用 VMWare 很多年了,运行了几十台生产服务器,几乎没有遇到什么问题。但我从未尝试在一台物理主机上托管超过 20 台虚拟机。思路如下:

  1. 精简版 Windows XP 可以配备 512MB RAM 和 4GB 磁盘空间。
  2. 5,000 美元可以让我买到一台配备 64GB RAM 和四个 SAS 镜像的 8 核服务器级机器。
  3. 由于该服务器可容纳上述 100 台虚拟机,我的硬件成本仅为每台虚拟机 50 美元,这非常好(比在 GoDaddy 或任何其他托管商店租用虚拟机便宜)。

我想看看是否有人能够使用 VMWare 实现这种可扩展性?我做了一些测试,遇到了一个奇怪的问题。一旦启动 20 个虚拟机,虚拟机性能就会开始急剧下降。同时,主机服务器没有显示任何资源瓶颈(磁盘空闲率为 99%,CPU 利用率低于 15%,并且有大量可用 RAM)。

如果您能分享扩展 VMWare 或任何其他虚拟化技术的成功案例,我将不胜感激!

答案1

是的,可以。即使对于某些 Windows 2003 工作负载,384MiB 也足够了,因此 512MiB 是一个相当不错的估计,尽管有点高。RAM 应该不是问题,CPU 也不成问题。

100 台虚拟机有点多,但还是可行的,尤其是当虚拟机不太忙的时候。我们可以轻松地在一台 ESX 服务器上运行 60 台服务器(Windows 2003 和 RHEL)。

假设您谈论的是 VMware ESX,您还应该知道它能够过度使用内存。虚拟机几乎从不使用其指定的全部内存配给,因此 ESX 可以向虚拟机分配超过可用 RAM 量,并运行比其实际“正式”拥有的 RAM 更多的虚拟机。

您的瓶颈很可能不是 CPU 或 RAM,而是 IO。VMware 在营销中吹嘘其拥有大量 IOPS,但当情况紧急时,SCSI 预留冲突和有限的带宽会让您无法接近 VMware 所吹嘘的 IOPS。

无论如何,我们没有遇到 20 VM 性能下降的情况。您使用的是哪个版本的 ESX?

答案2

如此大型环境的一个主要问题是灾难预防和数据保护。如果服务器死机,那么 100 个虚拟机也会随之死机。

您需要规划某种虚拟机故障转移,并规划某种“额外虚拟机”管理,以便在发生故障时保护您的虚拟机。当然,这种冗余意味着成本增加 - 这可能就是为什么很多时候这种支出直到实践中看到其好处(由于没有这样做)后才被批准的原因。

还要记住,VM 主机只是几个单点故障之一:

  • 网络——如果 VM 主机的网卡出现故障怎么办?
  • 内存——如果 VM 主机的一部分内存出现问题怎么办?
  • CPU——如果 CPU 核心死机了,那么虚拟机会发生什么?
  • 电源 - 只有一根还是两根电源线?
  • 管理端口——假设您无法进入虚拟机的主机管理?

这只是其中的几个:庞大的虚拟机基础设施需要格外注意防止数据丢失和防止虚拟机丢失。

答案3

目前还不清楚该技术在生产中的可行性,但有一个非常有趣的 NetApp 演示,他们在 32 个 ESX 主机(每个主机 170 个)上配置了 5440 个 XP 桌面,耗时约 30 分钟,由于对常见 VM 映像进行了重复数据删除,因此占用的磁盘空间非常小

http://www.youtube.com/watch?v=ekoiJX8ye38

我猜你的限制来自磁盘子系统。你似乎已经相应地考虑了内存和 CPU 使用率。

答案4

我最担心的是单个主机上有 100 个虚拟机时 CPU 争用问题。您必须记住,处理器未虚拟化,因此每台机器都必须等待才能访问 CPU。您可以通过查看 ESXTOP 开始查看争用问题,VMWare 工程师告诉我,%RDY 字段中任何超过 5 的值都是非常糟糕的。

根据我的经验,我见过一台主机上运行大约 30 - 40 台服务器(不是太多)。

相关内容