支持 Cinder 可用区¶
https://blueprints.launchpad.net/sahara/+spec/support-cinder-availability-zones
扩展 API 以支持指定创建卷的 Cinder 可用区。
问题描述¶
为了实现更精细的集群卷拓扑,将 Cinder 可用区分配给节点组可能是有益的。
用例
作为最终用户,我希望将 namenode 卷生成在常规 AZ 中,而将 datanode 卷生成在高性能
ssd-high-ioAZ 中。
提议的变更¶
它在 NodeGroup 和 NodeGroupTemplate 对象中添加了一个新的 volumes_availability_zone 属性。设置后,它将修改 direct 和 Heat 引擎,以强制将卷创建到正确的 AZ 中。
替代方案¶
无
数据模型影响¶
此更改将在 sahara 数据库中添加 volumes_availability_zone 列,位于 volumes_per_node 和 volumes_size 旁边。受影响的表是 node_groups、node_group_templates 和 templates_relations。
此更改将伴随数据库迁移。
REST API 影响¶
处理节点组和节点组模板的每个 API 方法都将具有一个额外的(可选的)volumes_availability_zone 参数,如果设置了 volumes_per_node 且不为零,则将考虑该参数。
示例
{
"name": "cluster1",
"node_groups": [
{
"name": "master",
"count": 1,
},
{
"name": "worker",
"count": 3,
"volumes_per_node": 1,
"volumes_size": 100,
"volumes_availability_zone": "ssd-high-io"
}
]
}
其他最终用户影响¶
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
工作项¶
在 NodeGroup 和 NodeGroupTemplate 对象中添加一个
volumes_availability_zone属性。当用户指定(可选的)volumes_availability zone 时,检查其是否存在。
在 direct 引擎中,将
volumes_availability_zone参数包含在对 cinder.client().volumes.create() 的调用中。在 Heat 引擎中,将
availability_zone属性添加到 sahara/resources/volume.heat 中。
依赖项¶
无
测试¶
使用指定的
volumes_availability_zone测试集群创建。使用指定的错误的
volumes_availability_zone测试集群创建。
文档影响¶
需要更新文档,在与节点组模板创建和集群创建相关的部分。
参考资料¶
无