扩展计算模型属性

https://blueprints.launchpad.net/watcher/+spec/extend-compute-model-attributes

问题描述

在创建解决方案以实现目标时,Watcher 通常会构建一个由多个操作组成的操作计划,这些操作主要基于服务器迁移。这些计算出的迁移并非总是从 Nova 的角度来看是有效的,因为它们可能违反为服务器定义的一些放置约束,而 Watcher 不知情。可以改进 Watcher,以便在其模型中包含额外的约束和其他计算资源,以帮助策略构建操作计划。此蓝图建议扩展 Watcher 的计算模型,以包含额外的计算属性。

用例

作为 OpenStack 管理员,我希望优化我的部署,在计算节点之间平衡工作负载,而不会破坏与其实例相关的任何放置约束,例如:flavor 额外规格、亲和性和反亲和性策略、固定可用区等。

提议的变更

此蓝图建议扩展当前的计算模型,以包含 GET /servers/detail API 新版本中可用的其他实例属性

  • 固定可用区:定义实例应固定到可用区,并且在迁移它时也应考虑此参数。

  • Flavor 额外规格:规格可以包括硬件要求、资源分配策略和自定义放置规则,这些规则会影响服务器在基础设施上的调度方式。

注意

如果配置的计算 API 微版本低于必需的版本,这些新属性将保持为空,策略将无法利用此提议的扩展。

注意

新属性的数量受 Watcher 支持的计算 API 微版本的最大值限制。由于 Watcher 的 Nova Collector 实现基于使用 python-novaclient 库,因此支持的计算 API 微版本的最大值与库支持的版本相同(目前为 2.96)。可以通过更改实现以使用 openstacksdk 库来克服此限制,但这不在本规范的范围内。

将在 collector 中添加一个新的配置选项,以允许管理员启用或禁用这些附加属性的收集。默认情况下设置为禁用,但可以在后续周期中更改,一旦策略开始使用其内容。

API 微版本将增加,以支持在 GET /v1/data_model 调用响应体中添加的新属性。

备选方案

为了改进主机选择,Watcher 可以依赖 Nova 提供服务器迁移的有效目标主机列表。但是,Nova 中不存在此 API,并且实现它也可能具有挑战性,因为 Nova 的 Scheduler 尚未准备好回答这些请求,而无需预留相关的资源。这种替代方案还会增加对 Nova 的 API 请求数量,因为某些策略在选择最佳解决方案之前会计算多个解决方案。

数据模型影响

将向 Instance Element 类添加新字段,它是 Nova 集群数据模型的一个元素。 新字段如下

"server_pinned_az": wfields.StringField(),
"flavor_extra_specs": wfields.JsonField(),

REST API 影响

一个新的 API 微版本将向 GET /v1/data_model 方法的响应体中引入新的属性。 响应 json 中的新属性示例

{
    "server_pinned_az": "us-west",
    "server_flavor_extra_specs": {
      "hw:watchdog_action": "reset",
    },
    ....

安全影响

无。

通知影响

无。

其他最终用户影响

无。

性能影响

  • 预计影响很小,因为内存模型将被扩展并具有更多的字段。一个配置选项将允许用户禁用扩展的 Instance 字段,从而将影响降至几乎为零。

其他部署者影响

无。

开发人员影响

在开发新的策略或更新现有策略时,开发人员可以在选择服务器迁移的目标主机时考虑这些新的约束。

实现

负责人

主要负责人

dviroel

工作项

  • 扩展 Nova 集群数据模型以包含新的 Instance 属性。

  • 更新 Nova Collector 以解析额外的 Instance 属性。

  • 扩展 Nova 通知处理以更新新的属性。

依赖项

某些属性仅在 Nova 的 API 新版本中可用

  • Flavor 额外规格:微版本 2.47(已支持)

  • 固定可用区:微版本 2.96

为了获得更好的结果,预计部署的 Nova 支持上述大部分微版本。

测试

单元测试将涵盖从 Nova 服务收集数据时的不同场景。一个新的 tempest 测试将创建具有附加属性的实例,并验证这些信息是否可用在新模型中。将修改一个 devstack 作业以启用附加属性收集并运行新的 tempest 测试。

文档影响

更新提及模型收集器的文档,以包含有关较新微版本中附加属性的信息。

参考资料

无。

历史

修订版

发布名称

描述

2025.2

引入