浅谈Virtual Machine Manager(SCVMM 2012) cluster 过载状态检测算法

在我们使用scvmm2012的时候,经常会看到群集状态变成了这样

点开看属性后,我们发现是这样

发现了吗?Over-committed,如果翻译过来就是资源过载,或者说资源过量使用了,那么这个状态是怎么出现的呢?

出现这个状态以后会出现什么问题?怎么解决?

今天我们就谈一谈在SCVMM中over-committed的算法,知道SCVMM是如何确认一个群集是否过载后,就知道如何避免它,带来种种问题也就能解决了

part 1. 算法概述

SCVMM 2012 群集的过载检查主要是用来确认整个群集是否可以在最大允许宕机节点数(这个值我们暂时记为R)宕掉后,将运行在这些节点上的VM在其它可用节点上启动,值就是上图中配置的:Cluster reserve(nodes)。群集先将群集状态预设为overcommitted ,然后通过检查算法运算后,再确认群集状态是什么情况。

那么过载会有什么危险呢?

1.一个完美的系统,有!这种符号看上去就很不爽,所以我要解决它……好吧,我是强迫症

1.系统在overcommited后,此时如果发生了节点失败,业务就有可能不能正常failover,换句话说,有可能重要的VM根本没有资源启动了,想想下场吧,谁管理这个系统谁就会死的很惨

2.在进行VMM的动态优化的时候,因为overcommited状态,动态优化就不能正常的工作……这个以后我再发一篇文章专门写VMM动态优化

3.……暂时还没想到

part 2.算法介绍

算法一共有四种,只要其中任意一种算法通过了检查,就将群集状态置为“OK”,否则保持“overcommitted ”状态。但要说明的是:overcommited这个状态,只是针对内存的,CPU使用我们是不管的

现在我先把四种算法列出来,如下表:

可以看出来评估方法有两个,分别是proof和slot,检测策略也有两个,分别是simple和full,四种算法就是策略的评估方法的组合2*2=4种

下面分别说一下评估方法和策略,但是看说明可能不太明白我写的是什么是意思,你可以大概过一遍,然后看下面的算法详解,然后回来再看,应该就明白了

1.Proof Method

这个算法评估整个群集是否满足如下条件:在R节点上的VM除去最大内存开销的VM,都已经切换到群集中的其它节点上,之后最大开销内存的VM没有可用的主机进行切换,这是一种最差情况假设

2.Slot Method

通过一个将R节点上的最大VM做为一个标准SLOT,然后计算 H节点的可用SLOT数,之后评估是H节点是否可以放置R节点的所有SLOT

3.Simple check

简单检查算法不考虑具体节点,只在整个群集上做一个假设。在群集中选定最大VM做为标准(内存 or slot)。同样的,在进行余量(slot或者内存量)检测的时候,会在所有节点内选择最小的余量进行统计。需要注意的是,最大VM可能与最低slot是同一个节点,但是进行简单检查的时候不考虑这一点

4.Full Complexity Check

复杂检测算法是穷举群集中的每一种N(R,H)组合. 进行检测的时候, slot数 , 最大 VM , H节点的内存和SLOT统计都按具体指定的组合进行重新计算,此检查算法最大的风险就是N(R,H)组合量有可能变的很大,具体来说就是有N^R种,为了避免这种大量的运算,这个算法只会在 N^R < 5000才使用。

这里可能可以简单列一个群集组成做为参考

part 3.算法详解

这里先列出一些预定义值计算方法,下面算法中会用到

群集值

主机节点值

这些变量值会在每个主机上进行计算,会预先计算出来后将值代入下面的计算公式中

有几点需要注意

1. 每个VM需要额外的64MB用以hyper-v监控程序开销,但是为了方便计算,下面的算法不把这个值代入计算了

2. Stopped, saved state, paused 和running 状态的VM也都要参与计算.

3. 如果虚拟机使用的是动态内存,则用当前分配的值用以公式计算

part 4.算法

终于到了算法部分了,看上去好像计算复杂,其实看明白了觉得这个算法也不是特别麻烦,下面把四种算法说明一下

4.1 Slot Simple

- SlotSize = 群集中VM配置的最大内存值

- 在每个主机上计算:AvailableSlots, UsedSlots ,TotalSlots

- 计算TotalSlotsRemaining=sum(主机组中H个最小TotalSlots)  注意是全部节点按TotalSlots排序后,从小到大取H个TotalSlots
- If Sum(UsedSlots) <= TotalSlotsRemaining, 则群集没有过载,状态置为OK.

4.2 Slot full

需要计算各种R与H的每种组合情况

- SlotSize = R中最大内存开销VM

