实现资源组的批量创建和更新

https://blueprints.launchpad.net/heat/+spec/resource-group-batching

添加批量创建和更新资源的可能性

问题描述

Heat 不允许批量创建资源,这可能导致云端对于大量资源产生不必要的负载。特别是,在创建/更新虚拟机和轮询这些资源的状态时,nova 可能会在部署大型 Sahara 集群时失败,因为存在大量的并发请求。此外,Heat 部分支持批量更新(仅针对 AutoscalingGroup)

提议的变更

将类似于 rolling_update 结构的 batching_policy 属性添加到 ResourceGroup

res_group:
  type: OS::Heat:ResourceGroup
   properties:
     count: 5
     ...
     batching_policy:
       min_in_service:1
       max_batch_size: 2
       pause_time: 10
       batch_actions: ['CREATE', 'UPDATE_EXISTING', 'UPDATE']
    ...

Where

max_batch_sizepause_timemin_in_service 的含义与 rolling_update 中的含义相同,但有一个例外:min_in_service 不能应用于批量 CREATE 操作,将被忽略。

batch_actions 是将被批处理的操作,可用的选项如下

CREATE:在堆栈创建时应用批量处理,即每次批量添加 max_batch_size 个资源,除了最后一个批量外。

UPDATE_EXISTING:与滚动更新完全相同

UPDATE:常规更新,现有资源将批量更新,如果需要添加一些资源,它们也将批量添加。

建议将旧的 rolling_update 属性弃用,以支持 batching_policy,因为 batching_policy 具有更广泛的可能性,包括旧的 rolling_update。

备选方案

实现

负责人

ochuprykov

里程碑

完成目标里程碑

Liberty-2

工作项

  • 将 batching_policy 属性添加到 ResourceGroup

  • 添加必要的单元测试和功能测试用例

依赖项