赞
踩
本文介绍OpenStack Heat的实战经验,如何用Heat部署软件集群,如何通过Heat来模块化应用部署并管理软件生命周期。
作为OpenStack中的编排引擎,Heat能够出色的完成编排任务,井井有条地管理编排出来的资源。但同时,Heat也是一个出色的应用部署引擎,它提供了一套内置的框架去完成一系列复杂的应用部署任务。下面就让我们来深入了解这一框架。
Heat是OpenStack里面的原生服务,大部分的发行版都会提供这个服务,使用起来更方便。同时通过OS::Heat::SoftwareConfig和OS::Heat::SoftwareDeployment等多个资源类型的组合,可以轻易的实现一套应用部署流程。在虚拟机中的Agents会定时与Heat通信,发送脚本执行结果,方便Heat进行流程控制。有了这一套机制,Heat便拥有了对软件生命周期管理的能力。
当然这一套框架也有一些需要克服的不足:
刚才说要使用heat的这套框架,需要先创建出一个包含了os--config agents的镜像。通常我们使用diskimage-builder这个工具,下面的例子是创建出一个带os--config agents的Fedora镜像:
$ git clone https://git.openstack.org/openstack/diskimage-builder.git
$ git clone https://git.openstack.org/openstack/tripleo-image-elements.git
$ git clone https://git.openstack.org/openstack/heat-templates.git
$ export ELEMENTS_PATH=tripleo-image-elements/elements:heat-templates/hot/software-config/elements
$ disk-image-create vm fedora \
$ os-collect-config os-refresh-config os-apply-config \
$ heat-config heat-config-script \
$ -o fedora-software-config.qcow2
要通过Heat来部署应用,至少三个资源会被使用到:
1. Heat stack-create 触发部署流程,Heat分析并存储template中的数据,SoftwareConfig中的脚本会放到Heat数据库中。
2. Heat Engine去请求Nova创建相应的资源,并且在虚拟机的metadata中写入一些Heat的信息,包括Heat的API和认证信息。
3. Nova通知compute节点创建虚拟机。
4. 虚拟机第一次启动之后会调用Cloud-init,cloudinit与nova metadata service通信,获取metadata信息。
5. 然后通过不同的module去设置这些相应的配置,例如hostname,ssh等等。
6. 然后启动os-collect-config进程,它会读取/etc/os-collect-config.conf这个配置文件,里面由cloud-init配置了Heat的一些信息。读取完配置文件之后会与Heat API,以获取软件部署脚本。
7. 然后os-collect-config会调用os-refresh-config去对比新获取的脚本是否与之前的脚本不同。
8. 如果获取的脚本有更新,则调用os-apply-config去执行。
9. 执行结束之后通知heat脚本执行结果。
作者简介:
林潇俊,自2013年起做OpenStack云,为IBM OpenStack开发Service HA方案。2014年起专注于Heat项目,为内外部客户编写自动编排模版,在社区持续贡献代码,并成为Core。2015年参与OpenStack Clustering(Senlin)项目的开发,完善并推动了这个项目的发展与成熟。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。