支持 Nova 可用区

https://blueprints.launchpad.net/sahara/+spec/support-nova-availability-zones

扩展 API 以支持指定 Nova 可用区来启动实例。

问题描述

为了获得更精细的集群拓扑,将 Nova 可用区分配给节点组可能是有益的。

用例

  • 作为最终用户,我希望 namenode 实例在常规 nova AZ 中启动,而 datanode 实例在我的高性能 nova-highperf AZ 中启动。

  • 作为最终用户,我希望节点组 A 中的实例全部位于 nova-1 AZ 中,与节点组 B 中的实例在 nova-2 中分离。

提议的变更

提议的更改已在 [1] 中实现。

它在 NodeGroup 和 NodeGroupTemplate 对象中添加了一个 availability_zone 属性。设置后,它会修改 direct 和 Heat 引擎,以强制将实例启动到正确的 AZ 中。

替代方案

数据模型影响

此更改将在 sahara 数据库中添加 availability_zone 列(node_groupsnode_group_templatestemplates_relations 表)。

此更改将伴随数据库迁移。

REST API 影响

处理节点组和节点组模板的每个 API 方法都将具有一个额外的(可选)availability_zone 参数。

其他最终用户影响

应修改 python-saharaclient 以集成此新功能。

部署者影响

需要使用以下命令迁移 DB 版本:

sahara-db-manage --config-file /etc/sahara/sahara.conf upgrade head

开发者影响

Sahara-image-elements impact

Sahara-dashboard / Horizon 影响

应修改 sahara-dashboard 以集成此新功能。

实现

负责人

主要负责人

adrien-verge

工作项

提议的更改已在 [1] 中实现。

  • 在 NodeGroup 和 NodeGroupTemplate 对象中添加一个 availability_zone 属性。

  • 当用户指定(可选)可用区时,检查其是否存在。

  • 在 direct 引擎中,将 availability_zone 参数包含在对 nova.client().servers.create() 的调用中。

  • 在 Heat 引擎中,将 availability_zone 属性添加到 sahara/resources/instance.heat 中。

依赖项

测试

  • 测试在未指定可用区的情况下创建集群。

  • 测试在指定可用区的情况下创建集群。

  • 测试在指定错误的可用区的情况下创建集群。

文档影响

需要更新文档,包括与节点组模板创建和集群创建相关的部分。

参考资料