我们从事 Web 开发的产品有多个版本,这些版本不喜欢在单个 Windows/IIS 安装上共存。我们决定启动 3 个虚拟服务器来处理我们需要使用的每个版本。这部分是必然的,因为虚拟化对于我们面临的问题绝对有意义。
然而,我目前遇到的困难是设置的细节问题,因为我之前没有使用 Windows 进行过虚拟化。因此,首先是基本要求。我们将运行 3 个虚拟服务器 (Windows 2008 R2),每个服务器都安装有 IIS 和我们使用的产品的相关版本。我们还需要一个 MSSQL 服务器来支持所有这些服务器。
该机器是 i7-920(四核,8 个逻辑核),带 12GB RAM。有 6 个 7200RPM 基本硬盘,配置为 3 个 RAID1 卷。
就 MSSQL DB 而言,DB 大小很小(通常小于 300MB),因此我并不特别担心磁盘性能;所有内容都应该适合工作内存,因此只是日志写入。如果磁盘性能成为问题(或者即使不是),一旦价格下降,我预计最终会用成对的 SSD(可能是 X25-M)替换一个或多个 RAID1 卷。
所以,最后,问题是。我目前正在考虑两种设置,但我对 Windows 虚拟化不够熟悉,无法真正掌握其优缺点。我希望得到一些关于这些选项的反馈,或者了解其他更合适的设置?
选项 1) 在一个卷上将虚拟机管理程序作为 Windows 2008 R2 的“服务器核心”安装运行,并为其提供 2GB 的 RAM,据我所知,这基本上只是一个命令行界面。在 MSSQL 自己的卷上运行一个具有 4GB RAM 的虚拟实例,然后为实际的 IIS 设置运行另外 3 个具有 2GB RAM 的虚拟实例,共享最后一个卷。
总体而言,这对我很有吸引力,因为它使虚拟机管理程序保持简单,并将所有其他角色放在虚拟框中。由于我有 Linux 背景,因此通过 CLI 管理虚拟机管理程序并不让我担心。但是,我不知道 Windows 的“服务器核心”CLI 安装是否真的维护开销更少,或者是否最终需要像修补程序一样频繁地重新启动?此外,它是否真的需要 2GB 才能运行它,或者可以用更少的内存运行?将 hyper-v 虚拟机管理程序作为基本“服务器核心”安装运行还有其他缺点吗?
选项 2) 将虚拟机管理程序作为 Windows 2008 R2 的常规安装运行,在一个卷上配备 6GB RAM,并在同一个物理实例上运行 MSSQL,其数据文件位于第二个卷上。然后像以前一样启动 3 个虚拟服务器,每个服务器配备 2GB RAM,在最后一个卷上共享。在某些方面,这更简单,而且从资源角度来看,它为 MSSQL 提供了更多潜在 RAM 和更多处理器(因为在选项 1 中,至少一个物理处理器将专用于虚拟机管理程序,留下 4 个虚拟机在 3 个 CPU 之间竞争)。但是,我担心在虚拟机管理程序上安装 MSSQL 会导致我必须更频繁地重新启动物理实例以对 MSSQL 进行修补等,从而导致我必须更频繁地关闭其他虚拟机。
答案1
建议在服务器核心上使用 Hyper-V 配置。Server 2008(和 2008 R2)的理念是限制安装的功能和角色,从而限制总体修补需求。有些修补程序适用于几乎所有内容,但仅使用 Hyper-V 的核心安装应该可以让您在修补要求方面获得最佳的正常运行时间。
这确实有点取决于负载有多重,但如果这主要用于开发,那么我就不用担心性能和在它自己的虚拟机上运行 SQL 服务器。
希望您使用的服务器质量较高,其 RAM 可以扩展到 12 GB 以上(如有必要) - 如果您使用的服务器质量较高(即名牌),那么您也可以考虑 VMWare ESXi(我个人认为在基本环境中,这两个系统的性能差异并不大 - 但与 Hyper-V/Server 2008 相比,ESXi 没有很好的硬件支持。