Skip to main content
开放网络的先行者与推动者—星融元
加入我们技术支持(Support)  TEL:(+86)4000989811
OpenStack、Heat

OpenStack Heat部署方案

OpenStack Heat部署方案

1 目标与物理网络拓扑

本文主要描述在现有OpenStack(stein版)平台上如何扩展安装Heat功能组件,实验应用程序的编排服务。
涉及物理拓扑,如图1所示:

物理网络拓扑(OpenStack)
图1:物理网络拓扑

部署过程中所涉及到的设备、接口及管理网口的IP地址如下表所示:

设备名称接口IP地址备注
Switch-A管理口192.168.0.254三层交换机
Switch-B管理口192.168.4.1二层交换机
Switch-C管理口192.168.5.1二层交换机
Server-1管理口192.168.4.144/
Server-2管理口192.168.5.145/

表1:设备管理口列表

2 硬件与软件环境

部署环境中涉及到的硬件和软件如表2和表3所示:

名称型号硬件指标数量备注
服务器1、至少8G内存
2、磁盘不少于500G

2
Server-1 计算节点+存储节点
Server-2 控制节点+网络节点

表2:硬件环境

名称型号硬件指标数量备注
服务器1、至少8G内存
2、磁盘不少于500G

2
Server-1 计算节点+存储节点
Server-2 控制节点+网络节点

表3:软件环境

3 Heat简介

Heat是OpenStack提供的自动编排功能的组件,基于描述性的模板,来编排复合云应用程序。

Heat向开发人员和系统管理员提供了一种简便地创建和管理一批相关的OpenStack资源的方法,并通过有序且可预测的方式对其进行资源配置和更新。

用户可以使用Heat的示例模板或自己创建模板来描述OpenStack资源以及应用程序运行时所需的任何相关依赖项或运行时参数。

当设置完成后,可通过按授权控制、可预测的方式修改和更新OpenStack资源。

用户可以通过OpenStack管理控制台、Heat命令行工具或 API对模板及其相关的资源集进行设置和更新。

引入Heat的两个原因:

  • 更快更有效的管理OpenStack的资源

云平台系统在相对比较稳定的情况下,管理成本逐渐变成首要的解决问题。云上自动化能力是一个云平台的刚需,可以有效降低维护难度。

OpenStack原生提供命令行和 Horizon 来供用户管理资源。然而命令行和在浏览器中的点击,费时费力,不利于用户使用 Openstack 来进行大批量的管理以支撑 IT 应用。 Heat在这种情况下应运而生。
Heat 采用了模板方式来设计或者定义编排。为方便用户使用,Heat 还提供了大量的模板例子,使用户能够方便地得到想要的编排。

  • 更小的研发成本

引入Heat,对于不了解OpenStack的研发者来说,可以更快的接入现有的业务系统。开发者更关心的是授权认证和对虚拟资源的增删改,而对于底层的状态并不用太多了解。

下面是Heat的架构组成:

Heat架构图
图2: Heat架构图

主要概念:

  • heat command-line client

CLI通过与heat-api通信,来调用API实现相关功能。终端开发者可以直接使用编排REST API。

  • heat-api

一个OpenStack本地REST API,通过RPC,把发送来的API请求在发给heat-engine。

heat-api,提供了原生restful API对外使用。用户对API的调用,由heat-api处理之后,最终通过RPC传递给Heat-engine来进一步处理。

  • heat-api-cfn

组件提供了Amazon style 的查询 API,可以完全兼容于Amazon的CloudFormation,对于API的请求同heat-api类似,处理之后,通过RPC传递给heat-engine进一步处理。

  • heat-engine

heat-engine是heat中的核心模块,处理主要的逻辑业务。

此模块提供heat最主要的功能,执行模板内容,最终完成应用系统的创建和部署,并把执行结果返回给API调用者。 当 heat engine拿到请求后,会把请求解析为各种类型的资源,每种资源都对应OpenStack其它的服务客户端,然后通过发送 REST 的请求给其它服务。通过如此的解析和协作,最终完成请求的处理。

  • heat-cfntools

独立于heat组件的一个的工具,需要单独下载。这个工具用来完成虚拟机实例内部的操作配置任务。在创建虚拟机镜像时,需要在镜像中安装heat-cfntools工具。

4 安装步骤

