使用scvmm 2012的动态优化管理群集资源
动态优化(Dynamic Optimization)是在scvmm2012之后引入的一个新特性,简单来说,这个特性的功能就如字面意义一样,在群集范围内使用动态迁移VM的方式优化主机的资源,使主机与VM都工作在一个相对良好的资源环境中
在VMM2008版本中有一个类似的功能称为:PRO-tips,那么动态优化(后文简称DO)与之相比有哪些改进呢?
对于VMM 2008的用户来说,解决群集中的VM负载平衡问题比较麻烦,需要使用SCOM中的agent监控主机上的性能指标已经超过阈值之后开始进行VM迁移;到了VMM 2012版本后,DO使用全新的智能放置引擎(Intelligent Placement engine )更主动并且有效掌控群集内的主机资源。
DO 相对于PRO-tips有以下几项改进:
- DO 的监控和迁移作业由VMM服务本身提供,不再需要SCOM整合
- DO 在VMM服务器上运行,并不用在群集节点主机上运行,因为对于整个群集来说做到了集中管理,消除了主机上作业冲突的可能性.
- 用SCOM过同学应该知道,如果对VM进行监控,需要许多不同的管理包(management packs)对相关指标监控,比如VM的资源、网络使用等等,但DO 本身通过VMM服务就可以了解到VM的放置规则、资源需求等,不必再通过SCOM进行复杂的管理包配置
当然,并不是说使用了DO就不再需要SCOM了,因为他们完成的任务是完全不同的,如果需要更精确的监控还是需要使用SCOM的,我们这里只针对于“动态优化”这荐任务来说,DO已经完全可以满足需要了.
接着说一下DO规则
DO的规则不是特别麻烦,下面简单说一下,需要注意的是,DO在运行下面这些规则检查的时候是按顺序进行的:
1: 不要因为DO给群集系统带来新问题
在DO的迁移动作发生之前,进行的第一项检查,就是迁移是否会使系统出现警告或者错误,如果有,那么DO就不会进行迁移。不管进行迁移后整个群集系统的资源使用有多平衡,多么合理,VM也不会进行迁移。这里特别说明一句,这其中最典型的问题就是系统在迁移后可能会over-commited,导致配置好的DO不能进行动态优化,这也是我为什么要写over-commited算法这篇文章的原因。
另外还有一种不迁移VM的情况,就是将VM配置为从动态优化中排除,如下图:
2: 解决VM的错误/警告
在进行DO时,最重要的一点就是要优先解决VM的错误和警告问题,比如VM配置了Network Optimization (VMQ)但是当前主机上VMQ不可用;无法在当前主机上访问配置的逻辑网络接口等等
3: 解决主机过载
当我们在给一个主机组配置DO的时候,会被要求指定主机的最大负载,如图:
当DO检测到某个主机上的阈值超出了指定范围,那么DO会优先将这台主机上的VM迁移出去减轻这台主机上的负载,话说这也是DO的一个最主要功能了。
4: 平衡主机资源使用
当前面提到的三个优化规则都满足的条件下,DO才会在群集内部查找所有可迁移的VM并且评估迁移后的星级,如果星级增长到满足主机组的aggressiveness 设置级别(见上图),则开始进行资源动态平衡。(Mdidum以下的星级阈值我又没有找到,如果谁有相关资料可以告诉我再进行修改)。
关于如何对主机进行评星,请参考MSDN:https://technet.microsoft.com/en-us/library/JJ860428.aspx?f=255&MSPPError=-2147217396
下表是进行星级评估时的阈值:
High 0.1 stars
Medium-High 0.2 stars
Medium 0.3 stars
可以看出,在aggressiveness设置为High后,星级增长只要0.1星就可能会引起VM迁移,一般来说我是把这个设置为low的,没有必要因为一点点的资源平衡就让正常运行的VM中断一次(虽然是动态迁移,但是在迁移的最后阶段网络还是会闪断的,这在重要的生产环境下会引起大问题)
最后,以上提到的所有迁移,都必须不能引发目标主机的错误或者警告。
DO的方式- 手动还是自动?
DO默认是工作在手动方式下的,也就是说,不会自动对VM进行动态迁移,你可以通过右键群集,选择 “Optimize Hosts” 的方式进行。在手动模式下进行DO首先会先进行群集的估计,之后会出现一个窗口显示建议进行迁移的VM/源主机/目标主机。
如果想要开启自动DO也很简单,只要在主机组属性中开启就可以,之后选择DO的运行周期(默认为10分钟一次),这样,主机组内的群集就会在指定的周期对群集自动进行DO,如果自动DO导致了一次迁移,在任务窗口中也可以观察到迁移的进度。
DO的性能数据
1.在进行大部分的部署工作时(如新VM,迁移VM,新建服务等等),DO会基于一定周期内VM在正常工作条件下的性能数据计算出平均值,用以星级评估。
2.SCVMM从VM和主机每9分钟获取一次性能数据(这也是为什么DO的默认周期是10分钟的原因),DO会基于滚动周期内性能数据的平均值进行检查
3.DO不会进行存储迁移,所以在进行DO时磁盘性能是不计算在主机负载内的,在VMM 2012中, DO只考虑CPU以及内存的使用
诊断DO出现的问题
当DO出现某种问题的时候(其实也就是动态优化没有产生你要的效果的时候),我们需要通过哪些手段来确认为什么不能正常执行的?
其实最主要的工具就是SCVMM的客户端,你可以手动对你想要迁移的VM进行一次手动迁移,我们会发现出现如下界面:
可以看到,界面上出现了主机的星级,这个星级的计算方法、放置规则是与DO的计算方式完全一致的,从图中可以看到主机1,3是有星级的,但是主机2由于添加了放置规则,且并不满足,所以是没有星级的,这点可以从下面的异常信息看出来。所以DO不会将我选中的VM迁移到主机2上。
同样,还有一种最常出现的情况就是群体over-commited:
在上图这种情况下,不管主机的星级多么高,但是群集整体已经过载,也就是说无论怎么迁移VM都会有over-committed的警告,违反了DO的第一条规则,所以DO是不会进行动态迁移的。
最后,我们要考虑的就是主机资源的平衡问题,只要没有达到aggressiveness的级别设置,DO是不会进行平衡迁移的,举例来说,有一个主机上运行了10个空闲的VM,而另一台群集里的主机上没有放置VM,DO运行检查后发现没有达到aggressiveness的配置值,所以并不会导致VM进行迁移。 但是当主机的使用率上升,换句话说,星级评定与空闲主机相比有下降的超出了aggressiveness阈值,DO才会有迁移的动作进行资源平衡,我们可以通过把aggressiveness的等级设置的高一点,让群集内主机的资源使用尽量平均。当然我并不建议这么做……
使用scvmm 2012的动态优化管理群集资源的更多相关文章
- 浅谈Virtual Machine Manager(SCVMM 2012) cluster 过载状态检测算法
在我们使用scvmm2012的时候,经常会看到群集状态变成了这样 点开看属性后,我们发现是这样 . 发现了吗?Over-committed,如果翻译过来就是资源过载,或者说资源过量使用了,那么这个状态 ...
- FreeRTOS 动态内存管理
以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解 FreeRTOS 动态内存管理,动态内存管理是 FreeRTOS 非常重要的一项功能,前面 ...
- Android 6.0 - 动态权限管理的解决方案
Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了用户体验, 同时也为程序员带来新的负担. 动态权限管理就是这样, 一方面让用户更加容易的控制自己的隐私, 一方面需要重新适配应 ...
- C++动态内存管理之shared_ptr、unique_ptr
C++中的动态内存管理是通过new和delete两个操作符来完成的.new操作符,为对象分配内存并调用对象所属类的构造函数,返回一个指向该对象的指针.delete调用时,销毁对象,并释放对象所在的内存 ...
- uCGUI动态内存管理
动态内存的堆区 /* 堆区共用体定义 */ typedef union { /* 可以以4字节来访问堆区,也可以以1个字节来访问 */ ]; /* required for proper aligne ...
- Keil C动态内存管理机制分析及改进(转)
源:Keil C动态内存管理机制分析及改进 Keil C是常用的嵌入式系统编程工具,它通过init_mempool.mallloe.free等函数,提供了动态存储管理等功能.本文通过对init_mem ...
- (原创)动态内存管理练习 C++ std::vector<int> 模拟实现
今天看了primer C++的 “动态内存管理类”章节,里面的例子是模拟实现std::vector<std::string>的功能. 照抄之后发现编译不通过,有个库函数调用错误,就参考着自 ...
- C++程序设计入门 引用和动态内存管理学习
引用: 引用就是另一个变量的别名,通过引用所做的读写操作实际上是作用于原变量上. 由于引用是绑定在一个对象上的,所以定义引用的时候必须初始化. 函数参数:引用传递 1.引用可做函数参数,但调用时只需 ...
- web页面内容优化管理与性能技巧
来源:GBin1.com 回 想一下,以前我们不得不花费大量时间去优化页面内容(图片.CSS等等),如今用户有更快速的互联网链接,我们似乎能够使用更大的图像或更大的闪 存文件,里面包含的有视频或者图片 ...
随机推荐
- DDL/DML是什么?
DDL:(Data Definition Language)数据库定义语言 它是定义数据库的语言, 里面包含: CREATE ALTER DROP TRUNCATE COMMENT RENAME DM ...
- EntityFramework查询--联合查询(Join,GroupJoin)
首先我们先看一下Join public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(this ...
- C#中 反射中的Assembly(装载程序集):
反射中的Assembly(装载程序集):可以通过Assembly的信息来获取程序的类,实例等编程需要用到的信息. String assemblyName = @"NamespaceRef& ...
- 美女jquery图片播放器插件
相册在线查看http://keleyi.com/keleyi/phtml/image/6.htm 可全屏,可拖动,可自动播放的jquery图片展示插件 使用说明:1.引用css文件:<link ...
- 使用C#类向数据库添加数据的例子源码
在上一篇中,增加了sql server数据库操作类SqlOperator,用于操作sql server数据库.还有一个SqlStringHelper类,用于处理sql语句的单引号.那么这两个类怎么使用 ...
- node学习笔记
一.准备(github地址) 什么是Javascript? ... Javascript能做什么? ..... 浏览器中的Javascript可以做什么? 操作DOM(增删改查) AJAX/跨域 BO ...
- 【UI插件】开发一个简单日历插件(上)
前言 最近开始整理我们的单页应用框架了,虽然可能比不上MVVM模式的开发效率,也可能没有Backbone框架模块清晰,但是好歹也是自己开发出来 而且也用于了这么多频道的东西,如果没有总结,没有整理,没 ...
- C# 多線程&BackgroundWorker概念入門教程
感謝以下各位作者的貢獻~ 百度經驗舉了個例子,很好理解BackgroundWorker的用途(主要是用來啟動後台線程,而不阻塞調用程式的運行),收藏一下 http://jingyan.baidu.c ...
- ImageLoader配合ImageSwitcher的使用
先在MyApplication中初始化ImageLoader initImageLoader(getApplicationContext()); /** * 初始化ImageLoader * 如果你经 ...
- ERROR ITMS-90682: Invalid Bundle - The asset catalog at 'Payload/XXXXX/Assets.car' can't contain 16-bit or P3 assets if the app supports iOS 9.3 or earlier.
刚升级Xcode 8, 幺蛾子又出现了.提交的时候出了这个问题. BTW,感谢google.以下为解决方案:‘ 在 Xcode 8 中,当你资源文件中[含有16位图]或者[图片显示模式γ值为'P3'] ...