Heat简介
Heat是一个基于模板来创建相关资源的服务,是OpenStack的核心项目之一,可以通yaml文件生成模板,通过Heat-agent组件,在OpenStack中创建相关的资源,除此之外,它还支持自有的Haut模板和亚马逊的cloudy formation格式的模板,模板支持丰富的资源类型,不仅覆盖了常用的技术架构,包括计算、网络、存储、镜像等,还覆盖了ceilometer的警报、实例等高级资源。
常用术语
Stack:指的是Heat要用到的所有设施和资源的集合。
Heat template:是以.yaml结尾的文件,用于创建stack。
Heat-api:提供rest api服务,将api请求发送给heat engine去执行。
Heat-api-cfn:支持亚马逊格式访问的Rest api。
Heat-engine:Heat的核心模块,接收API请求在OpenStack中创建资源。
Heat-cfntools、Heat-init:在镜像中安装完成虚拟实例操作任务的工具。
Heat-api-cloudwatch:监控编排服务。
Resource:底层各种服务抽象的集合,如计算、存储、网络等。
Heatt-client:调用访问其他各个组件的client工具
Heat架构原理
当用户在Horizon或命令行CLI中提交包含模板和参数输入的创建实例的请求时,Heat服务接受请求,调用Heat-API或Heat-API-cfn(程序入口),然后Heat-API或Heat-API-cfn首先验证模板的正确性,验证通过后将通过消息队列异步传输给Heat engine进行处理。
Heat engien拿到请求后,会把请求解析为各种资源类型,而每一种资源都有相关的Client于资源映射的服务对应,然后client通过发送rest的请求给其他的服务,从而获取相关资源,最终完成请求处理。
整个过程中,Heat engine的作用分为三层
1、处理Heat层面的请求,然后根据模板和输入的参数来创建Stack,这里的Stack是由各种资源集合而成
2、解析Stack里面各种资源的依赖关系和Stack的嵌套关系
3、根据解析出来的关系依次调用各种服务的Client来创建各种资源