Nova 宿主聚合在 Placement 中的镜像

https://blueprints.launchpad.net/nova/+spec/placement-mirror-host-aggregates

此规格建议确保 Placement 服务为每个 Nova 宿主聚合都存在一个 Placement 聚合记录。

问题描述

Nova 宿主聚合对于将 nova-compute 服务工作进程分组很有用。 某些调度器过滤器,例如 AggregateMultiTenancyIsolationFilter 过滤器,在评估超visor 主机是否满足某些过滤条件时,会查看存储在 Nova 宿主聚合上的元数据。

为了 替换 其中一些过滤器,并使用与 GET /allocation_candidates Placement REST API 类似的过滤器参数,我们首先需要确保将将 nova-compute 服务工作进程分组在一起的 Nova 宿主聚合在 Placement API 中表示为 Placement 聚合,并与管理 nova-compute 服务的计算节点对应的 资源提供者 记录关联。

用例

作为部署者,我希望能够为我的正常宿主聚合分组利用 Placement 聚合,因此我希望 Nova 能够自动将我所做的更改镜像到 Placement。

提议的变更

我们建议修改 Compute API 的实现,以便在将“宿主”成员添加到或从 Nova 宿主聚合中时,调用 Placement 服务(通过调度器 reportclient)。

类似地,当删除 Nova 宿主聚合时,将向 Placement 服务发出调用,以删除与该 Nova 宿主聚合相关的任何资源提供者到 Placement 聚合的关联。

我们不会为 Nova 宿主聚合的创建或更新与 Placement 服务进行通信,因为 Placement 服务不需要为聚合创建记录,直到将资源提供者与之关联为止。

将添加一个新的数据迁移命令 sync_placement_aggregates,以便使用 nova-manage 工具同步现有的 Nova 宿主聚合记录。

注意

如果在 nova-api 与 Placement 服务通信时发生故障,我们将记录警告,但不会向最终用户返回错误。 nova-manage 命令将允许稍后协调聚合信息。

备选方案

我们可以调整 nova-compute 服务工作进程来执行此同步行为,但这将需要从计算节点向上调用 Nova API 层。

我们可以使用外部代理来执行镜像/同步行为。

我们可以使用 nova-scheduler 服务中的一个周期性任务,而不是 nova-manage 命令。

数据模型影响

无。

REST API 影响

无。

安全影响

无。

通知影响

无。

其他最终用户影响

无。

性能影响

由于现在需要与 Placement 服务通信,因此 add_hostremove_host 操作会对 Compute API 产生轻微的负面影响。

其他部署者影响

nova-api 服务的 nova.conf 文件现在需要包含 Placement 服务身份验证凭据,以便 nova-api 服务可以与 Placement 通信。 我们将在 Rocky 中使缺少 Placement 身份验证凭据成为警告,并在 Stein 中使其成为必需。

此外,操作员还需要定期运行 nova-manage sync_placement_aggregates 命令,以确保 Nova 和 Placement 具有协调一致的聚合信息视图。

开发人员影响

无。

升级影响

nova-api 服务现在依赖于配置为与 Placement 服务进行身份验证,类似于 nova-compute 和 nova-conductor 服务。 我们将在 Rocky 中使其成为软故障(日志中的警告),并在 Stein 中使其成为硬故障。

实现

负责人

主要负责人

jaypipes

工作项

  • 为 nova-api 添加初始化检查,以使用 Placement 进行身份验证。 对于 Rocky,使其成为非硬故障,并记录在 Stein 中将硬故障的信息。

  • 为调度器 reportclient 添加方法,以便通过名称将聚合关联添加到资源提供者,因为 os-aggregates Compute API 使用非 UUID 宿主名参数来标识 nova-compute 服务工作进程

  • 修改 nova.compute.api.AggregateAPI.add_host_to_aggregate()remove_host_from_aggregate() 方法,以通过提供者名称调用 reportclient,以添加或删除资源提供者到聚合的关联

  • nova-manage 工具中创建新的 sync_placement_aggregates 命令

依赖项

无。

测试

正常测试以及对新的 nova-manage sync_placement_aggregates 命令进行全面的功能测试。

文档影响

应编写一个发布说明,描述镜像过程、nova-api 的 nova.conf 需要包含 Placement 凭据的要求,以及在 nova-manage 中包含 sync_placement_aggregates 命令。 此外,应更新 Placement API 参考,以描述 Nova 宿主聚合如何镜像到 Placement。

参考资料

  • 启用这些蓝图