[root@controller ~] 表示在控制节点上执行
[root@compute ~] 表示在计算节点上执行

4.1 创建数据库

  • 创建数据库并授权:
[root@controller ~]# mysql -uroot -p
MariaDB [(none)]> CREATE DATABASE heat;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON heat.* TO ‘heat’@'localhost' \
  IDENTIFIED BY 'HEAT_PASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON heat.* TO ‘heat’@'%' \
  IDENTIFIED BY 'HEAT_PASS';

注:帐号密码根据自己的情况修改

4.2 创建openstack用户、服务凭据、API端点:

在安装和配置Heat之前,必须创建用户、服务凭据和API端点:

[root@controller ~]# . admin-openrc
[root@controller ~]# openstack user create --domain default --password-prompt heat
[root@controller ~]# openstack role add --project service --user heat admin
[root@controller ~]# openstack service create --name heat \
  --description "Orchestration" orchestration
[root@controller ~]# openstack service create --name heat-cfn \
  --description "Orchestration"  cloudformation 
[root@controller ~]#openstack endpoint create --region RegionOne \
  orchestration public http://controller:8004/v1/%\(tenant_id\)s
[root@controller ~]#openstack endpoint create --region RegionOne \
  orchestration internal http://controller:8004/v1/%\(tenant_id\)s 
[root@controller ~]# openstack endpoint create --region RegionOne \
  orchestration admin http://controller:8004/v1/%\(tenant_id\)s

为了管理栈,在认证服务中Orchestration需要更多信息。为了添加这些信息,完成下面的步骤

  • 创建 heat域
[root@controller ~]#openstack domain create --description "Stack projects and users" heat
  • 在heat域中创建heat_domain_admin用户
[root@controller ~]# openstack user create --domain heat --password-prompt heat_domain_admin
  • 添加admin角色到heat域中的heat_domain_admin用户:
[root@controller ~]# openstack role add --domain heat --user heat_domain_admin admin
  • 创建 heat_stack_owner角色:
[root@controller ~]# openstack role create heat_stack_owner

添加heat_stack_owner角色到demo项目和用户:

[root@controller ~]# openstack role add --project demo --user demo heat_stack_owner
  • 创建 heat_stack_user 角色:
[root@controller ~]# openstack role create heat_stack_user

4.3 在controller节点上安装Heat服务

  • 安装软件包:
[root@controller ~]# yum install openstack-heat-api openstack-heat-api-cfn \
  openstack-heat-engine python-heatclient
  • 编辑配置文件 /etc/heat/heat.conf
[root@controller ~]#vi /etc/heat/heat.conf
[DEFAULT]
transport_url = rabbit://openstack:tera123@controller
heat_metadata_server_url = http://controller:8000
heat_waitcondition_server_url = http://controller:8000/v1/waitcondition
stack_domain_admin = heat_domain_admin
stack_domain_admin_password = heat_domain_admin
stack_user_domain_name = heat
verbose = False
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = tera123
[database]
connection = mysql+pymysql://heat:HEAT_PASS@controller/heat
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:5000
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = heat
password = heat
[trustee]
auth_plugin = password
auth_url = http://controller:5000
username = heat
password = heat
user_domain_id = default
[clients_keystone]
auth_uri = http://controller:5000
[ec2authtoken]
auth_uri = http://controller:5000/v3
  • 同步数据库
[root@controller ~]# su -s /bin/sh -c "heat-manage db_sync" heat
  • 启动 Orchestration 服务并将其设置为随系统启动
[root@controller ~]# systemctl enable openstack-heat-api.service \
  openstack-heat-api-cfn.service openstack-heat-engine.service
[root@controller ~]# systemctl start openstack-heat-api.service \
  openstack-heat-api-cfn.service openstack-heat-engine.service

5 结果验证

  • 列出服务组件,以验证是否成功启动并注册了每个进程

[root@controller ~]#source admin-openrc.sh
[root@controller ~]#heat service-list

6 参考资料

https://docs.openstack.org/heat/stein/install/install-rdo.html

如有其它问题,请填写右侧需求表单联系我们。www.asterfusion.com

A-lab-部署验证

对星融元产品感兴趣?

立即联系!

返回顶部

© 星融元数据技术(苏州)有限公司 苏ICP备17070048号-2