我是一名 DBA,管理一个主要托管 SQL Server 和一些应用程序服务器的 vmware ESX 3.5 集群,我对如何设置资源组有疑问,但我与 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 测试、CRM Live、CRM 测试等),但没有对这些组设置任何明确的资源限制。
然后我将“应用程序”组放入适当的“顶级”资源组。
例如,每个子组有 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。
- 我想确保最高优先级的服务维持他们的服务
- 我不想对每一位客人进行微观管理!
你有什么想法和经验??
如果我阅读正确,那么您对环境的正常操作是正确的,但我不确定你们中的任何一个是否正确地了解当出现争用时它是如何工作的。
如果没有争用(当资源利用率超过 80% BTW 时开始争用),则共享无效。因此,就您环境中的正常操作而言,资源组将是装饰性的。
当存在争用时,CPU 资源将如您的系统管理员所指示的那样受到限制,但如果您丢失主机,则不一定会发生这种情况。
您没有说您是否修改了子资源池上的共享。我将假设这些都设置为正常。
假设虽然共享的工作方式存在争用,但每个资源池获得的资源比例等于其在该级别的共享总数的比例。对于您的第一个级别,您拥有约 58k 股,因此 High Pool 获得约 56%,正常获得 28%,Dev 获得 14%,Low 获得 1.7%。在每个池中,子池平等地共享该池的资源,除非您在该级别明确设置了额外的份额,如果您应用相同的规则但池的总数不受影响。
因此,在您的情况下,当出现争用时,Live Sharepoint 系统将获得 28% 的争用资源的 50%,即 14%。
您可以通过为每个系统所需的 CPU 和 RAM 的绝对最小值分配预留来帮助解决问题。保留值保证给您分配它们的系统\资源池,而不是按份额分配。它们的主要缺点是,如果值太高,集群甚至可能无法尝试重新启动 VM,因为无法保证资源。
还要记住,即使您的系统在 Windows 系统的正常操作下仅消耗约 44GB,但在启动 VM 时会(短暂)分配 100% 的内存。这可能会在故障转移期间触发内存争用场景,即使系统运行后实际上有足够的 RAM。需要注意的不仅仅是过度担心,但它可能会在 HA 重新启动期间引起问题。
编辑添加
如果您没有更改单个 VM 或子资源组的默认共享设置,那么当您将所有 VM 向上移动一个结构中的一个级别时,分配给单个 VM 的资源比例不会改变单个 Child RG 并将它们直接放在父级中。但是,如果每个子 RG 有多个子 RG 和不同数量的 VM,则这是不正确的。
在您的示例中,假设我们在其子 RG 中有 4 个 Sharepoint VM,在其子组中有 2 个 CRM VM。Sharepoint VM 每个获得约 3.5%(28% / 4 的 50%),CRM VM 每个获得 7%(28% /2 的 50%)。如果您现在将它们全部移到父 RG 并删除空的子 RG,您现在有 6 个 VM 共享 28% 的可用资源给 Normal RG,每个将获得 ~4.7% (28% / 6)。
当然,如果您更改子资源组或单个 VM 上的份额,这一切都会改变。
资源定义只会在过度使用的集群中生效。