虚拟机调度策略篇
ZStack Cube 虚拟化版虚拟机调度策略可实现数据中心内跨集群虚拟机调度。本节介绍调度策略功能及其使用方法:
概述
虚拟机调度策略(VM Scheduling Policy):为虚拟机分配主机的资源编排策略,可用于保障业务的高性能和高可用。
相关定义
虚拟机调度策略包括以下核心组件:
- 调度策略:ZStack Cube 虚拟化版提供四类调度策略,每类调度策略支持两种执行机制:
- 策略类型:支持互斥虚拟机、聚集虚拟机、虚拟机互斥主机、和虚拟机亲和主机四类调度策略。通过结合不同执行机制,实现虚拟机调度:
- 互斥虚拟机:同一个虚拟机调度组内的虚拟机尽量不要/不允许运行在同一台主机上。
- 聚集虚拟机:同一个虚拟机调度组内的虚拟机尽量/必须运行在同一台主机上。
- 虚拟机互斥主机:虚拟机调度组内的虚拟机尽量不要/不允许运行在主机调度组内的主机上。
- 虚拟机亲和主机:虚拟机调度组内的虚拟机尽量/必须运行在主机调度组内的主机上。
- 执行机制:支持强制和优先两种机制:
- 强制:虚拟机需根据策略强制分配主机,例如,若强制执行互斥虚拟机策略,则同一个虚拟机调度组内的虚拟机不允许运行在同一台主机上。若无满足策略的主机,虚拟机启动时会失败。
- 优先:虚拟机需根据策略优先分配主机,例如,若优先执行互斥虚拟机策略,则同一个虚拟机调度组内的虚拟机尽量不要运行在同一台主机上。若无满足策略的主机,可尝试在其他资源充足的主机上运行。
- 策略类型:支持互斥虚拟机、聚集虚拟机、虚拟机互斥主机、和虚拟机亲和主机四类调度策略。通过结合不同执行机制,实现虚拟机调度:
- 虚拟机调度组:虚拟机绑定调度策略的基本单位。
- 一个虚拟机仅可以加入一个虚拟机调度组。加入后,虚拟机将按照调度组所关联的调度策略进行分配主机。
- 一个虚拟机调度组可绑定一个或多个调度策略。
- 一个调度策略可绑定一个虚拟机调度组。
- 删除虚拟机调度组后,关联的虚拟机调度策略会同步删除。
- 主机调度组:主机绑定调度策略的基本单位,仅在选择虚拟机互斥主机或虚拟机亲和主机两类调度策略时使用。
- 一个主机仅可以加入一个主机调度组。加入后,主机将按照调度组所关联的调度策略进行调度。
- 一个主机调度组可绑定一个或多个调度策略。
- 一个调度策略可绑定一个主机调度组。
- 删除主机调度组后,关联的虚拟机调度策略会同步删除。
功能原理
ZStack Cube 虚拟化版支持将虚拟机加入一个虚拟机调度组,通过为该虚拟机调度组绑定调度策略实现虚拟机调度。
- 若绑定互斥虚拟机或聚集虚拟机策略,无需指定主机调度组,虚拟机按照策略及其执行机制分配主机。
- 若绑定虚拟机亲和主机或虚拟机互斥主机调度策略,需指定对应的主机调度组,虚拟机按照策略及其执行机制分配主机。
下文通过四个场景说明四类调度策略的工作原理:
场景1:假定数据中心内有三台主机Host1、Host2、和Host3。虚拟机调度组A已绑定互斥虚拟机调度策略,且虚拟机VM1和VM2已加入该调度组,并分别运行在主机Host1和Host2上。此时将虚拟机VM3加入该调度组,不同执行机制下虚拟机VM3行为如下:
- 强制机制下,虚拟机VM3遵循与组内其他虚拟机强制互斥原则:
- 若主机Host3资源充足,可正常在Host3上启动并运行。
- 若主机Host3资源不足,无法在Host3上启动。
- 优先机制下,虚拟机VM3遵循与组内其他虚拟机尽量互斥原则,优先在Host3上启动:
- 若主机Host3资源充足,可正常在Host3上启动并运行。
- 若主机Host3资源不足,VM3可尝试在其他资源充足的主机上启动。在该场景下,VM3在Host2上启动并运行。
如图 1所示:图 1. 互斥虚拟机 (强制/优先)


