免责声明:我是一名开发人员,对设置服务器了解甚少,但在小商店中,责任往往会越过越远。
我们刚刚获得了一台运行 SQL Server 的新服务器,我们正在尝试确定如何最好地为不同的服务器分配职责。我们还有许多轻量级 Windows 服务,它们目前与 SQL Server 在同一台服务器上运行。相比之下,SQL Server 的工作量比所有 Windows 服务的总和要大得多,因此我们正尝试最大限度地增加分配给它的资源量。
我们正在考虑在新服务器上运行两个虚拟环境,一个用于 SQL Server,一个用于 Windows 服务。与仅在没有虚拟化的同一物理服务器上运行所有内容相比,这是否给我们带来了任何好处?我们的想法是,如果我们可以为 Windows 服务创建一个资源有限的虚拟环境,那么即使 Windows 服务的资源需求激增,大多数资源也可以专用于 SQL Server 环境。
目前,没有在单独的物理服务器上运行它们的选项。
答案1
从性能角度来看,这实际上会增加服务器的负载。您仍在运行某种虚拟机管理程序,这会占用 CPU/RAM 等。此外,Windows 完全有能力平衡应用程序之间的工作负载。
但是,我同意 Jes 的观点,它将为您的 SQL 环境和其余 Windows 服务提供隔离,但
- 您的其他服务多久会出现一次峰值?
- 处于“开发”阶段的服务中是否有任何服务在定期运行时会出现错误?或者您的 SQL 是否为开发应用程序提供后端?
如果您的服务经常激增或者您正在任一“盒子”上进行开发,那么我会进行虚拟化并承受性能损失以换取更高的稳定性。
答案2
我认为,在这种情况下,虚拟化可能会对你有所帮助。请记住,我熟悉 VMware(我知道还有其他选择)。使用 ESXi,你可以创建多个服务器并分配你的应用程序,这样,如果一个服务器挂起,所有应用程序崩溃的风险就会降低。此外,你可以指定资源限制(这是你想要的),限制基本服务器可以利用的资源量,同时允许 SQL 服务器尽可能多地获取资源。
杰斯
答案3
我认为只有当您的服务器大部分时间处于闲置状态并且有时负载较小到中等时才需要虚拟化。除非是用户较少的小型数据库,否则不要虚拟化 SQL Server。如果您的虚拟化产品必须运行完整的主机操作系统,我不会虚拟化关键服务器。例如,完整主机上的域、DNS。
当您运行测试环境时,虚拟化可能会很好 - 您提到您是一名开发人员。最终,您的决定。我相信各种产品(例如 vmware)确实允许您在虚拟化系统和非虚拟化系统之间进行转换,因此您可以在以后需要时改变主意。如果您已经启用它并且有用户正在运行它们,那么这很不方便。
答案4
您可能要考虑的一件事是安装 Hyper-V 并仅虚拟化“额外”的 Windows 服务,尤其是在运行 Windows Server 2008 的情况下。您可以在操作系统本身上安装 SQL Server,直接在硬件上获得全部性能,然后在 Hyper-V 内的隔离 VM 中运行“轻量级”服务。缺点是,如果您运行的是 Windows Server Standard,则需要多个许可证,否则您必须购买 Windows Server Enterprise。