我使用 VMWare 已经很多年了,运行了几十台生产服务器,几乎没有问题。但我从未尝试在单个物理主机上托管超过 20 个虚拟机。这是想法:
- 精简版的 Windows XP 可以使用 512MB 的 RAM 和 4GB 的磁盘空间。
- 5,000 美元让我得到一台 8 核服务器级机器,配备 64GB 内存和四个 SAS 镜像。
- 由于上面提到的 100 个虚拟机可以安装到这台服务器中,我的硬件成本仅为每台虚拟机 50 美元,这非常好(比在 GoDaddy 或任何其他托管商店租用虚拟机便宜)。
我想看看是否有人能够使用 VMWare 实现这种可扩展性?我做了一些测试,遇到了一个奇怪的问题。一旦启动 20 个 VM,VM 性能就会开始急剧下降。同时,主机服务器没有显示任何资源瓶颈(磁盘空闲 99%,CPU 利用率低于 15%,并且有大量可用 RAM)。
如果您能分享有关扩展 VMWare 或任何其他虚拟化技术的成功案例,我将不胜感激!
是的你可以。即使对于某些 Windows 2003 工作负载,只有 384MiB 就足够了,所以 512MiB 是一个相当不错的估计,尽管它有点高。RAM不应该是问题,CPU也不应该是问题。
100 个虚拟机有点陡峭,但它是可行的,尤其是在虚拟机不会很忙的情况下。我们可以在单个 ESX 服务器上轻松运行 60 台服务器(Windows 2003 和 RHEL)。
假设您正在谈论 VMware ESX,您还应该知道它能够过度使用内存。VM 几乎从不使用其全部指定的内存配给,因此 ESX 可以向 VM 提供超过可用 RAM 量并运行比它实际“官方”拥有 RAM 更多的 VM。
您的瓶颈很可能不是 CPU 或 RAM,而是 IO。VMware 在其市场营销中拥有大量的 IOPS,但当紧要关头时,SCSI 预留冲突和有限的带宽将阻止您在接近 VMware 吹嘘的 IOPS 之前死路一条。
无论如何,我们没有遇到 20 VM 的性能下降。您使用的是什么版本的 ESX?
像这样的大型环境的一个主要问题是灾难预防和数据保护。如果服务器死了,那么 100 个虚拟机也会随之死去。
您需要计划某种虚拟机故障转移,并计划某种“额外虚拟机”管理,以便在发生故障时保护您的虚拟机。当然,这种冗余意味着成本增加——这可能就是为什么很多时候这样的支出直到在实践中看到它的好处(由于它的缺席)才被批准的原因。
还要记住,VM 主机只是几个单点故障之一:
这只是其中的一小部分:庞大的 VM 基础架构需要特别注意防止数据丢失和防止 VM 丢失。
没有说明这在生产中的可行性,但有一个非常有趣的 NetApp 演示,他们在大约 30 分钟内在 32 个 ESX 主机(即每台主机 170 个)上配置 5440 个 XP 桌面,由于对常见 VM 的重复数据删除,使用非常少的磁盘空间图片
http://www.youtube.com/watch?v=ekoiJX8ye38
我的猜测是您的限制来自磁盘子系统。您似乎已经相应地考虑了内存和 CPU 使用率。
从来没有做过——但我保证你会花费比存储更多的钱来获得足够的 IOP 来支持这么多的虚拟机,而不是在服务器硬件上。如果所有 100 个 IOP 同时处于活动状态,您将需要很多 IOP。听起来不是负面的,但你是否也考虑过你在一个篮子里放了很多鸡蛋(听起来你在追求单服务器解决方案?)
我最担心的是单个主机上 100 个虚拟机的 CPU 争用。您必须记住,处理器不是虚拟化的,因此每台机器都必须等待访问 CPU。您可以通过查看 ESXTOP 开始看到争用,VMWare 工程师告诉我,%RDY 字段中超过 5 的任何内容都非常糟糕。
以我的经验,我见过大约 30 - 40 台服务器在一台主机上运行(没有做太多)。
我在 VMWare Server 1.0.6(在 Windows 2003 下)上有 10 台主机,它会定期遇到 IO 问题(如果每晚构建与其他东西重叠,那么它们就会有问题)。从 Windows 升级到 ESXi U3 后,我们发现性能问题消失了(夜间构建不再失败)。
另请注意,虽然 SSD 的 IO 速率比旋转介质高得多,但在某些情况下并不适用,例如某些类型的写入模式(分散在驱动器上的大量小写入会降低性能,除非控制器具有智能写缓冲缓存,在分散写入方面做得很好)。
如果遇到问题,我建议您调查/测试将 SWAP 文件放在不同的驱动器上。
如果您打算这样做,那么我强烈建议您使用新的 Intel 'Nehalem' Xeon 55xx 系列处理器 - 它们旨在运行 VM,它们的额外内存带宽也将有很大帮助。哦,如果您可以使用更多、更小的磁盘而不是少数大磁盘 - 这将有很大帮助。如果您也可以在 3.5U4 上使用 ESX v4。
我有 20 台 XP 虚拟机,每台运行 512M 内存,运行在一台 16G 内存的机器上。小于这个值,它们就会交换到磁盘上,这就会产生瓶颈。但是,这些始终是活动的 XP VM。
VMware 及其 OverCommit 功能应该允许您向每台 XP 机器推送更多内存。类似的机器将共享相同的页面,因此可以减少磁盘写入。当我们的 XP 虚拟机正在处理 10-20meg 的连续磁盘流量时,我想研究一下我们的设置以尝试添加更多机器。
我们无法在 VMWare 服务器上实现 100 个快乐的客人,但后来发现 ESXi 做得更好。因此,如果您使用 ESXi 和一个不错的服务器(一些磁盘镜像来传播 I/O、几个 I7 芯片和 64GB 的 RAM),那么 100 个 XP 虚拟机似乎不是问题。最终用户没有明显的延迟,主机资源也没有被用完(最热的是 CPU,但它通常至少有 70% 空闲)。
PS。当我们在使用 VMWare Server 时,这个问题是由我发布的。
上次我检查时,VMware 建议 ESX 的每个处理核心不要超过 4 个 VM,假设每个 VM 一个 vCPU。
这表明管理费用成为一个因素。
我很想看看你是否真的可以在 8 核盒子上实现 4 倍系数。