3

我需要在数量相对较少的物理主机上运行数量相对较多的虚拟机。每台虚拟机都没有做太多事情——每台虚拟机基本上只需要运行一个基本的网络服务——想想 SMTP 之类的。此外,每个人的负载都将非常轻。

不幸的是,这些数字大约是 5 台物理主机上的 100 台虚拟机。每个主机都足够好 - 核心 2 有 2 gigs 的 ram 和 1tb 磁盘。但是,我知道仅获取 ubuntu 的 vmware 映像并扔到那台机器上不会让我接近 100 个实例,而是接近 20 个。

那么,这种图像与主机的比例是否有希望?此外,哪种虚拟机实现最适合此目的 - 即具有有效的整体资源使用率?我们这里主要使用 vmware,但如果切换到 Xen 等可以获得显着的性能优势,我相信我们会考虑它。

提前感谢您的见解:)

注意:我们最终使用了 OpenVZ,它运行良好。ubuntu 模板的默认参数允许我们在每台机器上运行大约 40 个实例。

4

17 回答 17

7

有三个主要方面可以使它们适合:

  1. 较低的开销。如果适用,OpenVZ、Vserver、chroot 将是理想的选择。如果您确实需要每个实例都是具有自己内核的真实 VM,请尝试使用 KVM/Xen 而不是 VMWare。可能不那么成熟,但你会有更多的灵活性。

  2. 较小的客人。试试 Ubuntu JeOS,或者使用 busybox 自己动手

  3. 客人之间尽可能多地分享。尝试与所有操作系统共享一个 R/O 映像,并在 /var、/home、/etc 等上为每个来宾安装一个小的 R/W 映像

于 2008-09-30T18:51:32.113 回答
5

有几个问题......

  1. 对于 Vmware 服务器,您确实需要服务器硬件,除非它仅用于测试。
  2. 使用裸级别的虚拟化解决方案,例如 Xen Server、VMware ESX 或 ESXi(免费)或 Hyper-V,它们不是裸级别但性能更接近。
  3. 对于 20-1,您将需要更多 RAM。数学没有加起来。最小功能机器需要 512,除非它是一个完美剥离的 linux,应该至少有 256。20x256 = 5gb + 5-10% 开销。这些规格不会真的发生。
  4. 对于 20-1,您将需要更多处理器。每台机器都有一个 vCPU。在核心 2 上共享意味着每个处理器 10-1。不好。我们在双四核 Dell 1950、16gb RAM 上运行了近 20 个。效果很好。
  5. 无论你选择什么,你都会超额订阅内存。不完全确定哪些让你。Vmware 会,但会显示警告。
  6. 我听说过但没有证据表明 XenServer 将提供性能优势,但没有人声称超过 10-20%。

祝你好运

于 2008-09-30T18:43:08.140 回答
3

你真的需要 100 个全功能操作系统吗?

为什么不采取 Web 服务器已经使用的方法呢?我的意思是虚拟网络服务器/主机。

例如,将 Apache HTTPD 安装在使用单个配置文件托管许多虚拟服务器的单个物理服务器上。另外,您需要配置 DNS 和/或许多具有不同 IP 地址的虚拟网络接口(eth0:0、eth0:1、...、eth0:n)。

如果您真的只需要几个暴露给世界的服务并且负载不高,这应该可以工作。

于 2008-10-01T20:12:34.813 回答
3

另一种可能性是使用可以在非常少的内存中运行的轻量级 Linux 发行版。DamnSmallLinux 之类的东西或 DDWRT 的变体。它们可以在低至 16MB 的内存中运行,允许您在单台机器上运行 20 或更多。

于 2008-10-02T06:41:57.297 回答
2

您最好运行 VMware ESX/ESXi,因为它们都具有奇特的内存池功能。它基本上占用相同的内存页面并在多个客户机中使用它们,因此如果您运行大量相同的客户机,您将能够在主机上获得比其他 VM 更多的内存。

在此博客条目中查看有关“透明页面共享”的部分,并在此处也对此发表评论。

显然,您仍在使用每台主机 20 个来宾并且每个主机上只有 2Gb RAM,但如果您删除所有无关的服务和应用程序,并在每个主机上安装专用应用程序之前构建 1 个来宾映像并克隆它,您可能逃脱有了它,尤其是当 VMware 链接显示运行 40 个客人的 4Gb 主机时!

于 2008-09-30T19:26:14.620 回答
2

我有一台运行完整桌面的四核机器和 9 台虚拟机。因为这是一台测试机器,所以我使用了各种各样的客人。最好的 ram 使用似乎是 debian-kfreebsd 和 tiny core linux。tiny core linux 使用 10M 的 ram 无所事事。添加几个服务,它可能是 32M,所以我可以在 1GB 的内存中运行 32 个虚拟机!你有 2GB,所以假设你可以运行 48 台机器,包括管理程序和开销(我使用的是 kvm。)所以有了 5 台机器,我们最多可以运行 240 台机器:D

