image.png
    Heat是位于NOVA、Neutron等服务之上的一个组件,用户只需把各种资源需求写在Heat模板里,创建所需资源、运行指定程序、完成指定配置,Heat就会自动调用相关服务来配置资源。预先定义一个规格模式的任务模板,完成OpenStack中资源及应用的自动部署。模板中定义了一连串的相关任务。用于批量部署环境,大大节省运维人员时间。
    主要负责在OpenStack进行业务发放的时候,完成自动化的部署和管理,可以减轻管理员的业务量,可以快速的业务弹性伸缩。
    Heat架构:
    image.png

    • Heat-api:类似于nova-api,实现OpenStack原生支持的REST-API,提供rest api服务,是其他组件与heat的入口,接收API请求传送给Heat-engine
    • Heat-api-cfn:提供兼容AWS的API,接收API请求传送给Heat-engine
    • Heat-engine:Heat的核心,执行模板内容,最终完成影响系统的创建和部署,实现任务调度,只负责编排资源后交由其他组件处理,并把执行结果返回给API调用者。

    工作流程:
    1. 用户在 Horizon 中或者命令行中提交包含模板和参数输入的请求
    2. Horizon 或者命令行工具会将接收到的请求转化为 REST 格式的 API 调用 Heat-api 或者是 Heat-api-cfn。
    3. Heat-api 和 Heat-api-cfn 会验证模板的正确性,然后通过 AMQP 异步传递给 Heat Engine 来处理请求。
    4. Heat Engine 接收到请求后,会把请求解析为各种类型的资源,每种资源都对应 OpenStack 其它的服务客户端,然后通过发送 REST 的请求给其它服务。
    5. Heat Engine 在这里的作用分为三层: 第一层处理 Heat 层面的请求,就是根据模板和输入参数来创建 Stack,这里的 Stack 是由各种资源组合而成。 第二层解析 Stack 里各种资源的依赖关系,Stack 和嵌套 Stack 的关系。第三层就是根据解析出来的关系,依次调用各种服务客户段来创建各种资源。
    Heat模板:
    Template,模板是OpenStack资源的集合,通过定义模板,在模板中描述需要创建的资源,使用模板可多次创建需要的资源。
    Heat 模板全称为heat orchestration template,简称为HOT。默认编写语言YAML(包括多种语言),还有JSON(Java)语言。
    Heat的CFN模板,主要是为了兼容AWS亚马逊云。
    CFN和HOT模板结构类似,只是具体的编写参数等有细微差别。