第二部分 vSphere DRS(分布式资源调度)
第六章 DRS推荐向导
一些DRS设置和功能会受到DRS迁移建议的影响,本章需要仔细看看各种设置,它们对DRS计算和负载均衡过程的影响。
虚拟机规格大小和初始位置
当虚拟机上电,DRS将选择目标主机作为虚拟机的初始放置位置,只要虚拟机的初始位置不引起群集不平衡,DRS倾向于放置它到注册主机上。在初始位置期间,DRS接受最坏的场景,因为它不会有虚拟机的资源利用率的初始数据,那么DRS就假设内存需求和CPU需求等于配置大小。
超大的虚拟机的引入会造成群集的临时不平衡,引起无谓的虚拟机迁移活动,如果群集成员能够提供100%的资源,可要求DRS进行群集资源碎片整理,迁移虚拟机以腾出空间。
如果虚拟机的实际利用率可以媲美其配置大小,额外的迁移行为被预料到,因为它们将尽快帮助群集达到一个平衡的状态,但是,如果虚拟机是超大的(其有效使用率比不上DRS的初始期望),通过多次DRS多次迁移,可能需要重新平衡群集。
我们都知道,许多组织仍然基于假定服务或者应用的高负载生命周期来配置虚拟机的大小,这是历史上物理机大小的使用策略,使用虚拟机的好处之一就是它的灵活性,它在生命周期提供虚拟机的大小调整,我们建议利用这些机制,并纳入到你的服务目录和日常运作。为了最有效的利用你的资源,根据当前或者不久的将来的负载来定义虚拟机的大小。
基本设计原则
根据当前或者不久的将来的负载来定义虚拟机的大小
MaxMovesPerHost
DRS评估群集,基于群集平衡状态和需求来为迁移提供建议,在每次调用周期重复该过程,为了尽量减少CPU和内存的开销,DRS建议每次DRS调用周期内建议限制迁移的数量,最终,在单个调用期间,没有更高优先级的建议,那么更多的迁移将被完成,最重要的是,需求可能在调用期间发生改变,这会使得之前的建议过时。
vCenter基于每个迁移的平均时间,vMotion数量,DRS调度周期长度来计算每主机的限制。
PollPeriodSec:
缺省情况下,PollPeriodSec-DRS调用周期长度-是300秒,但可以设置为60秒到3600秒之间的任意值,缩短时间间隔会因为额外的群集均衡计算而增加vCenter调用消耗,由于更小的时间窗口也减少了允许vMotion的数量,导致群集不平衡的周期较长,增加PollPeriodSec值会降低vCenter进行群集平衡计算的频繁度,每个周期允许更多的vMotion操作,不幸的是,由于群集较长的评估周期,离开不平衡群集的状态也较长。
vMotion 并发:
关于vMotion提到的深度支持,vSphere 5.1允许你在一台10GbE处理能力的主机上,可以执行8个并发的vMotion,对于1GbE,限制是4个并发vMotion,但是,vSphere 5.1包含了多网卡vMotion支持:设定多个活动的网卡加入vMotion端口组,允许为vMotion操作平均可用带宽,即使是单一vMotion,也可以利用所有可用网卡来减少vMotion的时间。
预计总迁移时间
DRS认为从以前的迁移观察到平均迁移时间,平均迁移时间取决于许多变量,如源和目标主机负载,虚拟机的活动内存,链路速度,可用带宽和vMotion过程中使用的物理网络的延迟。
基本设计原则
当设计DRS群集,考虑采用vMotion的要求,通过提供足够的带宽,群集可以更迅速的达到资源平衡,从而导致虚拟机有更好的资源分配(性能也会提高)。
规则
为了控制虚拟机的位置,vSphere 5.1同时提供了虚拟机到虚拟机(VM-VM)和虚拟机到主机(VM-Host)的规则
VM-VM的关联性规则指定了虚拟机可以呆在一起,运行在同一个主机(关联规则)或者他们不允许在同一主机(违反规则)
VM-Host关联性规则制定了哪些虚拟机在一个DRS组,或者应该运行在一个主机上的DRS组
VM-VM关联规则
一个VM-VM关联规则指定了虚拟机应该运行在同一个主机上
图85:关联规则
关联规则用作保留虚拟交换机的网络流量,减少物理网络的流量,例如,保持同一个主机上前端和后端服务器的应用程序,虚拟交换机里遗留的内部应用网络流量,较少延迟和减少物理网络链路上的负载和组件。
关联性规则通常建议从内存中获得更大的益处,通过同一ESXi主机包含有多个相同的服务器,透明页的共享可能会降低物理内存量,但是,由于现代的CPU架构和板载内存控制子系统,节省的内存可能不会如预期的一样大,今天,大多数CPU架构包括非统一内存架构(NUMA),NUMA为每个处理器提供单独的内存,基于相对位置的内存,导致不同的内存器不同存储时间,为了避免额外的延迟引起交叉CPU内存访问,ESXi的两个处理器(NUMA节点)之间不会共享页面。
为了进一步扩大内存管理,如果ESXi主机配置了最新的AMD或者Intel类型的处理器,这些处理器支持硬件虚拟化技术,如Intel扩展页面(EPT)和AMD的快速虚拟化索引(RVI),这些硬件扩展协助内存管理单元(MMU)的虚拟化,允许VMkernel依靠硬件跟踪操作系统里的内存映射,为了优化客户内存映射和VMkernel内存映射之间的同步性能,大页面被用于减少这些表里的页面数量,大页面(2MB)不通过内存透明共享(TPS)知道大页面被分解成小页面(4KB),而且只发生在ESXi主机超过了内存阈值的时候,空闲内存阈值在第13章中解释。大页面,当为了优化整合内存应用了VM-VM关联规则,NUMA和硬件虚拟化协助能减少内存透明共享(TPS)的有效性
VM-VM 违反关联规则
一个VM-VM违反关联规则是为了实现相反的关联规则:它指定了哪些虚拟机不允许运行在同一个主机上。
图86:违反关联规则
假如多个虚拟机,反关联规则在主机发生故障后提供灵活性服务,这类服务如域控制器(Active Directory domain controllers),DNS服务器和WEB服务器群。通过单独的主机上运行这些虚拟机,它可以在ESXi主机发生故障期间维护服务的可用性。
另一个例子是分离网络密集负载的虚拟机,如果他们将被放置在一台主机上,他们可能让该主机的网络吞吐量饱和,因为DRS不知道网络使用率,它监控CPU和内存的需求,一个反关联性规则来阻止DRS这样做,将它们放置在同一个主机上来解决这个问题。
VM-VM关联规则-对HA的影响
注意,VMware HA不知道VM-VM关联和反关联的规则,主机发生故障后,VMware HA可能在同一个主机上重新启动该虚拟机,但是DRS将在下一次调用期间(15分钟)纠正这个冲突。
VM-VM关联规则-对DRS的影响
VM-VM关联规则限制迁移的选择和放置,更多的约束在移动性上,在确定最佳的虚拟机位置来达到群集平衡之前,DRS将首先遵从关联规则和纠正违反的约束。在小的群集或者大的群集都有大量的规则,这些行为可能导致欠佳的群集平衡和资源分配。虽然DRS可能暂时违反VM-VM关联规则如果必要的虚拟机安置,它将在下一次调用周期纠正冲突,如果可能会再次影响资源分配。
VM-Host关联规则
VM-Host关联规则指定是否虚拟机属于虚拟机的DRS组或者应该运行在ESXi主机的主机DRS组。
VM-Host关联和反关联规则被配置被认为是强制性的规则,表现在vSphere客户端“必须运行”或者优先规则,表现为“应该运行”。
图87:VM-Host关联规则
VM-Host关联规则建立了一组虚拟机和一组ESXi主机之间的关联,请注意VM DRS组能独立运行在位于主机DRS组清单中ESXi主机上,它们是不需要运行同一台主机的主机DRS组中-除非主机组保护只有一个主机,当然。
关联VM-Host规则可用于隔离子群集里主机上的虚拟机,以遵从ISV许可规定,VM-Host反关联规则可能被用来通过不同的故障域隔离虚拟机以提高可用性,例如故障域能够通过一个刀片服务器机箱或者塔式主机或者一组机架服务器连接到同一个电源,VM-Host关联规则由三部分组成。
虚拟机DRS组
主机DRS组
指定(例如,必须/应该 运行其上)
注意
VM-Host关联规则适用于一个特定的群集,因此,他们只包含属于特定群集里的虚拟机和ESXi主机。
虚拟机DRS组:虚拟机DRS组包括适用于虚拟机的规则,请注意,如果一台虚拟机被从群集中移除,它会自动从虚拟机DRS组移除,但是,如果虚拟机想返回群集,它不能自动返回。
主机DRS组:主机DRS组包括适用于ESXi主机的规则,类似于虚拟机的行为,如果一个ESXi主机被从群集移除,它会自动从主机DRS组移除,但是,如果主机想返回群集,它不能自动返回。
指定:两种不同类型的VM-Host规则是可用的,一个VM-Host关联规则要么是一个“必须”规则要么是个“应该”规则。
应该(not)运行:“应该”规则是DRS和DPM的有利规则。DRS和DPM尽最大的努力试图满足这些规则,但是必要情况下DRS和DPM也能违反规则
必须(not)运行:“必须”规则是HA,DRS和DPM的强制规则,它指定ESXi主机的DRS组,迫使指定的虚拟机运行或者不运行在ESXi主机上。
有利规则
有利规则设计用来影响DRS迁移建议。如果它不过量使用主机的CPU和内存,DRS执行有利规则,在计算负载平衡期间,DRS运行有利规则,如果他们同其它的需求产生冲突,DRS放弃规则清单,并在无有利规则情况下重新初始化计算负载平衡。
DRS不向HA提供任何相关的有利规则,由于HA不知道这些“应该”规则,在主机发生故障的安置过程中它可能不知道违反规则,在下一次DRS调用周期内,DRS标识约束和问题(4分-优先级2)迁移建议,以纠正冲突,如果可能的话,根据DRS的自动化级别,它将显示相关建议或者自行纠正这种情况。
强制规则
强制规则适用于DRS,DPM,HA以及用户启动的操作,当生成或者执行操作时,DRS需要考虑强制规则,如果规则冲突,将不会产生任何建议,例如,如果与强制规则冲突,DRS将拒绝请求进入维护模式。
如果虚拟机上设置了预留,DRS会考虑预留和强制性规则,在虚拟机放置和开启电源期间必须满足这两方面的要求,如果DRS不能满足要求之一,虚拟机不通电或者不产生迁移到目的主机的建议。
当强制规则被创建,当前虚拟机的放置与规则产生冲突,DRS纠正冲突或冲突不能纠正就报告一个错误。
重要的是要认识到,在主机发生故障重启虚拟机期间,HA不会与强制规则产生冲突,HA将会故障转移虚拟机,如果可能,如果vCenter可用,HA将发送一份活动清单(哪些虚拟机需要故障转移的清单)给vCenter,并定期检查vCenter是否释放了足够的资源使HA能处理故障转移操作,如果达到虚拟机配置的重启重试次数还不能重新启动虚拟机,它将产生一个错误。
用户操作,如执行虚拟机从外部的主机vMotion到主机DRS组,违反强制性规则将失败,指出主机不兼容。
符合强制性规则至关重要,当DRS被禁用,它们不能被删除,值得强调:即使禁用了DRS,如果与强制规则冲突,强制规则将仍然影响HA、用户操作,群集继续跟踪、报告和警告。例如如果vMotion操作与强制规则冲突,群集将拒绝vMotion 操作,原因是不兼容。如果管理员明确这样做强制规则可以被禁用,如果管理员打算禁用DRS,它应该在禁用DRS之前移除强制规则,请注意,一旦DRS被禁用,vCenter不再显示DRS选项,禁止用户查看和管理规则,当DRS再次启用,规则将被显示,禁用DRS不会孤立规则。
如果结果与强制规则冲突,DPM不会让ESXi主机进入待机模式。此外,如果这些需求都符合强制规则,DPM才会开启ESXi主机电源。
强制规则在虚拟机移动位置上有更多的限制,限制虚拟机可以在哪些主机上运行,另外,HA和DPM操作被约束,例如,强制规则:
限制DRS选择主机去负载平衡群集
限制HA选择主机开启虚拟机
限制DPM选择主机断电
当DRS进行群集碎片整理,当HA基于百分比的接入控制,资源碎片可能产生,在故障转移期间,群集的资源碎片整理有HA提出请求,为了满足这一要求,DRS移动虚拟机为了腾出足够的空间来启动所有出故障的虚拟机,在碎片整理过程中,DRS被允许使用多点迁移,也就是说创建独立迁移链,例如,VM-A迁移到Host 2,VM-B从host 2迁移到host 3,强制规则减少迁移选择,只允许虚拟机在DRS主机组内移动。
一个虚拟机是多个强制规则的成员,设置了被限制只能允许在清单上两个DRS主机组的主机上。例如规则1允许VM2运行在4个主机ESXi-01, -02, -03 和ESXi-04上。规则2允许虚拟机运行在主机ESXi-03, -04, -05和ESXi-06上,最终的结果是,虚拟机只允许运行在兼容子集的主机上,也就是ESXi-03和ESXi-04.
图88:兼容子集
规则行为
强制规则必须被遵守,有利规则被执行,如果它们不过量使用主机或者引起约束冲突,这些行为可以限制DRS在其目标实现群集负载平衡,正如你能想象的,强制关联规则使故障排除复杂化,例如,试图确定为什么虚拟机不能从高利用率的主机迁移到低利用率的主机?
当创建了一个规则与另外一个活动规则发生冲突,旧的规则覆盖掉新的规则,DRS将禁用新规则,当建立一个新规则,一条规则冲突的消息会显示,新的规则将被禁用。
由于它们限制行为,强制规则应该被谨慎使用,只有在特定的情况下,例如授权请求,有利的规则能满足可用性要求,如在刀片机箱之间或者其它故障域之间分离虚拟机。
基本设计原则
有节制的使用VM-Host和VM-VM管理规则,规则在负载平衡计算上对其效率有影响;当规则被配置,DRS算法具有更少的选择。
强制管理规则应用于DRS,HA和手工操作,尽管当DRS被禁用,谨慎使用强制规则。
组织规则的影响
许多用户创建规则,但忘记创建备份或者归纳文档。违反关联规则可以扮演一个重要的角色,在满足一定的SLA或者BC/DR要求和创建备份或者合理的记录归档,使用PowerCli,规则可以很容易的从vCenter的数据库中提取出来。
虚拟机自动化级别
自动化级别时为了单个虚拟机可以自定义去覆盖DRS群集自动化级别,自动化级别有五种模式:
全自动
半自动
手动
默认(群集自动级别)
禁用
每个自动化级别的行为有所不同:
表21:DRS行为自动化级别
默认自动化级别不在上表的清单中,因为它是群集自动化级别,当群集自动化级别被修改,单独的自动化级别也最好修改。
禁用自动化级别
如果一个虚拟机的自动化级别设置为禁用,然后禁用这台虚拟机的DRS操作,DRS不会生成迁移建议或者生成初始化位置的建议,虚拟机将在注册主机上启动,一个启动的虚拟机自动化级别设置为禁用,但还是消耗群集资源,将影响DRS负载平衡计算,在计算产生建议期间,DRS忽略设置了自动化级别禁用的虚拟机,并选择主机上的其它虚拟机,如果DRS必须在自动化级别的虚拟机和手动自动级别的虚拟机之间选择,DRS偏爱自动性的虚拟机超过手动级别的虚拟机。
手动自动级别
当一个虚拟机被配置了手动自动级别,DRS既产生初始位置建议,也产生负载平衡迁移建议,但是用户需要手工批准这些建议。
半自动级别
在部分自动级别下DRS自动为虚拟机安排位置,但是生成的迁移建议需要手工批准。
手工和半自动级别对群集平衡的影响
当任何其它自动级别被禁用,DRS假定用户将手工接收产生的迁移建议,这意味着DRS将继续将虚拟机放在群集平衡和资源利用率的分析中,在分析过程中,DRS模拟群集内虚拟机的移动,每个没有被禁用的虚拟机,将包括在选择迁移建议的过程中,如果某一特定的虚拟机移动提供了高的收益和比较低的风险,DRS会为移动生成一个迁移建议,因为DRS被限制一个特定数目的迁移,它可能放弃关于虚拟机的几乎相似的建议,现在就有问题在这个场景下,当这个虚拟机goodness级别与默认自动接近,建议可能迁移的虚拟机配置手工自动级别,如果用户监控每个每次DRS调用就应该没有问题,当问题发生重新检查迁移建议,这是不现实的期望如同DRS每5分钟运行一次。
我们已经看到了这样一个场景,一组虚拟机配置了手工模式,在资源过量使用的状态下,它变成了虚拟机的陷阱,用户不监控vCenter中的DRS选项和已经遗失的建议,这导致虚拟机本身资源匮乏,而且会更糟,它影响了群集里的多个虚拟机,因为DRS生成了迁移建议,它放弃其它合适的移动,且不能达到最佳的平衡。
禁用半自动级别与禁用手动级别
禁用DRS对虚拟机在其它操作和资源可用性上有一些负面的影响,如将主机置于维护模式或者在进入维护模式之后给虚拟机加电,同时选中注册主机,当合适的虚拟机可用它可能在该主机上开启且拥有足够的资源,但是禁用自动级别避免的之前描述的场景的发生。
半自动级别自动将虚拟机至于合适的位置,而手工模式建议将虚拟机至于合适的主机,半自动在选择位置时提供最少的运营开销,但在正常的操作期间手工级别产生大量的开销。
风险与回报
选择一个自动级别几乎是一个风险与回报的游戏,设置自动级别禁用可能影响一些操作的程序,但是当生成迁移建议时允许DRS去忽略虚拟机,并拿出群集平衡替代解决方案。设置自动级别为半自动或者手动将提供你更好的初始化位置建议和更简化的维护模式过程,但是当vCenter中DRS选项脱离监控,将产生不平衡的风险和资源匮乏情况。
虚拟化vCenter的思考
大多数管理员在有灾难发生的情况跟踪虚拟化vCenter Server。当灾难发生后,例如数据中心范围的断电,vCenter虚拟机已经注册到ESXi主机,你只需要启动该主机,然后手工开启vCenter虚拟机的电源即可。
这种方法的一个替代方法就是将vCenter置于数据存储上,在灾难发生后在随机的一台ESXi主机上注册和开启该虚拟机,这样做的工作量比vCenter Server虚拟机禁用DRS要大,但是在正常操作期间它可能提供更好的性能。
由于扩展虚拟架构和增加相关功能,vCenter在每天的运营管理中越来越重要,合适的场景中保证良好的性能比额外的功能更有必要。但两种方法都有优点。
总的来说,你应该安装您的环境和舒适度来选择自动化级别,尝试虚拟机尽可能的在DRS全自动的模式下,在虚拟机不是全自动模式之前,DRS认为这些虚拟机的迁移是为了群集负载平衡。
VM自动化级别对DRS负载平衡计算的影响
同大家认为的相反,虚拟机设置自动化级别禁用仍然会影响当前主机负载标准偏差(CHLSD)的计算(通过主机的容量CHLSD作为活动工作负载被分配),DRS不需要知道虚拟机在该阶段的自动化级别。在计算推荐建议期间,DRS忽略虚拟机设置了禁用自动化级别,并选择主机上的其它虚拟机,如果DRS必须在虚拟机设置自动化级别和手工自动级别中选择,它会选择设置虚拟机自动多过设置虚拟机手动。