第二部分 vSphere DRS(分布式资源调度)
第五章 DRS计算推荐
群集负载平衡,DRS建议考虑几个指标来计算迁移:当前虚拟机的资源需求,主机资源的高可用性和高级别资源策略,接下来的探讨DRS如何用这些指标来创建一个比当前虚拟机更新的,更好的虚拟机,当一直满足所有的需求和限制。
什么时候DRS被调用?
DRS默认每300秒调用一次,当调用间隔时间过后,DRS将计算和生成虚拟机迁移的建议,每个建议在下一次调用DRS期间不被接收将被“退休”,如果资源还是不平衡,DRS可能会再次产生精准的建议。
当DRS算法被调用期间可以通过vpxd.cfg的下列选项来进行控制:
vpxd配置文件
<config>
<drm>
<pollperiodsec>
300
</pollperiodsec>
</drm>
</config>
默认的频率是300秒,但是可以在60秒—3600秒的范围内设置,强烈不建议修改此值,不频繁的时间间隔可能会降低vMotion的数量,虽然节约了开销但是离开一段较长的时间群集会有不平衡的危险。而缩短时间可能会产生额外的开销,尽管提供额外的一些好处。
如果群集检测资源池树的改变,操作和事件,如资源供应变化或者资源设置修改也会触发DRS的不平衡计算。
表18:DRS计算调用事件
计算建议
为了生成迁移建议DRS执行多个计算过程,DRS定义群集不平衡和选择合适虚拟机迁移来解决不平衡。
约束校验
确定负载不平衡之前,DRS检测是否违反约束,约束校验决定是否DRS必须要:
-
由于用户请求进入维护模式或者待机模式,撤出主机
-
强制纠正主机和虚拟机之间关联性/反关联性规则冲突
-
纠正虚拟机和虚拟机之间的反关联性规则冲突
-
纠正虚拟机和虚拟机之间的关联性规则冲突
-
纠正主机资源过量(稀有,因为DRS资源控制)
在负载平衡期间,这种约束被遵从,理解约束可能引起负载平衡,但是不尊重约束就可以解决的,如果被认定无法修复不平衡,群集摘要页面的信息会通知管理员。
不平衡计算
要建立一个不平衡的群集,DRS会将当前主机负载标准偏差值(CHLSD)和目标主机负载标准偏差值(THLSD)进行比较,如果CHLSD超过THLSD,群集被认为不平衡。
当前主机负载标准偏差
DRS通过群集中所有活动的主机计算平均值和正常配额标准偏差决定了当前主机负载标准偏差(CHLSD).
正常的配额是衡量可用容量的利用率,DRS收到每个虚拟机的资源利用率和需求来计算动态配额,主机上所有虚拟机的配额之和,通过主机的容量进行划分,主机的可用容量是剩下资源数量,也就是减去虚拟层的资源需求后的容量。
Normalized entitlement= (VM entitlements)/(Capacity of host)
因为虚拟机配置包括需求指标,如CPU的准备百分比和内存的空闲百分比,在没有资源争用的情况下,正常的标准差同群集的状态非常类似。
目标主机负载标准偏差
目标主机保证偏差(THLSD)是来自DRS的迁移阈值,它定义了群集不平衡的容忍等级。
DRS迁移等级
迁移阈值决定了保持负载不均衡最大值,DRS迁移阈值提供五个等级,范围从保守到激进。
图83:迁移阈值
每个阈值级别设置了不平衡的容忍边界,激进的阈值设置了一个收紧的边界以允许一点点不平衡,而保守的阈值容忍比较大的不平衡,大多数保守阈值不会计算THLSD,只会建议强制性约束冲突,阈值更多的信息,可以在后面的章节发现。
期望高频繁的迁移可以选择激进的迁移阈值,DRS会请求保持CHLSD低于THLSD。
在vCenter度量当前主机负载标准偏差(CHLSD),CHLSD经常被称为DRS的负载不平衡标准,负载不平衡标准和CHLSD互换。
图84:DRS迁移建议工作流
当前主机负载标准偏差超过了目标主机负载标准偏差,DRS将发起GetBestMove(最佳迁移)
DRS程序步骤
while (load imbalance metric > threshold)
{ move = getbestmove();
if no good migration is found:
stop;
else:
add move to the list of recommendations;
update representation of cluster to the state after the move is added; }
与流行的看法相反,在允许vCenter或者用户执行建立清单之前算法将所有的建议列入清单。
GetBestMove(最佳移动)
GetBestMove过程旨在找到虚拟机并移动,最大程度的改善群集资源的广泛的不平衡,GetBestMove过程如下:
GetBestMove GetBestMove() {
for each virtual machine v:
for each host h that is not source host:
if h is lightly loaded compared to source
host:
if cost-benefit and risk analysis
accepted
simulate move v to h
measure new cluster-wide load
imbalance metric as g
return move v that gives least
cluster-wide imbalance g. }
这个过程决定了迁移的最大进步,DRS周期性的通过每个开启DRS的虚拟机和主机,该主机并非源主机,源主机是ESXi主机当前运行着虚拟机的主机,DRS将会对比源主机和目标主机的正常配额,主机配额较低的被选为下一步的模拟主机。
GetBestMove完成后,结果是理想的,DRS会从主机以前正常配额的部分选择和模拟迁移,DRS计算在模拟迁移后计算两台主机的CHLSD值,如果它们仍然超过DRS迁移阈值,DRS重复该过程,但选择不同的目标主机,这个过程为每个虚拟机和主机的组合重复,列出迁移建议清单,这样最大化的减少负载不平衡。
基本设计原则
当设计vCenter时需要考虑群集和主机的数量,DRS为大量虚拟机迁移计算会影响vCenter的性能。
成本效益和风险分析标准
成本效益和风险分析的目的是过滤掉高成本和不稳定的迁移。术语“不稳定”表示群集负载平衡受影响的迁移和检查虚拟机工作负载的稳定性。请注意,这并不意味着vMotion本身不稳定。
DRS调用成本效益风险分析来节省迁移流量,避免vMotion不断的产生流量,当执行vMotion时源主机和目标主机都会产生开销,不断的初始化vMotion会抵消虚拟机迁移的益处。
成本效益和风险分析产生的建议也可以阻止高负载,如果虚拟机的工作负载改变为直接方式(直接接受建议,不手工操作),建议将变得无用,会产生虚拟机重复选择的情景,像“乒乓”一样来回迁移。
成本
如果使用1GB的网络vMotion过程中将需要预留30%的CPU,如果使用10GB网络的vMotion端口组,将需要预留100%的CPU,此预留在本地主机的资源池中设置,在源主机和目的主机上创建,如果多个vMotion正在运行,在vMotion任务之间预留资源被分享,在vMotion过程中目的主机上一个影子虚拟机将被创建,影子虚拟机的内存消耗也是成本需要考虑的因素之一。
益处
通过移动虚拟机,源主机上的资源被释放,这些资源可以为其它虚拟机提供使用,由于新的主机上低标准的配额,迁移过去的虚拟机也同样受益,DRS定义迁移的工作负载导致群集负载更加平衡。
如果在特定的资源上任何主机被使用过量,DRS将对所有的迁移资源给出高权重,例如,如果CPU发生资源争用,DRS将使用一个更高权重的CPU来解决争用,DRS在每次调用期间重新检查特定资源的过量情况。
风险
风险账户为可能的不规则负载建立,不规则负载表示不一致的高需求的负载
结合成本效益风险
DRS为重新平衡提供迁移建议,如果他们的估计成本低于他们的当前潜在的收益,最近的VM需求和主机的相对失衡,DRS结合成本效益和风险来计算虚拟机新的位置,以满足所有的约束和改善负载平衡。
成本效益和风险分析确定了资源迁移收益,无论是正面还是负面的,要确定迁移是否有一个正面积极的结果,虚拟机最后5分钟的工作负载特征被分析,这被称为“稳定”时间,并表示虚拟机已经使用资源多次时间,类似活动工作负载值,保守的估计是调用期间的剩余时间)调用周期持续时间-稳定时间),DRS假定虚拟机在最坏的负载下运行,从最后60分钟使用的最高值。
DRS包括迁移成本,并考虑源主机和目的主机的资源收益,如果成本收益和风险分析产生了积极的结果,DRS将只会建议迁移。
你可以想象,什么影响调整下,调用间隔将会有这样的分析,因为每个周期净资源收益被计算,通过周期长度增加权重,我们不建议改变这个区间,除非你完全了解这种变化的影响。
MinGoodness
除了成本效益分析,DRS将计算每一个动作的goodness值,此值表示群集在负载平衡移动时是正面或负面的影响,对于这两种成本效益和Goodness值,DRS使用相同的评级系统。
表 19:评级系统
每个移动获得Goodness评级,关系到当前的负载平衡和最小迁移阈值,如果移动将会伤害负载平衡,移动将会收到-2的评级,一个移动稍微降低负载平衡会得到-1的评级,一个提供负载平衡,但是提高不能满足最小阈值会收到Neutral评级,一个移动稍微提高(0.1)了负载平衡会得到+1评级,显著改善负载平衡的获得+2评级。
正如之前提到的,受益于移动DRS使用相同的值进行成本加权,这些评级应用如下:减少10%可用资源的移动得到-2评级,稍微减少可用资源的移动得到-1评级,如果对资源来说移动是是中性,不会帮助也不会伤害资源,将得到0评级,如果提高了可用资源的移动得到+1评级,当增加10%的可用资源的移动得到+2评级。
在提出建议之前,Goodness评级被用来对比成本收益评级,由于成本收益计算比Goodness计算更保守,这就是非常难看到DRS提出中性评级移动和低Goodness移动的建议,因此,DRS通常给出的建议是正面的成本收益移动和Goodness评级移动
当群集严重失衡,通过Goodness(MinGoodnessFiltering)和成本收益(CostBenefitFiltering)过滤移动能阻止DRS给出的移动建议,当任何主机的负载同目标主机的负载偏差0.2时,群集被视为严重失衡,如果你发现DRS在你的环境中不建议任何负载平衡移动,这可能是每个移动对群集不平衡影响太小,这可能是没有移动能明显提高群集平衡(MinGoodnessFiltering控制),或者改善群集失衡的成本太高(CostBenefitFilter控制)
为解决这种情形,vSphere 5.1在DRS负载均衡算法上配备了三个额外的步骤,这些步骤是
RelaxMinGoodness, RelaxCostBenfitFiltering and DropCostBenefitFiltering,它们是怎样工作呢?
表20:DRS调用步骤
在正常操作期间,中性移动或者负面的Goodness评级将会被拒绝;但是,如果群集严重失衡,它们可以被重新考虑和接受。如果在DRS负载平衡步骤后群集仍然严重失衡,如果负载平衡操作并不被迁移限制(MaxMovesPerHost)所限制,负载平衡将重新运行激活(RelaxMinGoodness(RMG))标志,这意味着,DRS认为之前移动中性Goodness和成本收益评级,将通过MinGoodNessFiltering放弃。
如果分析显示群集仍然严重失衡,即使在考虑移动之后,改善群集平衡作用比较小-但仍然是正面的方法,DRS设置RelaxCostBenefitFiltering(RCB)标志,改善负载平衡作用,由小到中的移动将被考虑,尽管它们在成本收益值方面有一点负面,如果这些额外移动不能够解决严重的失衡,那么DRS设置DropCostBenefit(DCB)标志,会认为在正常的负载平衡运行期间这些移动将被强烈拒绝。
相对于vSphere 5.1之前的版本,这项新功能可能会导致DRS产生更多的移动,但是请注意这些额外的移动将只出现在群集严重失衡的状态下。从本质上来讲,这个功能时一个自动化的方式来实现手动设置minGoodness=0和costBenefit=0的操作,但是,DRS适用这种机制只在绝对必要的状态时,手工开启可能会伤害虚拟机的性能。
计算迁移建议的优先级
迁移阈值指定了当前主机负载标准偏差(CHLSD)与目标主机负载标准偏差(THLSD)的平衡容忍度,迁移阈值因素配置是在群集级别通过DRS设置的,为了使迁移阈值设置更容易理解,引入优先级来体现在生成迁移建议时使用哪个容忍程度。
在计算中,DRS给每一个建议分配一个优先级,这个优先级对应迁移阈值,如果优先级少于或者等于迁移阈值,建议将被显示和应用,根据群集自动化水平,如果优先级在迁移阈值以上,建议要么不显示要么丢弃,你能想象迁移阈值作为DRS生成建议的过滤器。
级别1(保守)
当选择保守迁移阈值级别,唯一强调移动,优先推荐被执行,这意味着DRS群集不会调用任何负载平衡迁移,当以下情况强制性动作时:
-
ESXi主机进入维护模式
-
ESXi主机进入待机模式
-
违反规则
-
虚拟机的预留资源之和超过了主机的容量
强制移动可能在另一台主机上引起冲突,如果发生,DRS将在下一次调用时,移动虚拟机来修复这个新冲突,当群集存在多个规则这个场景可能发生。常见的一些迁移请求满足DRS的规则配置。
级别2(适度保守)
第2级别的迁移阈值仅适用于优先级1和优先级2的建议,优先级2建议保证群集负载平衡有很好的改善。
级别3(中性)
第2级别的迁移阈值是创建DRS群集的默认迁移阈值,这个中性的迁移阈值适用于优先级1.2和3的建议,保证群集负载平衡有好的改善。
级别4(适度激进)
第4级别的迁移阈值适用于多达4个优先级的所有建议,优先级4建议保证群集负载平衡适度的改善。
级别5(激进)
第5级别阈值是迁移阈值最右边的滑块,适用于所有5个优先级的建议,每个建议承若群集的负载平衡略有改善。
指导
一个第1级别的建议应该一直被接受,但清单中第5级别的一些建议,如果全部接受,也能共同改善群集。
当主机上的虚拟机运行着变化无常的工作负载,群集使用激进的迁移阈值会发生不必要的迁移。
适度的迁移阈值在这样的情况下更适合。当群集拥有同样配置的主机,运行着相对稳定的负载需求,激进阈值(第4级别,第5级别)将被考虑 。
基本设计原则
默认适度的迁移阈值为迁移提供了一个比较高的容忍度,同时提供足够的平衡,算法考虑配置的阈值,并创建唯一值得依据的建议,默认设置通常为激进,通过主机足够去维护工作负载平衡,无需创建不必要的开销引起太频繁的迁移