经过一些评论、回答和思考,我希望现在可以添加一个
总结: 如果我想要完整的性能(a)和(简单)硬件故障冗余,那么选择每个硬件盒有多个客户的虚拟化解决方案是否有意义?
(a)-> 并行 C++ 构建,预期 CPU 和磁盘利用率(非常)高
首先我要说的是,我对服务器虚拟化完全是个菜鸟。也就是说,我使用在开发过程中经常使用虚拟机,但对我来说,它们只是简单的桌面机器。
现在我的问题:我们有两台(物理)构建服务器,一台主服务器,一台从服务器正在运行詹金斯执行日常任务并构建(Visual C++ 构建)我们的软件发布包。因此,这些机器批判的对我们公司来说,因为我们发布了很多版本,如果没有受控环境来创建它们,我们就无法发布修复程序。(目前这些机器没有适当的备份,因为它们不保存任何数据 - 这只是一个主要的如果它们坏了,重新设置它们会很麻烦。(但是设置我知道在硬件故障的情况下可以工作的备份会更麻烦,所以我们到目前为止都跳过了这一点。))
所以 (和为了扩展目的,我们希望使用这些机器进行虚拟化。
外包至云端不是一个选择,根本没有,所以我们必须使用本地硬件和 VM 主机。
每个 Build-Server(主服务器或从服务器)都是完全配置的(安装、许可、在主服务器的情况下共享……)Windows Server 机箱。我现在理想情况下只想将(两个)现有物理节点转换为 VM 映像并运行它们。稍后添加更多 VM 从属实例作为现有实例的克隆。
我的问题如下:
- 我应该为每个硬件盒选择一台虚拟机还是应该选择单个硬件运行多个虚拟机?
- 这意味着硬件方面存在单点故障,这似乎不是一个好主意...还是??
- 由于我们使用 Visual Studio 进行 C++ 编译,我假设在构建期间硬件(处理器核心 + 磁盘)将得到充分利用,因此每个硬件使用多个构建节点似乎没有多大意义??
- 对于硬件选项,我们使用哪种 VM 软件(VMWare、MS、Virtualbox 等)有区别吗?(我们在构建时专门使用 Windows。)
如上所述,我开始认为,从性能角度来看,每个硬件盒安装多个客户机是没有意义的。还有其他考虑因素吗?
关于预算:我们有一个正常的小公司(20 名开发人员)的预算。 ;-) 也就是说,如果它要花费几千美元,那就要花费。如果它是免费的 - 更好。我强烈倾向于每年没有几千美元维护成本的解决方案。
答案1
我只能回答最后一部分,
如果您打算使用 [仅] Windows 作为虚拟化客户机,那么 HyperV 将是您可用的最佳 VM 选项,因为它具有适用于 Windows 操作系统的高性能虚拟化。
同样适用于 Linux 操作系统虚拟化的 XEN。
答案2
我不熟悉 Hyper-V,但看起来它有许可费用。下一个版本的普罗克斯莫克斯将具有高可用性,因此如果您将现有的两个主机转换为 Proxmox 主机,投资一些 NAS/SAN(例如 Synology),您就可以以适中的硬件成本获得相当不错的设置(Proxmox 是开源的)。(但请注意,此设置也不包括备份。)
请注意,您需要使用virtio-win为您的 Windows 客户机提供驱动程序。
希望这可以帮助。