- 计算每个主机上的AvailableSlots, UsedSlots ,TotalSlots
- TotalSlotsRemaining =H主机的TotalSlots 总数
- 如果Sum(UsedSlots) > TotalSlotsRemaining, 群集状态可能为 overcommitted. 
- 如果每种组合的Sum(UsedSlots) <= TotalSlotsRemaining , 群集状态则为OK

4.3 Proof Simple

- LargestClusterVM = 群集中最大内存开销VM

- 计算所有主机的AdditionalMemory, VM数
- TotalAdditionalSpace = sum(主机组中H个最小AdditionalMemory)  ,与Slot Simple算法中的TotalSlotsRemaining值计算方式一样

- TotalOrphanedVMs = sum(最大VM*R) – LargestClusterVM. 
- 如果 TotalOrphanedVMs <= TotalAdditionalSpace, 群集状态为OK.

特别注意: 如果 TotalOrphanedVMs =0, LargestClusterVM > 0 and TotalAdditionalSpace = 0, 群集可能为overcommitted

4.4 Proof Full

需要计算各种R与H的每种组合情况

- LargestClusterVM = R中最大内存开销VM 
- 在所有主机上计算AdditionalMemory, VM数

- TotalAdditionalSpace = Sum (H主机AdditionalMemory)

- TotalOrphanedVMs =Sum (R主机的vm内存) – LargestClusterVM. 
- 如果 TotalOrphanedVMs > TotalAdditionalSpace, 群集可能overcommitted. 
- 如果 TotalOrphanedVMs = 0, LargestClusterVM > 0 and TotalAdditionalSpace = 0, 可能overcommitted.

如果每种组合的 TotalOrphanedVMs < TotalAdditionalSpace , 群集状态为OK.

算法说完了,最后说一点:以上这些算法,统统都不会把群集状态标记为过载

…………

是不是觉得白白浪费了时间看这篇文章了,那我这说什么梦话呢,明明是说怎么检测过载!

其实在一开始的时候已经说了,VMM对于群集状态都置都认为是overcommitted的,换句话说,就是默认值是过载的,状态算法只负责标记状态OK。所以如果上面的算法不能证明群集没有过载,SCVMM就会显示群集状态为overcommitted,反之,只要有任意一个算法证明群集未过载才会把状态置为OK

此外,这里还有一个处理逻辑:就是在进行Full Complexity检查中,只要有一组计算结果为可能过载或者过载(这里也说明了上面我在进行算法说明的时候,为什么有几处写的是”可能”overcommit),那么就立即停止本次检测,群集状态为overcommited

part 5 .demo

好了,终于到了例行的大家期待的demo了,如果只说算法不进行个演示,这个概念的确比较抽象,

场景:4节点群集,主机为 4x 32GB hosts. 系统保留内存 9GB. 64MB的hyper-v监控需要内存不参与计算(完全就是图我方便), Cluster reserve (R)为2,群集组成如下图,,即R=2,H=2,N=4:

Slot Simple Example

- Slot size = 8GB

- TotalSlotsRemaining = sum(2个最小slot)= (1+3) = 4 
- TotalUsedSlots = 7

判断:TotalUsedSlots > TotalSlotsRemaining, 此方法测试未通过

Slot Full Example

- TotalUsedSlots = 7

上表中每一行都代表一个组合的运算中间值和结果

判断:可以看到有部分TotalUsedSlots > TotalSlotsRemaining,所以这个方法检测未通过(这里说一句,其实不用都算出来,只要有一组数据检测没通过这个运算就已经结束了)

Proof Simple Example

- LargestClusterVM = 8GB

- TotalAdditionalSpace = sum(H个最小AdditionalMemory)= 0GB + 5GB = 5GB. 
- TotalOrphanedVMs = (8GB + 8GB) – 8GB = 8GB.

判断:TotalOrpanedVMs > TotalAdditionalSpace, 此方法检测失败

Proof Full Example

表中每一行还是代表一组RH组合的运算中间值和结果

判断:可以看出每一组的 (Orphaned – LargestVM <= AdditionalMemory),条件都满足了,所以群集状态置为:“OK”

时间: 2024-10-08 19:40:46

浅谈Virtual Machine Manager(SCVMM 2012) cluster 过载状态检测算法的相关文章

安装并配置System Center 2012 R2 Virtual Machine Manager

关于VMM的一些了解: 安装并配置System Center 2012 R2 Virtual Machine Manager SystemCenter 2012 R2 VMM简介 在以下方面有很大增强: 企业级的性能 运行至多1,000台主机和25,000个虚拟机 (当然也不可能部署这么多) 动态VHDX大小 通过动态迁移自动升级Hyper-V群集 增强支持Citrix和VMware主机 简化供给和迁移 .存储增强 .裸机供给 .多租户云基础架构 提供Windows Azure的基础架构 通过V

