虚拟机调度策略
概述
虚拟机调度策略(VM Scheduling Policy):为虚拟机分配物理机的资源编排策略,可用于保障业务的高性能和高可用。
相关定义
虚拟机调度策略包括以下核心组件:
- 调度策略: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行为如下:
- 强制机制下,虚拟机VM6遵循与物理机调度组A内的物理机强制聚集原则:
- 若物理机Host2或Host3资源充足,可正常在Host2或Host3上启动并运行。
- 若物理机Host2和Host3资源不足,无法在Host2或Host3上启动。
- 优先机制下,虚拟机VM6遵循与物理机调度组A内的物理机尽量聚集原则,优先在Host2或Host3上启动:
- 若物理机Host2或Host3资源充足,可正常在Host2或Host3上启动并运行。
- 若物理机Host2和Host3资源不足,VM6可尝试在其他资源充足的物理机上启动。在该场景下,VM6在Host1上启动并运行。
如图 4所示:图 4. 虚拟机亲和物理机(强制/优先)


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


创建聚集虚拟机调度策略
可参考以下示例输入相应内容:
- 名称:设置虚拟机调度策略名称
- 简介:可选项,可留空不填
- 类型:选择聚集虚拟机
- 执行机制:支持强制和优先两种执行机制
- 强制:虚拟机需根据聚集虚拟机策略强制分配物理机。同一个虚拟机调度组内的虚拟机必须运行在同一台物理机上。若无满足策略的物理机,虚拟机启动时会失败
- 优先:虚拟机需根据聚集虚拟机策略优先分配物理机。同一个虚拟机调度组内的虚拟机尽量运行在同一台物理机上。若无满足策略的物理机,可尝试在其他资源充足的物理机上运行
- 绑定虚拟机调度组:绑定后,该调度策略将对虚拟机调度组内的所有虚拟机生效。支持以下两种绑定方式:
- 已有:绑定已有的虚拟机调度组
- 虚拟机调度组:选择一个已有的虚拟机调度组
- 新建:新建一个虚拟机调度组
- 虚拟机调度组名称:设置虚拟机调度组名称
- 虚拟机:选择一个或多个虚拟机加入该调度组
- 已有:绑定已有的虚拟机调度组
如图 6所示:图 6. 创建聚集虚拟机调度策略


创建虚拟机互斥物理机调度策略
可参考以下示例输入相应内容:
- 名称:设置虚拟机调度策略名称
- 简介:可选项,可留空不填
- 类型:选择虚拟机互斥物理机
- 执行机制:支持强制和优先两种执行机制
- 强制:虚拟机需根据虚拟机互斥物理机策略强制分配物理机。虚拟机调度组内的虚拟机不允许运行在物理机调度组内的物理机上。若无满足策略的物理机,虚拟机启动时会失败
- 优先:虚拟机需根据虚拟机互斥物理机策略优先分配物理机。虚拟机调度组内的虚拟机尽量不要运行在物理机调度组内的物理机上。若无满足策略的物理机,可尝试在其他资源充足的物理机上运行
- 绑定虚拟机调度组:绑定后,该调度策略将对虚拟机调度组内的所有虚拟机生效。支持以下两种绑定方式:
- 已有:绑定已有的虚拟机调度组
- 虚拟机调度组:选择一个已有的虚拟机调度组
- 新建:新建一个虚拟机调度组
- 虚拟机调度组名称:设置虚拟机调度组名称
- 虚拟机:选择一个或多个虚拟机加入该调度组
- 已有:绑定已有的虚拟机调度组
- 绑定物理机调度组:绑定后,该调度策略将对物理机调度组内的所有物理机生效。支持以下两种绑定方式:
- 已有:绑定已有的物理机调度组
- 物理机调度组:选择一个已有的物理机调度组
- 新建:新建一个物理机调度组
- 物理机调度组名称:设置物理机调度组名称
- 物理机:选择一个或多个物理机加入该调度组
- 已有:绑定已有的物理机调度组
如图 7所示:图 7. 创建虚拟机互斥物理机调度策略


