我是一名 DBA,负责管理一个 vmware ESX 3.5 集群,该集群主要托管 SQL Server 和一些应用程序服务器,我有一个关于如何设置资源组的问题,但我与 ESX 系统管理员在如何管理资源方面存在分歧。
该集群(3 个节点,每个节点 32GB)目前托管 33 个客户机,配置为消耗 77GB RAM,尽管 ESX 报告只有 44GB 处于活动状态。该集群托管实时服务器、测试服务器、开发服务器和一些其他杂项客户机。
我想要做的是简化服务器资源的管理,并能够管理和报告相关服务器的性能。
例如,Live SQL 服务器、SharePoint 服务器、CRM 服务器等消耗的资源(RAM、磁盘、CPU)。
我接下来要做的是创建 4 个“顶级”资源组。
1-High - For the most mission critical services (ie. the live SQL server)
32768 memory shares
2-Normal - For the majority of the remaining live systems (CRM, Sharepoint etc)
16384 memory shares
3-Dev - Test and development systems
8192 memory shares
4-Low - Non supported servers (no sla, temporary build servers etc)
1024 memory shares
我已将服务器分组到它们自己的“应用程序”资源组(SQL Live、SQL Test、CRM Live、CRM Test 等)中,但没有对这些组设置任何明确的资源限制。
然后我将“应用程序”组放入适当的“顶级”资源组。
例如,每个子组有 4 个访客,每个访客有 1 个 CPU 和 1GB RAM
1-High 32768 shares
SQL Live 4 guests
2-Normal 16384 shares
CRM Live 4 guests
Sharepoint Live 4 guests
3-Dev 16384 shares
CRM Test 4 guests
SQL Test 4 guests
Sharepoint test 4 guests
4-Low
Remaining cruft 4 guests
系统管理员告诉我“Sharepoint 只能获得其所需 50% 资源中的 28%!”
在我回复他之前,能否请您给我一些建议并检查一下我的假设:
- 在正常运行中,集群不会过度使用 RAM(或 CPU),因此不会对任何客户机(无论是 CPU 还是 RAM)施加资源限制。
- 如果其中一台主机发生故障,则只有 64GB 的 RAM 可用。当客户机重新启动时(我们已启用 HA 和 DRS),其余主机将开始重新启动客户机,这将导致 RAM 过度使用。
- 我想确保最高优先级的服务保持其服务
- 我不想对每个客人进行细致的管理!
您的想法和经历是什么?
答案1
如果我理解的正确的话,那么您对于环境的正常运行的了解是正确的,但我不确定你们对于发生争用时它如何工作的说法是否正确。
当没有争用时(当资源利用率超过 80% 时争用开始),共享将不起作用。因此,就您环境中的正常操作而言,资源组将是表面的。
当存在争用时,CPU 资源将受到限制,正如系统管理员所指出的那样,但如果您丢失主机,这种情况就不一定会发生。
您没有说明是否修改了子资源池的份额。我假设这些都设置为正常。
假设存在争用,但份额的工作方式是每个资源池获得的资源比例等于其在该级别份额总量中所占的比例。对于您的第一级,您有约 58k 份额,因此高池获得约 56%,普通池获得 28%,开发池获得 14%,低池获得 1.7%。在每个池中,除非您明确设置了该级别的额外份额,否则子池将平等共享该池的资源,如果您有相同的规则适用,但池的总数不受影响。
因此,在您的情况下,当出现争用时,Live Sharepoint 系统将获得 28% 争用资源的 50%,即 14%。
您可以通过为每个系统所需的 CPU 和 RAM 的绝对最小值分配预留来在一定程度上帮助解决问题。预留值保证分配给您分配它们的系统\资源池,而不是按份额分配。它们的主要缺点是,如果值太高,集群可能无法尝试重新启动虚拟机,因为资源无法得到保证。
还要记住,即使您的系统在 Windows 系统正常运行下仅消耗约 44GB,但在启动 VM 时,100% 的内存都会(短暂地)被分配。这可能会在故障转移期间引发内存争用情况,即使系统运行时实际上有足够的 RAM。这是需要密切关注而不是过度担心的事情,但它可能会在 HA 重启期间造成问题。
编辑添加
如果您没有对单个虚拟机或子资源组的默认共享设置进行任何更改,那么当您将所有虚拟机在只有一个子资源组的结构中上移一层并将它们直接放置在父级中时,分配给单个虚拟机的资源比例将不会改变。但是,如果有多个子资源组,并且每个子资源组中的虚拟机数量不同,那么情况就不一样了。
在您的示例中,假设我们在子 RG 中拥有 4 个 Sharepoint VM,在子组中拥有 2 个 CRM VM。Sharepoint VM 各获得 ~3.5%(28% 的 50% / 4),而 CRM VM 各获得 7%(28% 的 50% /2)。如果您现在将它们全部移至父 RG 并删除空的子 RG,则现在有 6 个 VM 共享普通 RG 可用的 28% 资源,每个 VM 将获得 ~4.7%(28% / 6)。
当然,如果您更改子资源组或单个虚拟机上的共享,这一切都会改变。
答案2
资源定义仅在超额提交的集群中才会生效。