分享

openstack(G版、icehouse版本)中Heat介绍

pig2 发表于 2014-11-26 10:17:50 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 1 29984
本帖最后由 pig2 于 2014-11-26 10:26 编辑

问题导读


1.什么是heat,heat的作用是什么?
2.Heat目前能做什么?
3.为什么会产生heat?









Heat简介Heat是OpenStack的负责编排计划的主要项目。它可以基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩,负载均衡等高级特性。目前Heat自身的模板格式(HOT)正在不停的改进,同时也支持AWS CloudFormation 模板(CFN),HOT的目标是在不远的将来可以完全的替代CFN。
Heat提供了一个OpenStack的原生REST API和CloudFormation兼容的查询API。


Heat的工作原理
Heat主要是基于模板文件对应用进行管理,在模板文件中可以定义应用需要的资源,资源可以包括多种类型(CFN以及HOT支持的资源类型可能会存在一定的差别)例如IP,网络,镜像,用户,实例等。定义资源的同时也可以指定资源之间的依赖关系,例如使用云硬盘创建创建一个实例时,可以指定在创建实例时必须要创建云硬盘。

编辑完模板文件后,可以使用该模板文件创建Stack,创建的过程中Heat引擎会根据模板文件中定义的资源,调用对应的资源插件创建资源。创建完Stack之后,Heat可以管理Stack中所有资源的生命周期,例如可以删除资源,也可以通过更新模板的方式来更新Stack中资源的定义。

Heat的简单原理如下:

1.png


Heat引擎的执行逻辑大概如下:
2.png


Heat目前能做什么
Heat相对于OpenStack的其他项目(例如 Nova)而言还很年轻,受到重视应该是从H版本开始,所以它可能还存在很多的不足。下面简单的列一下在I版本中支持的特性
对HOT,CFN模板格式的支持
HOT中的资源类型在Icehouse版本中有了较大的扩充,完整列表请参考 http://docs.openstack.org/develo ... uide/openstack.html
通过Ceilometer实现自动收缩模板资源的更新Heat引擎的Scaling支持Cloud-init资源的定义对Puttet,Chef等配置工具的支持





已有(1)人评论

跳转到指定楼层
pig2 发表于 2014-11-26 10:25:03


补充:

为什么产生Heat
Openstack 对应于云计算的概念,是实现了IaaS(Infrastructure as a Service),即基础设施即服务,提供对云的基础设施运行环境的管理。有了基础设施就可以在其上部署和运行相关的应用,如web群集,paas,数据库等等相关的服务和应用。对于这些软件运行环境的构建需要进行相关的部署过程,当然部署的过程可以手工的完成,但是面对于快速构建应用的普遍需求来说,手工部署并不能满足要求,并且云环境下的群集部署对于普通的非专业的用户来说是很困难的,所以就需要实现一种自动化的通过简单定义和配置就能实现部署的云部署方式。Heat项目就是提供了一种通过模版定义的协同部署方式,实现云基础设施软件运行环境的自动化部署。

Heat项目的介绍
Heat项目其实是和Amazon的AWS CloudFormation相对应的,就是为了实现对等的功能(heat项目本身还不成熟很多对应CloudFormation的功能还没有实现)。为了更好的解释Heat的功能,我在这里就直接从aws的官网直接引用对AWS CloudFormation的介绍:“AWS CloudFormation 向开发人员和系统管理员提供了一种简便地创建和管理一批相关的 AWS 资源的方法,并通过有序且可预测的方式对其进行资源配置和更新。您可以使用AWS CloudFormation 的示例模板或自己创建模板来介绍 AWS 资源以及应用程序运行时所需的任何相关依赖项或运行时参数。您可以不需要了解 AWS 服务需要配置的顺序,也不必弄清楚让这些依赖项正常运行的细枝末节。CloudFormation 为您妥善处理。当设置完成后,您可通过按受控制、可预测的方式修改和更新 AWS 资源,您可像执行软件版本控制一样对您的 AWS 基础结构进行版本控制。您可以通过 AWS 管理控制台、CloudFormation 命令行工具或 API 对模板及其相关的资源集(称为“堆栈”)进行设置和更新“。其实读了这段话就可以对等的理解Heat项目的目的和功能了。


对于Heat的功能和实现,简单来说就是用户可以预先定义一个规定格式的任务模版,任务模版中定义了一连串的相关任务(例如用某配置开几台虚拟机,然后在其中一台中安装一个mysql服务,设定相关数据库属性,然后再配置几台虚拟机安装web服务群集等等),然后将模版交由Heat执行,就会按一定的顺序执行heat模版中定义的一连串任务。

      在Heat的代码实现中可以看到大量的aws的影子,Heat在实现自己的heat-boto时也是基于AWS boto client library,其中代码中调用的openstack api也是调用openstack的 aws 兼容api。

       Heat对于虚拟机内部操作的控制是需要利用heat-cfntools这个工具。其实质是,通过向实例镜像中注入heat-cfntools,然后实例利用heat-cfntools同heat交互,进而实现相关的对于实例内部的相关操作(如安装和配置mysql数据库等)。

      利用Heat可以实现监控预警功能,不过这个功能可能会移到G版的另一个孵化项目ceilometer中。官方还给了一个用heat部署openshift(redheat的开源paas)的具体例子,这个例子其实很有意义,这就表明利用包含heat的openstack就可以完整的实现一个,从IaaS到paas,从云基础设施硬件环境,到云应用的软件运行环境的整体的部署和运行。可以说有了heatopenstack就是一个完整的应用了。










回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条