我有一台性能强大的 Linux 服务器(32 GB RAM),硬盘也不错。在我的其中一台主机上。我运行了很多使用 varnish、nginx、unicorn 应用服务器、thin 应用服务器、redis、mongodb 和 postgresql 的 Web 应用程序。现在,我预计 Web 应用程序的流量不会很大。所以,我的问题是,有了一台足够好的服务器,我是否应该在裸机操作系统上运行所有服务?或者我应该设置 VMS 并在 VMS 上运行一些服务?从性能角度来看,设置虚拟机似乎不是一个好主意。
编辑:如果有人能提供一些这方面的数据就太好了。我从来没有想过把数据库放在虚拟机上,因为它们对 IO 的要求更高。我没有任何数据来支持这一点,但我想知道是否有人在虚拟机上部署了数据库。
答案1
我的规则很简单 —— 我会将一切虚拟化,除非虚拟机管理程序妨碍了我。
即使我只在一个盒子上放置一个虚拟机,至少我有一个抽象的硬件,这在你需要高正常运行时间(实时移动到另一台机器)、发生灾难(削减大型服务器将其他服务器移动到同一台机器)和生命周期(升级不处理低级驱动程序,我可以将机器移动到新硬件)时非常有用。
也有例外——即对时间敏感的系统。亚毫秒级的数据收集和决策在虚拟机上实际上并不实用,因此某些活动无法进行。请注意,这些不是 VOIP 等——VOIP 的延迟大多可以接受。但当你开始处理金融市场数据和交易时,情况就不一样了。
更新:
还有一种很明显的情况是无法虚拟化的 - 那就是你的硬件太强大了。目前使用 hyper-V 时,例如需要 4 个以上内核的机器无法虚拟化,因为 VM 仅支持 4 个内核。简单的决定。下一代 hyper-V 将升级到 32 个虚拟处理器,但是当 AMD 推出 20 核 CPU 时,你有两个……又超出了限制。这主要与更强大的服务器有关,同意。
答案2
主机上的服务
- 没有虚拟化开销(更多的原始性能和直接硬件访问);
- 启动期间尽早启动(例如:VM 的 DHCP 或防火墙);
- 手动迁移到另一台主机;
VM 上的服务
- 虚拟化开销(但对于“轻量级”服务来说还可以);
- 当所有虚拟机启动时启动;
- 轻松迁移到另一台主机;