支持 Nova 可用区¶
https://blueprints.launchpad.net/sahara/+spec/support-nova-availability-zones
扩展 API 以支持指定 Nova 可用区来启动实例。
问题描述¶
为了获得更精细的集群拓扑,将 Nova 可用区分配给节点组可能是有益的。
用例
作为最终用户,我希望 namenode 实例在常规
novaAZ 中启动,而 datanode 实例在我的高性能nova-highperfAZ 中启动。作为最终用户,我希望节点组 A 中的实例全部位于
nova-1AZ 中,与节点组 B 中的实例在nova-2中分离。
提议的变更¶
提议的更改已在 [1] 中实现。
它在 NodeGroup 和 NodeGroupTemplate 对象中添加了一个 availability_zone 属性。设置后,它会修改 direct 和 Heat 引擎,以强制将实例启动到正确的 AZ 中。
替代方案¶
无
数据模型影响¶
此更改将在 sahara 数据库中添加 availability_zone 列(node_groups、node_group_templates 和 templates_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 中。
依赖项¶
无
测试¶
测试在未指定可用区的情况下创建集群。
测试在指定可用区的情况下创建集群。
测试在指定错误的可用区的情况下创建集群。
文档影响¶
需要更新文档,包括与节点组模板创建和集群创建相关的部分。