我正在考虑升级我们的一台服务器,这是一台运行 VMware Server 2 的 8 核服务器。它运行的虚拟机主要是 Web、文件和电子邮件服务器;具体来说,它运行三个 Web 服务器、两个电子邮件/文件服务器和一些 Jabber/XMPP 服务器。
当我们最初设置这台机器时,我们为两个 Web 服务器配置了两个 vCPU。我们遇到了一些非常严重的性能问题当时我们只运行 3 个虚拟机,总共 5 个 vCPU。我们还运行VMware 服务器1和一个RAID1。我们现在已经升级到 RAID10,我永远不会考虑任何更低的配置!:-)
新服务器上将安装 VMware ESXi,而不是 VMware Server。我们正在寻找另一台具有更快处理器的 8 核机器,或者 16 核或 32 核服务器。我想确保避免我们之前遇到的问题。
由于我之前遇到过多个 vCPU 的问题,所以我的计划是用多个相同的 Web 服务器虚拟机(2 - 4 个)替换主 Web 服务器虚拟机,每个虚拟机都有一个 vCPU,从 NFS 共享提供内容,并将它们置于负载平衡配置中。因此,我基本上会用至少 4 个虚拟机替换一个虚拟机:2 个小型 Web 服务器虚拟机、一个文件服务器虚拟机和一个负载平衡虚拟机。我的计划有两个方面:首先,我可以避免之前看到的任何多个 vCPU 的使用,其次,我可以生成新的 Web 服务器虚拟机来处理增加的负载。
请注意,我明白我不是获得负载平衡的所有好处,因为我仍然有一个单点故障。
这是一个好计划,还是没有必要?VMware ESXi 能否比 VMware Server 1 更好地处理多个 vCPU三年前?在负载平衡配置中,具有 2 - 4 个 vCPU 的单个大型 Web 服务器 VM 或具有单个 vCPU 的 4 个 VM,哪个性能更好?
答案1
VMware ESXi 能否比三年前的 VMware Server 1 更好地处理多个 vCPU?
是的,它们是完全独立的产品线,ESXi 可以很好地处理多个 vCPU。我现在正在运行一个 5 节点的 vmware 农场,每个盒子上都有混合机器,每个机器根据需要配备 1、2 甚至 4 个处理器,而且它确实运行得很好。
在负载平衡配置中,具有 2 - 4 个 vCPU 的单个大型 Web 服务器 VM 或具有单个 vCPU 的 4 个 VM,哪个性能更好?
这不是一个 VMWare 问题,而是一个应用程序/网站测试问题。VMWare(或任何其他现代裸机虚拟机)可以采用任何一种方式 - 将大量 vCPU 连接到一个客户机可能会产生成本,但这可能会被运行多个客户机的资源成本以及您的 Web 应用程序可能从更分布式的方法中实现的性能问题(或改进)所抵消。
关于最后一个问题,这实际上是测试和架构偏好的问题,而不是唯一正确的方法,但我的总体感觉是,如果您可以轻松地将应用程序分发到多个虚拟机上,那么最好构建几个较小的虚拟机,而不是构建一个大的虚拟机。这为您提供了更大的灵活性,并且从长远来看有助于提高性能,因为您可以在必要时移动东西。换句话说,向外扩展而不是向上扩展
对于物理机,我认为我们会考虑向上扩展,将尽可能多的东西放入一个操作系统“实例”中,以最大限度地利用许可证和硬件的成本,但对于虚拟机,这些等式会有所改变——如果您可以以许可证的价格获得多个虚拟操作系统实例,那么这可能会改变您的服务器基础设施的设计方式。
编辑
http://blog.peacon.co.uk/understanding-the-vcpu/是 Iain 在聊天中讨论此问题时提到的一篇文章,其中详细解释了为什么在创建虚拟机时考虑 vCPU 分配很重要。
答案2
我可以用多种方式来解决这个问题,但我将从水平与垂直扩展开始。
水平扩展
优点
- 可以扩大规模
- 可以跨主机扩展(即 VMware 集群)
- 容错
- 维护期间停机时间短/无停机时间
缺点
- 虚拟机操作系统和负载均衡器的开销更大
- 更多维护/管理(例如修补、SSL 证书)
- 跨 Web 服务器的更多网站版本管理
- 负载均衡器后面的网站可能需要额外的测试和开发
- 许可?
垂直扩展
优点
- 扩展更容易(只需添加两个 vCPU 或更多内存)
- 仅需管理、授权等一个 Web 服务器。
缺点
- 维护/升级期间的停机时间
- 扩展过大可能会导致虚拟机出现性能问题。
- 无法真正扩展。
因此,两者都有其优点和缺点,我非常喜欢水平扩展,但这是我向您推荐的:
- 垂直缩放到某个点(我将在一分钟内到达该某个点)。
- 做好功课,了解水平发展需要花费多少时间和金钱。
- 给自己充足的时间来测试水平扩展解决方案。
- 当您到达水平扩展的时间点时,您可以重新缩减垂直扩展的服务器,进行一些克隆,将它们放在已经配置的负载均衡器后面,然后观察它的运行情况。
好的,那么那个特定的垂直缩放点是什么?
这取决于您的硬件。
VMware 做了很多工作vCPU 调度自 ESX 2.x 以来,垂直增长空间更大。增长多少实际上取决于您获得的 CPU。
如今,确定虚拟机的性能需要了解NUMA(非统一内存访问。基本上,您不希望虚拟机大于 CPU NUMA 节点。以下是一些可帮助您了解该领域的链接:
http://frankdenneman.nl/2010/02/sizing-vms-and-numa-nodes/
http://frankdenneman.nl/2010/09/esx-4-1-numa-scheduling/
http://frankdenneman.nl/2011/01/amd-magny-cours-and-esx/
我想最后说一句,CPU 对我来说从来都不是太大的问题,除非你的主机 CPU 用量过大。相反,内存通常是罪魁祸首。内存膨胀/交换操作系统非常明显的性能问题。
祝你好运!