创建虚拟机亲和物理机调度策略
可参考以下示例输入相应内容:
- 名称:设置虚拟机调度策略名称
- 简介:可选项,可留空不填
- 类型:选择虚拟机亲和物理机
- 执行机制:支持强制和优先两种执行机制
- 强制:虚拟机需根据虚拟机亲和物理机策略强制分配物理机。虚拟机调度组内的虚拟机必须运行在物理机调度组内的物理机上。若无满足策略的物理机,虚拟机启动时会失败
- 优先:虚拟机需根据虚拟机亲和物理机策略优先分配物理机。虚拟机调度组内的虚拟机尽量运行在物理机调度组内的物理机上。若无满足策略的物理机,可尝试在其他资源充足的物理机上运行
- 绑定虚拟机调度组:绑定后,该调度策略将对虚拟机调度组内的所有虚拟机生效。支持以下两种绑定方式:
- 已有:绑定已有的虚拟机调度组
- 虚拟机调度组:选择一个已有的虚拟机调度组
- 新建:新建一个虚拟机调度组
- 虚拟机调度组名称:设置虚拟机调度组名称
- 虚拟机:选择一个或多个虚拟机加入该调度组
- 已有:绑定已有的虚拟机调度组
- 绑定物理机调度组:绑定后,该调度策略将对物理机调度组内的所有物理机生效。支持以下两种绑定方式:
- 已有:绑定已有的物理机调度组
- 物理机调度组:选择一个已有的物理机调度组
- 新建:新建一个物理机调度组
- 物理机调度组名称:设置物理机调度组名称
- 物理机:选择一个或多个物理机加入该调度组
- 已有:绑定已有的物理机调度组
如图 8所示:图 8. 创建虚拟机亲和物理机调度策略


管理虚拟机调度策略
在ZStack Cube 双引擎版主菜单,点击,进入虚拟机调度策略界面。
虚拟机调度策略支持以下操作:
| 操作 | 描述 |
|---|---|
| 创建虚拟机调度策略 | 创建一个新的虚拟机调度策略。 |
| 编辑虚拟机调度策略 | 编辑虚拟机调度策略的名称、简介信息。 |
| 启用虚拟机调度策略 | 启用处于停用状态的虚拟机调度策略。 |
| 停用虚拟机调度策略 | 停用处于启用状态的虚拟机调度策略。 Note: 停用虚拟机调度策略后,关联的虚拟机将不再按照该调度策略进行调度。 |
| 修改执行机制 | 修改虚拟机调度策略的执行机制,支持修改成强制或优先两种机制。 |
| 删除虚拟机调度策略 | 删除虚拟机调度策略。 Note: 删除虚拟机调度策略后,关联的虚拟机将不再按照该调度策略进行调度。 |
虚拟机调度组
创建虚拟机调度组
在ZStack Cube 双引擎版主菜单,点击,进入虚拟机调度组界面。点击创建虚拟机调度组,弹出创建虚拟机调度组界面。
可参考以下示例输入相应内容:
- 名称:设置虚拟机调度组名称
- 简介:可选项,可留空不填
- 虚拟机:选择一个或多个虚拟机加入该调度组
如图 10所示:图 9. 创建虚拟机调度组


管理虚拟机调度组
在ZStack Cube 双引擎版主菜单,点击,进入虚拟机调度组界面。
虚拟机调度组支持以下操作:
| 操作 | 描述 |
|---|---|
| 创建虚拟机调度组 | 创建一个新的虚拟机调度组。 |
| 编辑虚拟机调度组 | 编辑虚拟机调度组的名称、简介信息。 |
| 添加虚拟机 | 将一个或多个虚拟机添加至虚拟机调度组。添加完成后,虚拟机调度组绑定的调度策略将对新添加的虚拟机生效。 |
| 移除虚拟机 | 将一个或多个虚拟机从虚拟机调度组移除。移除后的虚拟机将不再按照虚拟机调度组关联的调度策略进行调度。 |
| 删除虚拟机调度组 | 删除虚拟机调度组。 Note: 删除虚拟机调度组后,关联的虚拟机调度策略会同步删除。 |
物理机调度组
创建物理机调度组
在ZStack Cube 双引擎版主菜单,点击,进入物理机调度组界面。点击创建物理机调度组,弹出创建物理机调度组界面。
可参考以下示例输入相应内容:
- 名称:设置虚拟机调度组名称
- 简介:可选项,可留空不填
- 物理机:选择一个或多个物理机加入该调度组
如图 10所示:图 10. 创建物理机调度组


管理物理机调度组
在ZStack Cube 双引擎版主菜单,点击,进入物理机调度组界面。
物理机调度组支持以下操作:
| 操作 | 描述 |
|---|---|
| 创建物理机调度组 | 创建一个新的物理机调度组。 |
| 编辑物理机调度组 | 编辑物理机调度组的名称、简介信息。 |
| 添加物理机 | 将一个或多个物理机添加至物理机调度组。 Note: 添加完成后,物理机调度组绑定的调度策略将对新添加的物理机生效。 |
| 移除物理机 | 将一个或多个物理机从物理机调度组移除。 Note: 移除物理机后,关联的虚拟机调度策略执行时可能会产生冲突。 |
| 删除物理机调度组 | 删除选中的物理机调度组。 Note: 删除物理机调度组后,关联的虚拟机调度策略会同步删除。 |