VMM系列之安装Virtual Machine Manager 2012 R2

既上篇介绍了SCVMM2012R2之后,本章节主要介绍如何安装VMM2012R2以及在安装中需要注意的相关事项.在关于System Center 2012 R2 Virtual Machine Manager中主要使用以下拓扑进行介绍. 一. 创建服务账户 创建的服务账户主要用户安装.配置与管理SCVMM. 1. 登陆DC服务器,打开活动目录用户和计算机(ADUC创建VMM所需的相关服务账户) 1) VMM服务用户账户:BJCloud\VMMsvc 2) VMM运行服务账户:BJCloud\VM

System Center 2012 R2 Virtual Machine Manager介绍

一SCVMM2012R2概述: Virtual Machine Manager (VMM)是System Center 2012产品系列中的一个关键组件,是一种用于虚拟化数据中心的管理解决方案,它使你能够配置和管理虚拟主机.网络和存储资源,以便创建虚拟机和服务并将其部署到所创建的私有云.Virtual Machine Manager 2012 R2能够助您实现: 1. 交付灵活而具有成本效益的基础设施即服务(IaaS). 您可以池化并动态分配虚拟化数据中心资源(计算.网络和存储),通过灵活的基于

用Virtual Machine Manager做虚拟机储存迁移

用Virtual Machine Manager做虚拟机储存迁移 下面是迁移虚拟机存储的例子 1.选中所要项迁移的虚拟机的存储---点击迁移存储 2.该路径 3.选择一个你事先弄好的共享文件夹---确定 4.下一步 5.移动 6.返回查看迁移情况 7.迁移完成 8.查看属性 9.查看存储位置

使用 Virtual Machine Manager 管理虚拟机

转载自https://www.ibm.com/developerworks/cn/cloud/library/cl-managingvms/ 尽管服务器管理在过去问题重重,但虚拟化管理简化了一些问题,却放大了另一些问题.一个服务器上的单一操作系统的时代已成过去,并由多个位于各自的虚拟机 (VM) 容器中的操作系统所取代.此属性(称为虚拟机密度)很有用,因为随着越来越多的虚拟机占用了更少数量的服务器,所需要的服务器硬件更少了.这带来了更少的硬件.更低的功耗,但却增加了管理复杂性. 所幸,已有解决方

浅谈 Virtual Dom 的那些事

背景 我们都知道频繁的dom给我们带来的代价是昂贵的,例如我们有时候需要去更新Table 的部分数据,必须去重新重绘表格,这代价实在是太大了,相比于频繁的手动去操作dom而带来性能问题,vdom很好的将dom做了一层映射关系,进而将在我们本需要直接进行dom的一系列操作,映射到了操作vdom. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

System Center 2012 R2 POC部署之Virtual Machine Manage配置(上)

System Center 2012 R2 POC部署之Virtual Machine Manage配置(上) 本篇文章介绍VMMd 相关配置,如创建运行方式账户.添加主机.创建逻辑网络.创建云.创建虚拟机模板等等. 1. 创建运行方式账户 在 System Center 2012 – Virtual Machine Manager 中,用户为任何过程输入的凭据可由运行方式帐户提供.运行方式帐户是一组存储的凭据的容器. 打开VMM控制台----设置----安全性,点击创建yunx 方式账户 输入

使用SCVMM 2012 R2管理Hyper-v群集

在上一篇中我们使用Windows2012R2创建了一个Hyper-v虚拟化群集(详见<Windows2012R2创建Hyper-v虚拟化群集>http://jiangjianlong.blog.51cto.com/3735273/1890026),这一篇我们将部署一个SCVMM2012R2来管理Hyper-v群集,主要内容包括:安装SCVMM2012R2.添加Hyper-v群集进行管理.创建IP池.创建VM模板.从VM模板创建虚拟机. 一.测试环境 计算机名 操作系统 IP地址 安装的功能角色

利用SCVMM 2012 R2来管理Azure虚拟机

4月27日微软发布了System Center 2012 R2 UR6(更新汇总6),其中Virtual Machine Manager一个重要的功能就是支持添加Azure订阅(经过测试目前只支持国际版Azure)并进行VM的管理,目前可以执行启动.停止.关闭.重启.RDP连接几个操作.这也是在混合云部署上的一个大的更新,除了使用SCAC外终于有个强大的虚拟化管理工具管理公有云和私有云了.UR6还改进了ASR保护方案(Azure Site recovery)等更新,具体可参考https://su