openstack资源使用汇总_使用OpenStack Heat部署AVE

ccb47c610a29271f8ffd21beaa698148.png

OpenStack 是一个开源的云计算软件平台,通常被当作是IaaS (infrastructure-as-a-service)的典型代表。OpenStack Heat是一个用来管理OpenStack中基础设施以及应用的整个生命周期的项目,它可以极大地简化和加速应用的部署。本文将给大家重点介绍一下OpenStack Heat,并以部署AVE应用为例,分享一些我们对OpenStack Heat的认识和实践。

作者:Dell EMC中国研发中心 林巍 于靖


0. Avamar是什么?AVE又是什么?

Avamar是戴尔易安信的一款企业级数据产品,它通过变长去重技术,可以对用户数据进行快速、高效的备份和恢复。Avamar Virtual Edition (AVE) 是Avamar的虚拟化版本,旨在为用户提供虚拟环境下的数据备份和恢复解决方案。更多关于Avamar的信息可以参考文末链接。

6f88fe23acfe7d964ee7a9347ebb6dae.png

1. Heat是什么?有什么作用?

Heat是OpenStack Orchestration计划的主要项目。它实现了一个编排引擎(orchestration engine),该引擎可以解析txt格式的模板文件(template),并调用OpenStack-native REST API 和 CloudFormation-compatible Query API来启动多个复合云应用程序。模板文件描述了云应用的相关基础设施,以设施间的关系,模板可以进行版本控制。Heat旨在将OpenStack的其他核心组件集成到单一文件的模板系统中。这些模板允许创建大部分OpenStack资源类型(例如虚机,floating IP,volume,security groups和用户)以及一些更高级的功能,例如虚机高可用性,虚机自动调整和容器嵌套等。通过提供与其他OpenStack核心项目的紧密集成,Heat会使所有OpenStack核心项目都获得更大的用户群。

2. Heat由哪些部分组成,如何工作?

Heat主要由四部分组成:Heat tool是一个CLI,它通过heat-api来调用AWS CloudFormation APIs ;heat-api 提供OpenStack-native REST API,后者将要处理的request发送给heat-engine;heat-engine的主要职责是协调模板的加载和返回事件给API调用者;heat-api-cfn组件提供了一种AWS风格的查询API,它会将API请求发送至heat-engine来处理。

bee5d84c1aae8c2b08860a4985b1f44c.png
图1 虚机资源编排示意图

3.如何写出一个Heat模板,Heat模板包含哪些内容

Heat模板全称是Heat Orchestration Template,简称HOT。 HOT模板一般以yaml格式定义,下图2展示了其标准结构组织。

86e5100c5be522210b2047f6d84ca2f0.png
图2 模板结构

以一个我们自己使用过的template为例,和大家一起看一下模板中的内容如何呈现:

0787e10ac79ff7c4f3c5a110b84c08ef.png
图3 模板主要内容

该模板主要包含四个部分:template 版本,template介绍,参数和资源。下面着重介绍下resources和parameters两个部分。图4中罗列了resources资源。

a7b63444eaa4ad41ab4fe97cc6488ff7.png
图4 resources部分中定义的资源

本例中,resources总共定义了6个部分的内容,即资源(1)-(6)。字段含义如下,如图5所示,资源(1)名称为web_secgroup,其类型为OpenStack Neutron project下的SecurityGroup。该资源的属性中properties中定义了若干规则rules,比如第一个rule的协议为icmp,其ethertype是IPv6.

5d3f5583601bbe5de35e308d7ceb4c30.png
图5 security_group部分

如图6所示,资源(2)是虚机端口部分定义了一个名为instance_port的资源,该资源类型为Neutron下的Port,资源属性中包含了network和前面介绍的security_group。

26c5e6382f67233de78983046093d565.png
图6 instance_port部分

资源(3)是avamar_init,其资源类型为Heat下的CloudConfig,其属性中有cloud_config项,该项用于组织将会在虚机第一次启动后执行的脚本。本例中我们尝试让其执行一个Python脚本来完成特定的任务。

fe7e86257acd4d04fb5a8e615c64c095.png
图7 avamar_init部分

图8,资源(4)虚机部分不但定义了虚机资源,还定义了它与其他资源之间的联系。该资源的类型为Nova下Server,虚机资源属性包含:flavor,需要事先创建,会规定诸如cpu个数,RAM大小等;image,规定用哪一个镜像来创建虚机,这里我们使用的是一个AVE的image;网络资源networks引用上面的instance_port资源;key_name为一个非对称加密的keypair,也需要launch之前就创建好;user_data引用的是上面所述的avamar_init资源,其格式为RAW.

4f9c9d3fd98afcfa603bf411a2d20c9b.png
图8 instance部分

资源(5)avamar_volume部分定义了该资源的类型为Cinder 下 Volume,该volume大小为25G. 资源(6)volume_attachment定义了该volume和对应的instance的挂载关系,该资源的类型为Cinder下VolumeAttachment。如图所示,该资源将名为avamar_volume的volume资源挂在名为avamar_instance的虚机资源下。

