Cells 实例迁移

https://blueprints.launchpad.net/nova/+spec/cells-instance-migration

现在已经有了将实例映射到 cell 的表,需要用现有实例的数据填充它,这些实例是在创建和使用该表之前存在的。

问题描述

当 Nova 被划分为 cell 时,计算 API 需要知道与特定实例通信的 cell。 在维护此映射之前存在的实例需要将其位置添加到表中。

用例

  • 操作员希望将他们的部署划分为 cell,以实现扩展、故障域和构建原因。 在划分后,我们需要一个查找表来知道实例位于哪个分区。 该查找表需要用创建之前实例的信息填充。

项目优先级

Cells v2 是 Liberty 的优先事项。

提议的变更

‘instance_mapping’ 表将填充数据,以确定实例位于哪个 cell 中。

将添加一个新的 nova-manage 命令来查找数据库中的实例,并为它们添加一个 instance_mapping 行。 该命令将 cell 名称/uuid 作为参数,并迁移该 cell 内的实例。 cell 名称/uuid 必须对应于 cell_mapping 表中的条目,并且该行中的数据库连接信息将用于查找要映射的实例。

对于使用多个 cell 的 cells v1 设置,应该为每个 cell 添加一个新的 cell_mapping 条目,然后需要为每个 cell 运行 nova-manage 命令。

备选方案

cells v1/v2 的替代方案在此 spec 之前已经讨论过。 在 cells v2 的努力中,对于此映射要求没有替代方案。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

将向部署者提供一个新的 nova-manage 命令来触发映射的创建。 对于当前未使用 cellsv1 的部署,应该运行一次,对于当前使用 cellsv1 的部署,应该在每个 cell 中运行一次。 在当前硬编码数据库连接方法可以被删除之前,需要为每个 cell 运行此命令,或者对于当前非 cellsv1 用户迁移第一个 cell。 该时间表可能是在发布周期结束时,即 Liberty 或 M(ongoose)。

开发人员影响

实现

负责人

主要负责人

alaski

其他贡献者

工作项

  • 添加 nova-manage 命令以填充实例的 instance_mapping 数据。 该命令应一次迁移一个 cell。

  • 更新 grenade 测试作业,或添加一个新的作业,以调用新命令并验证迁移是否正常工作。

依赖项

https://blueprints.launchpad.net/nova/+spec/cells-instance-mapping

测试

测试将结合 Nova 树内功能测试和 grenade 测试,以验证升级是否有效。

文档影响

需要编写有关新 nova-manage 命令的文档。

参考资料

https://etherpad.openstack.org/p/YVR-nova-cells-v2