是否可以使用单个 VM 映像来运行多个客户机(Windows(Server?))?

是否可以使用单个 VM 映像来运行多个客户机(Windows(Server?))?

是否可以使用单个 VM 映像运行多个客户机,其中每个客户机都是一个Windows 服务器操作系统(具体来说是 Windows 2003R2,我们最终会迁移到 2008R2 或者当时最新的版本),安装了完全相同的应用程序和相同的 Windows 设置(因此希望使用单个图像),但仅在几个配置文件、计算机名称、IP 地址等方面有所不同。

編輯註釋:视窗服务器对我们来说并不是必须的。我们可以将客户机/节点作为 XP 或 Win7 运行,它也可以工作。

所以本质上我希望客人共享一个通用的“操作系统 + 应用服务”,其中操作系统和应用程序的所有补丁只需管理一次。

但是,每个客户机都应作为网络上的单个独立服务器出现(域中的计算机名称等),并且每个客户机的配置可能存在细微差异。(例如,一些客户机将运行服务 X 和 Y,而其他客户机将运行服务 X 和 Z。)

任何虚拟化解决方案都可以实现这一点吗?需要什么硬件?哪些供应商支持这一点?对于服务器来说,这到底是不是一个好主意?


背景:这是用于我们的构建服务器场。每个构建节点应该完全相同,除了其“身份”(计算机名称等)以便可从主构建节点访问。(主构建节点将完全相同,但构建自动化软件方面略有不同。)

答案1

我不知道有任何解决方案可以让你替换主映像的底层位,并让它们神奇地传播到多个从属系统。但是,如果你同意每次修补主映像时重建从属系统,那么你可以以非常低的时间和精力成本实现几乎相同的结果。

在我们的开发环境中,我们使用 vSphere,并使用 VMware 链接克隆功能克隆我们的主开发 Web 和开发数据库服务器。您无法使用常规 GUI 管理工具访问它,因为链接克隆主要供 VMware View 使用(它允许轻松管理此类解决方案,但与 Windows Server OS 不兼容);但是,API 可用且受支持,因此可以使用脚本处理链接克隆。两个可用选项是基于 Perl 的http://download.virtuallyghetto.com/vGhettoLinkedClone.html和 PowerCLI(VMware PowerShell 扩展)http://www.vmdev.info/?p=202

一旦你学会了如何创建链接克隆,你就需要想办法自定义你创建的每个克隆。不幸的是,我在这里帮不了你,因为我们的开发都是 Linux,而自定义 Linux 克隆很简单(对于初学者来说,没有那些系统准备的混乱),但我知道自动 Windows 自定义仍然是可行的——基本上,你必须完成与使用 vCenter Client 创建 Windows VM 的常规克隆时 vCenter 所做的相同的事情。

这不是一个简单的项目,我们花了几个星期才让一切顺利启动和运行,但现在我们可以在几分钟内重新创建完整的开发环境,同时只需管理(修补、代码和数据库模式更新、新应用程序部署)两个主虚拟机。

我不会在这里谈论硬件,因为这完全取决于您的特定需求:服务器的大小和数量、开发人员对性能的期望等。请随意浏览 Serverfault 以获取针对 vSphere 环境的设计建议,您会找到很多好的建议。

作为 PS,因为我怀疑这对于任何除了最大的开发公司之外的人来说都是一条具有成本效益的途径,但省略它是不合适的:如果您有大量资金,您可以使用 vCloud Director 在任何操作系统上实现类似 View 的结果:http://www.vmware.com/products/vcloud-director/overview.html

答案2

据我所知没有,原因如下:

最接近您描述的虚拟化方法是 Solaris Zones 和 OpenVZ 等所使用的方法。当然,这些都是 *nix 系统,但它仍然是一个有用的例子。这种类型的虚拟机共享一个核心所有虚拟机和托管操作系统之间都存在共享,因此当主机操作系统内核打上补丁时,所有虚拟机都会应用相同的补丁(当然,在重新启动所有事物之后)。它们无法共享的是任何文件系统更改,例如 libpam 或任何系统库的补丁。

Windows 则不同,可以说它更加依赖内核/文件交互。它甚至比 *nix 系统更难完成你正在做的事情。最大的障碍是机器身份本质上保存在一个单一文件支持的内存存储中,而不是 *nix 系统的文件中。这比“/etc 中的几个文件”要难得多。

答案3

您可以从主映像开始,根据需要复制它,然后根据需要自定义名称和 IP 等内容。但是,一旦您修改,您将需要管理每台机器的补丁。如果您使用的是 VMware,您可以使用 中心管理修补。

相关内容