CellsV2 - 实例组 API 数据库迁移

https://blueprints.launchpad.net/nova/+spec/cells-instance-groups-api-db

当前位于 Cell 数据库中的实例组表必须迁移到 API 数据库。实例组在 API 中暴露,通常在调度器中访问。

问题描述

用例

用户希望创建在部署中全局运行的实例组,而无需担心 Cell 实现。

提议的变更

将在 API 数据库中创建新的 instance_groupsinstance_group_policyinstance_group_member 表。这些模型的结构将与 Nova 数据库中现有的模型密切匹配,但将不再具有软删除功能。

当前位于 db/sqalchemy/api.py 中的方法将在 objects/instance_group.py 中镜像,并修改为访问 API 数据库。 InstanceGroupInstanceGroupList 对象将被修改为首先访问 API 数据库,并在必要时回退到 Cell 数据库。 InstanceGroupList 方法将从 Cell 和 API 数据库中返回项目。这些方法将根据需要从返回的项目中删除重复项。

将创建迁移方法,以将数据从 Cell 数据库移动到 API 数据库。这些迁移方法将添加到 online_data_migrations nova manage 命令中。

Flavor 表已经迁移到 API 数据库。通常,拟议的更改将遵循这些方法。[1]

备选方案

由于此表将随着实例数量的增加而增长,因此可以将 instance_group_member 表保留在 Cell 数据库中。

InstanceGroup 函数 get_hosts 访问 instance_group_member 表。它在调度器和计算管理器中用于亲和性。由于此表通常在 Cell 之外访问,因此将其放置在 Cell 数据库中可能会带来更大的性能影响。

数据模型影响

由于将在 API 数据库中创建许多新表,因此数据模型会产生重大影响。由于数据模型与当前位于 Cell 数据库中的数据模型基本相同,因此已省略数据模型。

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

部署者必须了解 nova-manage 命令,该命令将为上述表执行一次性数据迁移。

开发人员影响

实现

负责人

主要负责人

<mjdoffma@us.ibm.com>

其他贡献者

工作项

  • instance_groupsinstance_group_policyinstance_group_members 创建新的数据库表和数据库迁移。

  • 修改 InstanceGroupInstanceGroupList 中的函数以访问 API 数据库。

  • 为受影响的表创建迁移函数,并将这些函数添加到 online_data_migrations 命令中。

依赖项

测试

  • API 数据库访问函数的单元测试。

  • 实例组表数据迁移的功能测试。

文档影响

文档必须提及 nova-manage 命令中的一次性数据迁移工具以及迁移的数据。

参考资料

历史

修订

发布名称

描述

Newton

引入