负载整合策略

此规范与蓝图相关:https://blueprints.launchpad.net/watcher/+spec/basic-cloud-consolidation-integration

问题描述

Watcher 是一个框架,它为更节能的 OpenStack 操作提供支持。它通过提供对系统状态信息的访问以及可以对 OpenStack 安装执行的一组可用操作来实现这一点。它专门设计用于为实现节能操作的不同方法提供支持:因此,鼓励感兴趣方提供他们自己的节能方法并将其与 Watcher 集成。此规范侧重于将苏黎世应用科学大学 (ZHAW) ICCLab 云计算研究实验室开发的原始负载整合机制与 Watcher 集成。

实现此算法的原始代码(不在 Watcher 的上下文中)在此处发布:https://github.com/icclab/cloud-consolidation

用例

使用场景是管理员希望对资源执行负载整合,以减少未充分利用的服务器数量。管理员使用目标“VM_WORKLOAD_CONSOLIDATION”调用 Watcher。Watcher 然后执行策略“VM_WORKLOAD_CONSOLIDATION_STRATEGY”。然后它向管理员呈现一组操作。管理员然后批准推荐的行动计划 - 通常是 VM 实时迁移操作 - 并指示 Watcher 执行这些操作。

项目优先级

不相关,因为 Watcher 目前不在大型帐篷内。

提议的变更

拟议的更改是向 Watcher 添加一个新的目标和一个新的策略。新的目标是“VM_WORKLOAD_CONSOLIDATION”,新的策略是“VM_WORKLOAD_CONSOLIDATION_STRATEGY”。新的策略旨在成为一种轻量级的整合机制,可以根据经验进行调整;它也运行速度很快。该策略的目的是将集群的总体运行点移动到增加具有中等到高负载的服务器数量,并最大限度地减少具有低负载的服务器数量。这可以与服务器管理机制结合使用,以降低整体能耗。

新的策略将利用修改后的首次适应算法来实现增加的服务器 CPU 和内存利用率,最终导致释放一些可以关机的宿主机以节省能源。它包括两个阶段,一个侧重于识别高负载服务器并降低其负载,另一个侧重于识别具有备用未充分利用容量的服务器。每个阶段都作为首次适应算法运行,利用率以不同的方式排序作为每个阶段的输入。

此策略将考虑计算宿主机的 CPU 利用率和内存约束。这些上限利用率阈值可以相对于资源容量设置,因此如果需要,将提供简单的资源超售管理。此策略不会处理任何其他限制,例如实际的 VM 内存变化率、网络约束等,并且依赖于强大的实时迁移机制。

为了能够预测宿主机资源利用率,使用了以下利用率估算模型。宿主机资源利用率等于托管工作负载(VM)的资源利用率之和。考虑宿主机 H1、H2,工作负载 W 运行在 H1 上,将工作负载 W 从 H1 移动到 H2 将导致预测的资源利用率如下:H1 = H1 - W 且 H2 = H2 + W,VM 的指标来自遥测,而与宿主机相关的指标来自 nova 指标。

该策略将分两个阶段进行。第一阶段处理按其 CPU 利用率递减排序的宿主机,其 CPU 利用率超过定义的阈值,并将它们的负载(VM)卸载到第一个合适的负载较低的宿主机,该宿主机能够在不违反任何约束的情况下容纳该负载。对于所有过载的宿主机重复此宿主机卸载过程,直到预测的宿主机 CPU 利用率低于阈值。对所有过载服务器执行此操作的结果是系统中没有过载服务器。在此阶段,工作负载(VM)按其 CPU 利用率递增排序。第二阶段然后以相反的顺序遍历服务器(按其 CPU 利用率排序,因此从负载最低的服务器开始),并寻找一个最小的可用空间来容纳其剩余的工作负载,从最大的工作负载和负载最高的宿主机开始。此过程重复,直到宿主机上没有工作负载(VM)为止,此时该宿主机可以停用。这继续对下一个宿主机以相同的方式进行,直到源宿主机和目标宿主机相同。在此阶段,工作负载(VM)按其 CPU 利用率递减排序。

这两个阶段都产生一个解决方案,其执行会导致一个整合的系统,没有过载的宿主机。

此更改不会影响任何现有的策略,也不会影响 Watcher 的性能。

具体而言,新的策略将作为继承自 BaseStrategy 的名为 VMWorkloadConsolidationStrategy 的新策略实现。该实现将基于当前 Watcher 代码库中的 BasicConsolidation 示例。

备选方案

此方法的替代方案是在 Watcher 中使用不同的目标和相关的策略。

数据模型影响

无预期。

在审查了不同策略可用的信息的数据模型以及操作的数据模型后,我们认为实施此策略不需要进行任何修改。

REST API 影响

对 REST API 没有影响。

安全影响

由于该策略仅计算新的 VM 放置,而不处理放置本身,因此预计不会产生安全影响。

通知影响

预计不会有与执行特定策略相关的特定通知。(通知可能会由结果操作产生,但这些可能由 Watcher 的其他部分处理)。

其他最终用户影响

此功能不会对 API 产生任何特定影响。它会对通过 python-watcherclient 的使用方式产生一些影响,因为现在审计模板中的目标参数将提供一个新的选项。

性能影响

预计不会产生任何特定的性能影响。该策略被设计为在几秒钟内运行数百台服务器。

其他部署者影响

预计没有特定的部署影响。

开发人员影响

这不会影响在 OpenStack 上工作的其他开发人员。

实现

负责人

主要负责人

Seán Murphy <murp>

其他贡献者

Bruno Grazioli <bwg-bruno> Vojtech Cima <cima-vojtech>

工作项

可以认为此任务是原子的。它只需要开发和测试一个类。

依赖项

没有依赖项。

测试

将提供几个单元测试来测试各种场景,使用假的模拟模型(模拟模型收集器和模拟指标收集器),包括边缘场景,例如整合一个空集群、整合随机生成的集群或整合一个过载的集群。

将使用类似于基本整合策略的测试方法,包括单元测试和集成测试,其中提供特定的输入并与预期的输出进行比较。

文档影响

需要向文档添加与这个新的目标和策略相关的新内容。

参考资料

没有参考资料。

历史

没有历史记录。