APP下载

基于openstack 的heat 编排

2020-11-05余程莉高琪琪梁栋茂

科学技术创新 2020年32期
关键词:镜像列表组件

余程莉 高琪琪 梁栋茂 刘 佳 刘 飘

(无锡职业技术学院,江苏 无锡214100)

介绍:Heat 编排服务是在openstack 的Havana 版本中首次发行的,heat 最初是对openstack 的计算,镜像,网络,快存储进行编排而开发的,在后期又加入ceilometer 的警报、Sahara 的集群和trove 的实例等高级资源。Heat 是通过简单的模板引擎文本文件(HOT 模板),为用户创建所需资源的并运行的应用程序。在最新的openstack 版本中,heat 是一个成熟度较高的openstack 组件,其社区中支持的资源目录也在增加,因此heat是一个具有很大吸引力的openstack 项目。基于heat 项目,我们可以更好地指定和描述openstack 之间的资源关系,使api 之间可以有序的进行通讯,同时我们还可以通过heat 模板来实现自动收缩、负载均衡等特性。

1 Heat 服务是由一下组件组成的

1.1 heat-api:这是一个openstack 原生的API,其主要作用是将API 请求通过高级消息队列协议发送给Heat engine 组件。

1.2 heat-api-cfn: 这 是 一 个 兼 容 亚 马 逊 AWS CloudFormation 的API 接口,也是通过高级消息队列进行信息传递到Heat engine 组件的。

图1 Heat 服务组件工作流程图

1.3 heat-engine 主要是一个核心组件,命令行或Horizon 中提交的面板参数等输入请求在heat-api 和heat-api-cfn 中转换为REST 格式的API,在分别进行校验模板的正确性,然后通过AMQP 异步传递至传值heat-engine 来进行请求的处理。在heat-engine 拿到请求时,会把请求拆分成相应的资源类型创建stack,然后再通过stack 到相应的资源中新型获取和解析,然后然后进行服务创建。

1.4 heat CLI 工具:用于heat-api 进行数据通信的命令行接口。

2 Heat 服务组件工作流程图(见图1)

3 Heat 模板栈的介绍

Openstack 是可以通过云管理员和用户独立的创建各种云资源,其中包括各种资源组,如实例、存储卷、网络、虚拟路由、负载均衡等。在多种资源的调度情况下,通过命令行或Horizon 的方式进行调度是不便于管理的,因此heat 模板栈应运而生。

在openstack 的编排中,物理服务器变为虚拟的vm 或者容器,管理这些vm 或容器也是编排的一部分,及编排的重点。在vm 或容器的配置也是iaas 编排的一部分,除此之外提供paas、saas 编排的框架也是iaas 编排的一部分。

图2 Heat 模板栈

heat 模板栈采用了当今界内流行的模板方式进行模板的定义和设计,有两种方式,分别是基于json 格式的Cfn 模板、基于yaml 格式的hot 模板。Hot 模板是heat 自带的基础模板,cfn 则是为了保证对aws 的兼容性而设置的模板。在这里我们具体讲下hot 模板。在一个典型的hot 模板中常常包含以下元素,模板版本、参数列表、资源列表和输出列表。他们的作用分别如下,通过模板版本来进行校验,通过参数输入列表来确认学需要的资源类型,资源列表来指定生成stack 所包含的各种资源,输出列表可以让用户使用也可以作为输入所提供给其他的stack 资源。

4 Heat 模板的编写图(图3)

5 Heat 模板编写介绍

如图3 所示,其便是一个完整的编排模板,这段代码分析如下。

heat_template_version: 2016-04-08

在这里指定了hot 文件所使用的模板语法版本,它是由2016-04-08map_merge 支持的完整yaml 文档的hot 模板。

descripton

在这里进行模板的详细介绍,便于其他工作者快速入手。

parameter

此处声明了输入列表,每个参数都了给定名称及描述,认值都是可选的。例如镜像或网络都可通过镜像名称、像id、子网名称、子网id 进行设置。

resources

这里我们可以看成heat 所需要创建或修改的资料,在heat组件的hot 文件中的resources 代码段就是定义组件的地方。

outputs

在将栈部署到heat engine 中后可以将其全部属性导出。

图3 Heat 模板的编写图

6 Heat 研究实施

6.1 准备阶段

在安装和配置heat 编排服务组件之前,首先创建数据库、服务证书和API endpoint,Heat 编排服务组件需要在keystone身份认证服务中添加信息。

6.1.1 创建数据库

在myasql 中创建heat 数据库。

修改heat 数据库的访问权限。

6.1.2 使用命令行加admin user 的环境变量

6.1.3 创建Orchestration 服务凭据

创建Heat 用户

将admin role 角色赋予Heat user 用户和service project 租户

创建heat 服务和heat-cfn service entity 的服务凭证

6.1.4 创建Heat 编排服务组件的API endpoint

6.1.5 Orchestration 服务添加Identity 信息,用以操作stack

创建Heat 域

创建heat_domain_admin 用户,管理Heat 域中的project 和user

将admin role 赋予heat_domain_admin 用户

创建heat_stack_owner role 角色

将heat_stack_owner role 角色赋予demo project 租户 和user 用户,使demo user 用户可以管理Stack

创建heat_stack_user role 角色

6.2 安装和配置Heat 编排服务组件

6.2.1 安装heat 软件包

6.2.2 编辑/etc/heat/heat.conf 文件

keystone_authtoken]

auth_host = 128.6.3.103

auth_port = 35357

auth_protocol = http

auth_uri = http://128.6.3.103:5000/v2.0

admin_tenant_name = service

admin_user = heat

admin_password = tsj

[ec2_authtoken]

auth_uri = http://128.6.3.103:5000/v2.0

keystone_ec2_uri = http://128.6.3.103:5000/v2.0/ec2tokens

6.2.3 编辑/etc/heat/api-paste.ini 文件

[filter:authtoken]

paste.filter_factory = heat.common.auth_token:filter_factory

auth_host = 128.6.3.103

auth_port = 35357

auth_protocol = http

admin_tenant_name = service

admin_user = heat

admin_password = tsj

6.2.4 同步信息到Prchestration 数据库7 结论

Heat 是一个基于openstack 的编排服务,它是一个提高openstack 运行效率的服务,它可以简化运维的操作难度,加强openstack 平台的效率,同时它可以快速的在openstack 平台上对其组件进行扩容负载均衡等操作。Heat 还是一个用清楚的权限划分。它可以对penstack 的镜像,计算,网络,快存储进行编排而开发的,在后期又加入Sahara 的集群、eilometer 的警报和trove的实例等高级资源。Heat 是一个高效的运维工具。

猜你喜欢

镜像列表组件
无人机智能巡检在光伏电站组件诊断中的应用
Kistler全新的Kitimer2.0系统组件:使安全气囊和安全带测试更加可靠和高效
学习运用列表法
镜像
一种嵌入式软件组件更新方法的研究与实现
扩列吧
镜像
列表画树状图各有所长
镜像
组件软件工程的开发研究