基于工作负载的迁移策略¶
https://blueprints.launchpad.net/watcher/+spec/workload-balance-migration-strategy
本文档提出了一种基于虚拟机工作负载的新型 Watcher 迁移策略。当超visor的总虚拟机工作负载达到阈值时,该策略会做出决策,以平衡每个超visor的总虚拟机工作负载。
- 注意:* 虚拟机工作负载是指虚拟机实例完全使用的 CPU 数量,例如一个虚拟机
实例有 4 个 CPU,虚拟机工作负载范围是 [0.00 , 4.00]。
该策略基于所有主机具有相同的 CPU。
问题描述¶
在当前的数据中心,每个超visor上的虚拟机工作负载可能不平衡,有些极高,有些空闲,这会降低冷却效率。当超visor的 CPU 利用率达到阈值时,该策略将平衡工作负载。
用例¶
作为管理员,我希望能够触发一个审计,以将 CPU 利用率控制在某个阈值以下。
为了
平衡每个超visor上的工作负载,使其接近所有超visor的平均工作负载值。
项目优先级¶
不相关,因为 Watcher 目前不在大型帐篷内。
提议的变更¶
Watcher 已经有了其决策框架,因此该策略应该是一个新的类,它扩展了基础策略类。
分两步设置阈值:首先硬编码,然后通过模板。参见: https://blueprints.launchpad.net/watcher/+spec/optimization-threshold 阈值是启动工作负载平衡的触发值。它可以是超visor的 CPU 利用率的百分比。
创建一个新的 Python 类来扩展“BaseStrategy”类。
使用 Nova 对象框架获取超visor的空闲 CPU/内存/磁盘。
使用 Ceilometer 客户端获取 VM 的“cpu_util”来计算工作负载。这里的时间窗口是 5 分钟,将作为阈值进行配置。它使用 ceilometer 聚合 API 获取“cpu_util”的平均值。
一个算法来检测工作负载的阈值是否已达到,它将找出合适的要移动的 VM,并根据之前步骤从超visor处获取的空闲资源信息过滤可行的目标,并选择工作负载最低的一个。准备就绪时,它将使用 select-destinations-filter。它还会进行一些检查以避免极端情况,例如“乒乓”。
备选方案¶
没有替代方案
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
过去,关于从 Ceilometer 数据库查询指标存在一些性能问题。这是它很少在生产环境中使用的一个原因。由于抽象层,现在可以轻松更改基础指标存储后端,这些问题可能已经得到解决。
查询 Nova DB 获取 CPU 使用率指标时存在性能问题。
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
<edwin-zhai>
工作项¶
计算超visor总虚拟机工作负载的函数。
根据 Nova 基本指标(空闲 CPU/内存/磁盘)过滤超visor的函数。
重写 execute 函数以添加检测阈值的算法,以选择合适的要移动的 VM 并选择目标超visor,生成解决方案。
依赖项¶
测试¶
单元测试和功能测试,将使用一组假的指标来进行功能测试。
文档影响¶
一份解释如何使用这个新的优化策略的文档。
参考资料¶
无
历史¶
无