场景2:假定数据中心内有两台主机Host1和Host2。虚拟机调度组A已绑定聚集虚拟机调度策略,且虚拟机VM1和VM2已加入该调度组,并运行在主机Host1上。此时将虚拟机VM3加入该调度组,不同执行机制下虚拟机VM3行为如下:
- 强制机制下,虚拟机VM3遵循与组内其他虚拟机强制聚集原则:
- 若主机Host1资源充足,可正常在Host1上启动并运行。
- 若主机Host1资源不足,无法在Host1上启动。
- 优先机制下,虚拟机VM3遵循与组内其他虚拟机尽量聚集原则,优先在Host1上启动:
- 若主机Host1资源充足,可正常在Host1上启动并运行。
- 若主机Host1资源不足,VM3可尝试在其他资源充足的主机上启动。在该场景下,VM3在Host2上启动并运行。
如图 2所示:图 2. 聚集虚拟机 (强制/优先)


场景3:假定数据中心内有三台主机Host1、Host2、和Host3。虚拟机调度组A已绑定虚拟机互斥主机调度策略,且虚拟机VM1和VM2已加入该调度组,并运行在主机Host1上。主机调度组A也已绑定虚拟机互斥主机调度策略,且主机Host2和Host3上已加入该调度组,分别运行两台虚拟机。此时将虚拟机VM3加入虚拟机调度组A,不同执行机制下虚拟机VM3行为如下:
- 强制机制下,虚拟机VM3遵循与主机调度组A内的主机强制互斥原则:
- 若主机Host1资源充足,可正常在Host1上启动并运行。
- 若主机Host1资源不足,无法在Host1上启动。
- 优先机制下,虚拟机VM3遵循与主机调度组A内的主机尽量互斥原则,优先在Host1上启动:
- 若主机Host1资源充足,可正常在Host1上启动并运行。
- 若主机Host1资源不足,VM3可尝试在其他资源充足的主机上启动。在该场景下,VM3在Host2上启动并运行。
如图 3所示:图 3. 虚拟机互斥主机 (强制/优先)


场景4:假定数据中心内有三台主机Host1、Host2、和Host3。虚拟机调度组A已绑定虚拟机亲和主机调度策略,且虚拟机VM1~VM5已加入该调度组,并分别运行在主机Host2和Host3上。主机调度组A也已绑定虚拟机亲和主机调度策略,且主机Host2和Host3上已加入该调度组。此时将虚拟机VM6加入虚拟机调度组A,不同执行机制下虚拟机VM6行为如下:
- 强制机制下,虚拟机VM3遵循与主机调度组A内的主机强制聚集原则:
- 若主机Host2或Host3资源充足,可正常在Host2或Host3上启动并运行。
- 若主机Host2和Host3资源不足,无法在Host2或Host3上启动。
- 优先机制下,虚拟机VM3遵循与主机调度组A内的主机尽量聚集原则,优先在Host2或Host3上启动:
- 若主机Host2或Host3资源充足,可正常在Host2或Host3上启动并运行。
- 若主机Host2和Host3资源不足,VM6可尝试在其他资源充足的主机上启动。在该场景下,VM3在Host1上启动并运行。
如图 4所示:图 4. 虚拟机亲和主机 (强制/优先)