ec7eaacd75739dd04d540212a55bde03.png
图9 volume以及volume_attachment部分

使用这个模板我们便可以很轻松地在OpenStack上部署一个AVE环境。除了以上列出的资源类型外,Heat还支持一些其他的资源类型,比如OpenStack的类型:

https://docs.openstack.org/heat/pike/template_guide/openstack.html

以及CloudFormation 的兼容资源类型:

https://docs.openstack.org/heat/pike/template_guide/cfn.html

4. Heat模板中parameters部分

下面介绍下parameters部分,参数部分允许指定实例化模板时必须提供的输入参数。这些参数通常用于定制每一次虚机部署(例如,通过设置自定义用户名或密码)或绑定到特定资源(如特定image)。每个参数都在一个单独的嵌套块中定义,其中第一行中定义的参数名称以及附加属性。

f84dcac09388b6f29da36fc93bfb4b23.png
图10 parameter参数部分

从图10中可以看出,在parameters部分我们可以对template中用到的参数进行自定义,包括类型,标签,甚至用正则来对输入参数进行检查和限制。其中也有部分属性是optional的,用户可根据需要自行选择。如果大家对parameters这部分感兴趣的话也可以到下面的链接再展开进一步阅读:

https://docs.openstack.org/heat/latest/template_guide/hot_spec.html#parameter-groups-section

另外值得一提的是parameters的传递方式,主要有三种,分别是template内parameters部分给出,environment file给出以及WEB GUI手动填入,并且后面两种方式传递的参数会对第一种方式传递的参数进行覆盖。对于方式一,上文已经介绍的比较详细了,只需要在template内的parametes部分直接定义好,如图11。

18a05496498ab7dfbba807acd4bd075a.png
图11 template中parameters部分实例

第二种方式是在launch一个新的stack时,传入一个environment 文件,该文件中给出各个参数的值,对template中 的部分参数进行覆盖。如图12 是一个我们用过的environment 文件。方式二是我们推荐的参数传递方式,在该方式下,我们开发出template模板,并在其中的parameters部分(图11)定义好各种参数的default值。用户可以下载该模板, 再搭配自己编写的environment文件来launch新的stack。从图12例子中可以看出,编写这样一个environment文件其实是比较简单的。方式二中,template由我们提供,environment文件由用户自己编写。这样做,一方面提升了用户体验,用户可以更快速地部署AVE;另一方面也保留了个性化的选择 ,用户可以根据自己的需求,灵活地在environment文件中来设置部分参数。

ebf7c530b0f8fc1c2c267f678e345b7b.png
图12 environment文件实例

方式三是通过WEB GUI来手动填入各项参数,如图13。显然。当参数比较多的时候,这种方式的用户体验是比较差的,而且每次launch一个新的stack时都需要重新填写,所以我们还是推荐以方式二来传递参数。

444b6a3fa9d6179db3e42ba3753b5a91.png
图13 方式三手动填入parameter

5.如何使用HOT

用户可以通过两种方式来使用HOT,一个是WEB GUI,另一个是CLI。如果您的OpenStack环境安装了Horizon和Heat,当从WEB GUI上launch一个新的stack时 ,在如图14所示的Select Template这一步时,您可以导入编写好的template文件。同时也可以导入environment 文件。下一步就是如图13更改参数,就可以了。

3d442b64f73193ee502a573183ef3727.png
图 14 从GUI上使用HOT模板

等待几分钟后,stack创建完成,所有资源的拓扑图如图15,每个小圆圈代表一个资源,连线代表两个资源具有联系。从图中可以看到,位于中心部分的是虚机instance资源,它与五个资源有联系,右上角三个相同的资源是volume资源,它们和instance之间通过volume_attachment资源相连接;左下角是web_secgroup资源,它和中心的instance资源通过instance_port相连;正下方是avamar_init资源和instance相关联。

0dd6f6c3b0aad23aba48a377c36f4041.png
图15 几种资源的拓扑图

在Resources页面可以看到本次部署过程之中部署了哪些资源,如图16所示,上文提到的资源都都可以在这个列表中找到部署。

0f60bcd01d6620a5141082856c4b1876.png
图16 部署资源列表

第二种HOT使用方式是通过CLI,如果我们想launch一个stack,需要使用openstack的stackcreate 命令,其基本用法如图17所示。

fa6389fa5dfb262e041f979e9e0c4b7f.png
图17 通过CLI使用HOT的语法

如果模板没有问题的话,create成功后会有如图18的信息输出。

a6bfb24bc76c6fb40af5025bfb861333.png
图18 通过CLI使用HOT部署环境

如何用OpenStack Heat来部署AVE就给大家介绍到这里,在此感谢Yongsheng对本文提出的一些修改意见。

参考文档

1.https://www.emc.com/data-protection/avamar.htm

2.https://shop.dellemc.com/en-us/AVAMAR-PRODUCTS/Dell-EMC-Avamar-Data-Protection-Software/p/EMC-Avamar

3.https://docs.openstack.org/heat/8.0.0/developing_guides/architecture.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值