节能策略

https://blueprints.launchpad.net/watcher/+spec/strategy-to-trigger-power-on-and-power-off-actions

本文档描述了一种新的策略,用于在 watcher 中触发“开启”和“关闭”操作,这可以为使用 watcher 进行资源优化的数据中心节省能源。

问题描述

对于拥有大量虚拟机和物理主机的数据中心,总功耗巨大。当工作负载不重时,Watcher 可以通过触发关闭一些空闲主机的请求来减少功耗,而当工作负载增加时,Watcher 将触发“开启”请求以满足服务需求。

可以通过在 Watcher 中添加以下子功能来实现这一“节能”目标

  1. 在 Watcher 中添加新的操作“开启”和“关闭”。

  2. 实现一种新的策略来生成“开启”和“关闭”操作。

本文档实现了第二项功能:实现一种新的策略来生成“开启”和“关闭”操作。

用例

作为 OpenStack 操作员,我希望我的数据中心节能高效。当工作负载较低时,关闭一些空闲主机以节省能源,当工作负载升高时,开启它们以确保 QoS。

作为开发者,我需要一种策略来触发 watcher 中的“开启”和“关闭”操作。

提议的变更

  • 添加一个新的目标 - “节能”

  • 添加一个新的策略 - “节能策略”

  • “节能策略”中的详细策略可以描述如下

    在该策略中,给出一个或计算出一个数字(min_standby_nodes_num),表示待机节点的数量。待机节点是指未被使用但仍处于开启状态以应对新的实例激增的节点。

    如果处于开启状态的未使用的节点数量大于给定的数字,则随机选择冗余节点并关闭它们;如果处于开启状态的未使用的节点数量小于给定的数字,并且存在空闲的未使用的节点(处于关闭状态),则随机选择一些节点(未使用,关闭)并开启它们。

    在该策略中,为了计算给定的数字(min_standby_nodes_num),用户必须提供两个参数

    • 一个参数(“standby_nodes_int”)是待机节点的数量。这个数字应该是整数类型并且大于零。

    • 另一个参数(“standby_used_percent”)是一个百分比数字,它描述了 number_of_standby_nodes/number_of_nodes_with_VMs 的商,其中 number_of_nodes_with_VMs 是运行 VM 的节点的数量。给定这个百分比和 number_of_nodes_with_VMs,我们可以很容易地得到 number_of_standby_nodes。 具有 VM 的节点是指在其上运行 VM 的节点。

    然后选择较大的一个作为 min_standby_nodes_num:min_standby_nodes_num = max(standby_nodes_int, number_of_standby_nodes)

备选方案

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

<li-canwei2>,<yumeng-bao>

工作项

  • 添加一个新的目标 - “节能”

  • 添加一个新的策略 - “节能策略”

  • 完成“节能策略”中的主要功能策略

    1. 完成 get_hosts_pool 函数,将所有节点分类为三种类型并统计它们的数量:nodes_with_vms、unused_poweron、unused__poweroff。

    2. 使用两个给定参数“standby_used_percent”和“standby_used_int”计算“min_standby_nodes_num”

    3. 编写 execute 函数,比较“unused_poweron 节点”的数量与“min_standby_nodes_num”,并决定应该开启/关闭哪些节点。

依赖项

https://blueprints.launchpad.net/watcher/+spec/add-power-on-off

测试

需要单元测试和功能测试。

文档影响

添加关于如何使用此策略的文档。

参考资料

历史