应用场景
您可分别在以下场景使用互斥虚拟机(强制/优先)和虚拟机亲和主机(强制/优先)功能。
- 互斥虚拟机(强制)策略应用场景举例:承载主备数据库的两台虚拟机要求部署在不同的主机上,保障业务高可用。
- 例如:用户部署两台业务虚拟机分别承载主备MySQL数据库,要求两台虚拟机必须部署在不同主机上,以降低业务宕机的风险。由于部署自动化,用户事先并不能预知哪些主机上有资源,采用互斥虚拟机(强制)策略,可选出两个不同的主机分别运行这两台虚拟机,保障业务高可用。
- 互斥虚拟机(优先)策略应用场景举例:希望Hadoop不同角色的节点尽量分散部署在不同的主机上,提高系统整体性能。
- 例如:用户部署Hadoop系统,对于namenode、datanode、jobtracker、tasktracker等不同角色,事先并不能预知总共有多少个节点,但显然部署到不同主机上效率更高。采用互斥虚拟机(优先)策略,可使Hadoop集群尽量分散部署在不同主机上,分散IO压力提高系统整体性能。
- 虚拟机亲和主机(强制)策略应用场景举例:要求业务虚拟机部署在特定CPU主频的主机上,保障业务稳定性。
- 例如:用户部署了四台虚拟机运行重要业务,要求所在主机具有很高的CPU主频。由于能满足该CPU主频要求的主机较少,虚拟机必须运行在这几台主机上。此时可采用虚拟机亲和主机(强制)策略,使虚拟机强制运行在目标主机上,保障业务稳定性。
- 虚拟机亲和主机(优先)策略应用场景举例:希望运行不同的业务虚拟机尽量部署在同一机柜中的主机上,保障业务高效互通。
- 例如:四台虚拟机运行不同业务,业务间需要频繁通信,要求主机尽可能在同一机柜中,以缩短通信延迟。此时可采用虚拟机亲和主机(优先)策略,使虚拟机尽量运行在目标主机上,保障业务高效互通。
功能优势
虚拟机调度策略具备以下优势:
- 全面&灵活:
- 提供4类调度策略和2种执行机制,定义虚拟机与虚拟机之间、虚拟机与主机之间互斥/亲和关系。各类调度策略可灵活组合,满足所有主流业务场景需求。
- 支持通过虚拟机调度组实现多个虚拟机批量绑定/解绑一个或多个调度策略,简单高效。
- 直观展示虚拟机调度状态,并提供快捷解冲突操作,方便用户实时掌握业务调度动态,并及时进行调整。
- 强大&可靠:
- 相同/不同业务之间支持互斥/亲和,实现业务隔离/高效互通,保障业务高性能和高可靠性。
- 可通过主机调度组灵活配置虚拟机业务故障域,支持单个主机部署、单个集群内批量主机部署、以及跨集群主机部署,避免单点故障,保障业务稳定性,并提高物理资源利用率。
新建互斥/聚集虚拟机调度策略
互斥/聚集虚拟机调度策略需绑定虚拟机调度组才能对组内虚拟机生效。假定您已存在多台虚拟机运行业务,可参考以下步骤使用这两类调度策略:
新建虚拟机调度组
在ZStack Cube 虚拟化版平台,点击,进入虚拟机调度组界面。点击创建虚拟机调度组操作进行新建。
可参考以下示例输入相应内容:
- 名称:设置虚拟机调度组名称,例如虚拟机调度组A1
- 简介:可选项,可留空不填
- 虚拟机:选择目标一台或多台虚拟机加入该调度组
点击确定后,即可新建成功。
新建互斥/聚集虚拟机调度策略
点击,参考以下示例输入相应内容:
- 名称:设置虚拟机调度策略名称,例如虚拟机调度策略A1
- 简介:可选项,可留空不填
- 类型:选择互斥或者聚集虚拟机
- 执行机制:支持强制和优先两种执行机制
- 强制:虚拟机需根据互斥虚拟机策略强制分配主机。同一个虚拟机调度组内的虚拟机不允许运行在同一台主机上。若无满足策略的主机,虚拟机启动时会失败
- 优先:虚拟机需根据互斥虚拟机策略优先分配主机。同一个虚拟机调度组内的虚拟机尽量不要运行在同一台主机上。若无满足策略的主机,可尝试在其他资源充足的主机上运行
- 绑定虚拟机调度组:绑定后,该调度策略将对虚拟机调度组内的所有虚拟机生效。支持绑定已有以及新建的调度组,此处选择以上新建的调度组
点击确定后,即可新建成功。虚拟机将按照调度策略进行运行。
新建虚拟机互斥/亲和主机调度策略
虚拟机互斥/亲和主机调度策略需绑定虚拟机调度组以及主机调度组才能对组内虚拟机和主机生效。假定您已添加多台主机运行多台业务虚拟机,可参考以下步骤使用这两类调度策略:
新建虚拟机调度组
在ZStack Cube 虚拟化版平台,点击,进入虚拟机调度组界面。点击新建虚拟机调度组操作进行新建。
可参考以下示例输入相应内容:
- 名称:设置虚拟机调度组名称,例如虚拟机调度组A2
- 简介:可选项,可留空不填
- 虚拟机:选择目标一台或多台虚拟机加入该调度组
点击确定后,即可新建成功。
新建主机调度组
点击,参考以下示例输入相应内容:
- 名称:设置虚拟机调度组名称,例如主机调度组A2
- 简介:可选项,可留空不填
- 主机:选择一个或多个主机加入该调度组
点击确定后,即可新建成功。
新建虚拟机互斥/亲和主机调度策略
点击,参考以下示例输入相应内容:
- 名称:设置虚拟机调度策略名称,例如虚拟机调度策略A2
- 简介:可选项,可留空不填
- 类型:选择虚拟机互斥或亲和主机
- 执行机制:支持强制和优先两种执行机制
- 强制:虚拟机需根据虚拟机互斥主机策略强制分配主机。虚拟机调度组内的虚拟机不允许运行在主机调度组内的主机上。若无满足策略的主机,虚拟机启动时会失败
- 优先:虚拟机需根据虚拟机互斥主机策略优先分配主机。虚拟机调度组内的虚拟机尽量不要运行在主机调度组内的主机上。若无满足策略的主机,可尝试在其他资源充足的主机上运行
- 绑定虚拟机调度组:绑定后,该调度策略将对虚拟机调度组内的所有虚拟机生效。支持绑定已有以及新建的调度组,此处选择以上新建的调度组
- 绑定主机调度组:绑定后,该调度策略将对主机调度组内的所有主机生效。支持绑定已有以及新建的调度组,此处选择以上新建的调度组
点击确定后,即可新建成功。虚拟机和主机将按照调度策略进行运行。
操作虚拟机调度策略及相关资源
本节以虚拟机调度策略A2、虚拟机调度组A2、以及主机调度组A2为例介绍如何对虚拟机调度策略及相关资源进行操作。
虚拟机调度策略
新建虚拟机调度策略A2后,默认处于启用状态。您可按需通过启用和停用操作控制调度策略的启停状态。调度策略的执行状态与其启停状态存在关联:
- 若调度策略已停用,则调度状态为失效。该状态下,调度策略对关联的虚拟机不生效。
- 若调度策略已启用,则调度策略可能存在以下两种执行状态:
- 正常:虚拟机调度策略所有关联的虚拟机均运行在按该调度策略分配的主机上。
- 冲突:虚拟机调度策略关联的部分虚拟机未运行在按该调度策略分配的主机上。
若需修改虚拟机调度策略A2的基本信息,例如名称、简介、执行机制,可点击该调度策略的修改配置操作,按需修改对应的信息,即可修改成功。
若您已确定不需该调度策略,可点击该调度策略的操作删除即可。
Note: 删除虚拟机调度策略后,关联的虚拟机将不再按照该调度策略进行调度。
虚拟机调度组
若您希望将更多虚拟机加入虚拟机调度组A2参与调度或将部分虚拟机从虚拟机调度组A2移除,可在虚拟机调度组主列表,点击该调度组操作栏的添加虚拟机或移除虚拟机即可。
若需修改虚拟机调度组A2的基本信息,例如名称、简介,可点击该调度组的编辑名称简介操作,按需修改对应的信息,即可修改成功。
若您已确定不需该调度组,可点击删除操作删除即可。
Note: 删除虚拟机调度组后,关联的虚拟机调度策略会同步删除,请谨慎操作。
主机调度组
若您希望将更多主机加入主机调度组A2参与调度或将部分主机从主机调度组A2移除,可在主机调度组主列表,点击该调度组操作栏的添加主机或移除主机即可。
若需修改主机调度组A2的基本信息,例如名称、简介,可点击该调度组的编辑名称简介操作,按需修改对应的信息,即可修改成功。
若您已确定不需该调度组,可点击删除操作删除即可。
Note: 删除主机调度组后,关联的虚拟机调度策略会同步删除,请谨慎操作。
