裸机上的服务器设置:虚拟机上的服务与裸机(主机)操作系统上的服务

裸机上的服务器设置:虚拟机上的服务与裸机(主机)操作系统上的服务

我有一台性能强大的 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 上的服务

  • 虚拟化开销(但对于“轻量级”服务来说还可以);
  • 当所有虚拟机启动时启动;
  • 轻松迁移到另一台主机;

相关内容