CellsV2 - 实例组 API 数据库迁移¶
https://blueprints.launchpad.net/nova/+spec/cells-instance-groups-api-db
当前位于 Cell 数据库中的实例组表必须迁移到 API 数据库。实例组在 API 中暴露,通常在调度器中访问。
问题描述¶
用例¶
用户希望创建在部署中全局运行的实例组,而无需担心 Cell 实现。
提议的变更¶
将在 API 数据库中创建新的 instance_groups、instance_group_policy 和 instance_group_member 表。这些模型的结构将与 Nova 数据库中现有的模型密切匹配,但将不再具有软删除功能。
当前位于 db/sqalchemy/api.py 中的方法将在 objects/instance_group.py 中镜像,并修改为访问 API 数据库。 InstanceGroup 和 InstanceGroupList 对象将被修改为首先访问 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 命令,该命令将为上述表执行一次性数据迁移。
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
- 其他贡献者
无
工作项¶
为
instance_groups、instance_group_policy和instance_group_members创建新的数据库表和数据库迁移。修改
InstanceGroup和InstanceGroupList中的函数以访问 API 数据库。为受影响的表创建迁移函数,并将这些函数添加到
online_data_migrations命令中。
依赖项¶
无
测试¶
API 数据库访问函数的单元测试。
实例组表数据迁移的功能测试。
文档影响¶
文档必须提及 nova-manage 命令中的一次性数据迁移工具以及迁移的数据。
参考资料¶
历史¶
发布名称 |
描述 |
|---|---|
Newton |
引入 |