基于工作负载的迁移策略

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>

工作项

  1. 计算超visor总虚拟机工作负载的函数。

  2. 根据 Nova 基本指标(空闲 CPU/内存/磁盘)过滤超visor的函数。

  3. 重写 execute 函数以添加检测阈值的算法,以选择合适的要移动的 VM 并选择目标超visor,生成解决方案。

依赖项

测试

单元测试和功能测试,将使用一组假的指标来进行功能测试。

文档影响

一份解释如何使用这个新的优化策略的文档。

参考资料

历史