使用热引擎的两步伸缩¶
https://blueprints.launchpad.net/sahara/+spec/heat-two-step-scaling
在集群伸缩失败的情况下,Heat 会回滚删除所有资源。之后,Sahara 会要求 Heat 再次删除它们。“回滚删除后再删除”这一步看起来是不必要的。
问题描述¶
当使用热引擎的 Sahara 伸缩集群失败时,会发生以下场景
用户请求集群伸缩
Sahara 运行 Hadoop 节点退役
Sahara 运行 heat stack 更新,同时包含添加和删除的节点,并且 rollback_on_failure=True
如果第 3 步失败,Heat 会将所有已删除的节点恢复回来
Sahara 运行 heat stack 更新,仅包含删除的节点
Heat 再次删除节点
因此,在第 4 步,Heat 恢复了稍后将被删除的节点。
提议的变更¶
可以通过两步伸缩来避免上述问题。因此,最终流程如下
用户请求集群伸缩
Sahara 运行 Hadoop 节点退役
Sahara 运行 heat stack 更新,仅包含删除的资源,并且 rollback_on_failure=False
Sahara 运行 heat stack 更新,包含新的资源,并且 rollback_on_failure=True
在这种情况下,如果第 4 步失败,Heat 将不会尝试恢复已删除的资源。它将回滚到资源已经删除的状态。
如果第 3 步失败,Sahara 无法做任何事情。集群将被移动到“Error”状态。
替代方案¶
无需采取任何措施,因为问题仅出现在伸缩失败的罕见情况下。
数据模型影响¶
无。
REST API 影响¶
无。
其他最终用户影响¶
无。
部署者影响¶
无。
开发者影响¶
无。
Sahara-image-elements impact¶
无。
Sahara-dashboard / Horizon 影响¶
无。
实现¶
负责人¶
- 主要负责人
alazarev (Andrew Lazarev)
- 其他贡献者
无
工作项¶
执行更改
测试集群伸缩失败时的回滚是否按预期工作
依赖项¶
无。
测试¶
手动。
文档影响¶
无。
参考资料¶
无。