我想我马上就试试看:D

顺便提一句。你说虚拟机的负载应该很轻,所以我没有指望cpuload或diskload。并且这些数字恰好具有 0 冗余。

于 2010-06-25T21:39:03.613 回答
1

如果您可以足够瘦身来宾,您可能可以做到,没有 X,启动最少的服务等。看看 slackware 或 ubuntu 服务器。Xen 似乎在网络托管公司中很受欢迎,因此可能值得一看。

CPU 使用率将取决于应用程序,但您可能需要购买更多内存!

于 2008-09-30T18:15:55.630 回答
1

每个网络服务实例需要划分到自己的虚拟机中是否有原因?如果您不需要将用户彼此隔离,但确实需要隔离进程和流量,那么您最好按原样使用五台服务器并为每个实例启动单独的进程。每个实例都将绑定到一个单独的虚拟接口。

例如,配置一个虚拟接口并为其分配一个 IP 地址。为您要创建的实例创建一个 httpd.conf 文件和/或 sendmail.cf 文件。在配置文件中,指定守护进程应该绑定到虚拟接口(并且只有那个)。启动守护进程。

对每个实例重复。您将运行大量进程(数百个,如果不是数千个),它们的总和将使用比数十个 VM 更少的内存。另外,您的操作系统将能够将未使用的交换到磁盘。

于 2008-10-01T20:50:41.257 回答
0

如果你算一算,每台机器平均有 100 MB 的内存。这并不多。虚拟机的开销非常大,必须在每个实例中运行一个完整的操作系统。

您要么使用一些非常小的操作系统(http://www.damnsmalllinux.org/?)并花时间将其进一步精简,要么您获得更大的机器。

机器那么便宜,我倾向于升级到具有大量内存的 64 位操作系统。

于 2008-09-30T18:18:41.257 回答
0

VMWare 有一个很酷的选项,您可以在其中“汇集”一组物理机,它会自动将虚拟机移动到利用率最低的硬件,而不会中断 VM 的运行。

而是广告链接。

于 2008-09-30T18:21:38.457 回答
0

您是否仅限于vmware?您是否考虑过操作系统级虚拟化?假设每个 VM 可以运行相同的内核,您将获得更多的 VM 和更少的开销。

于 2008-09-30T18:24:39.543 回答
0

几个想法...

1-正如其他人指出的那样,内存算术不起作用,您将需要更多 RAM。

2- 根据服务的不同,您可能能够找到预配置的虚拟机。例如,Astaro为其免费的防火墙软件设置了 VM。你也可以找到一个非常小的 Linux 发行版,你可以适应它。

3-也许我遗漏了一些东西,但听起来 Ubuntu 已经非常接近了...... 5 台机器上的每台机器 20 个实例可以获得您需要的 100 个实例。未来的增长空间不大,但是...

保重,祝你好运。

于 2008-09-30T18:33:12.983 回答
0

我不知道这是否可能,但是在 chroot 环境中运行每个服务怎么样?您可以通过硬链接必要的库文件来创建每个 chroot 文件系统来节省磁盘空间。

于 2008-10-02T06:48:45.423 回答
0

在自己的 VM 中运行每个服务的另一个问题是它们都需要自己的 IP 地址。100 个 IP 在内部网络上可能不是问题(例如 172/8 或 10/8 设置),但如果它们是您的 A 类的一部分(假设您有那么多公共 IP),那么您将用完快速地。

而且,正如其他人所问的那样,为什么每个服务都需要成为自己的虚拟机?它们中的许多应该能够轻松地在同一主机上运行。

于 2008-10-03T19:16:04.827 回答
0

如果它可以在应用程序级别完成 - 我会不使用任何虚拟化。您可以在不同的端口号上运行应用程序的多个实例,甚至可以轻松地在具有 IP 别名的不同 IP 上运行。这样您就可以轻松地在每个盒子上运行 20 多个副本。哎呀,您也许可以用一半的硬件做所有事情。

虚拟化并不是万能的解决方案。:)

我的2c。

于 2009-02-26T10:07:51.607 回答
0

根据此博客,拥有这么多虚拟机,您可能会遇到性能干扰问题。

于 2019-12-21T11:39:22.197 回答
-2

云铸造。与可能已提交答案的其他任何人相比,我对虚拟机一无所知,但据我了解,如果您有一个主机、该主机上的一个虚拟机,然后该虚拟机上的 Cloud Foundry,您可以轻松创建基础辅助虚拟机并且轻松在该辅助 VM 集中复制和配置所有服务,同时保持较低的硬件使用率。我不知道它是否肯定会起作用,但据我了解,这将是一种更简单的方法,它是一种两壳方法,可以降低损坏主机的可能风险。

于 2016-02-12T16:15:20.420 回答