How to test Heat (by quqi99)

(http://blog.csdn.net/quqi99 )

Heat依据配置文件模板(HOT, heat orchestration template)实例化一组符合要求的虚机。也能够在其上相应用软件进行配置与编排。对支持对一个组件部署后的负载均衡进行编排。
Heat 服务包括以下重要的组件:

  •     Heat-api组件实现OpenStack天然支持的REST API。该组件通过把API请求经由AMQP传送给Heat engine来处理API请求。
  •     Heat-api-cfn组件提供兼容AWS CloudFormation的API。同一时候也会把API请求通过AMQP转发给heat engine。
  •     Heat-engine组件提供Heat最基本的协作功能。

Setting up test environment

# bzr branch lp:~openstack-charm-testers/+junk/ipv6

bzr branch lp:openstack-charm-testing
juju destroy-environment –force zhhuabj
juju switch zhhuabj && juju bootstrap
juju-deployer -c ./next.yaml -d trusty-kilo
juju add-unit neutron-gateway
#juju set neutron-api overlay-network-type=vxlan
#juju set neutron-api l2-population=false enable-l3ha=true
./configure   #edit script to use vxlan
source ./novarc
neutron net-list && neutron router-list
nova boot –image trusty –nic net-id=98e10e32-13eb-48ee-b265-4ae0e449b6e5 –flavor 2 i1
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0

nova floating-ip-create
nova floating-ip-associate i1 10.5.150.1

或者使用devstack部署。localrc文件例如以下:

使用Heat进行部署


这个ymal文件。大概是须要完毕以下的工作

  1. 创建一个私有 络
  2. 创建一个路由器
  3. 连接好外部 络和内部 络
  4. 创建两个虚拟机,绑定floating ip


Heat眼下支持两种格式的模板。一种是基于JSON格式的CFN模板;第二种是基于YAML格式的HOT模板。CFN模板主要是为了保持对AWS的兼容性。HOT模板是Heat自有的。资源类型更加丰富。更能体现出Heat特点的模板。一个典型的 HOT 模板由下列元素构成:

  • 模板版本 :必填字段,指定所相应的模板版本 ,Heat 会依据版本 进行检验。
  • 參数列表:选填,指输入參数列表。
  • 资源列表:必填,指生成的 Stack 所包括的各种资源。能够定义资源间的依赖关系,比方说生成Port。然后再用port来生成VM。
  • 输出列表:选填,指生成的 Stack 暴露出来的信息,能够用来给用户使用。也能够用来作为输入提供给其他的 Stack。


NET_ID=$(nova net-list | awk ‘/ ext_net / { print $2 }’)
SEC_ID=$(nova secgroup-list | awk ‘/ default / { print $2 }’)
heat stack-create -f first-stack.yml -P image_id=cirros -P public_net=$NET_ID -P secgroup_id=$SEC_ID First_Stack

ubuntu@zhhuabj-bastion:~/openstack-charm-testing$ heat stack-list
+————————————–+————-+—————–+———————-+
| id                                   | stack_name  | stack_status    | creation_time        |
+————————————–+————-+—————–+———————-+
| b36bdf67-bd59-401d-ab3b-f7437aa06c30 | First_Stack | CREATE_COMPLETE | 2015-12-19T10:18:49Z |
+————————————–+————-+—————–+———————-+

ubuntu@zhhuabj-bastion:~/openstack-charm-testing$ nova list
+————————————–+———+——–+————+————-+————————————+
| ID                                   | Name    | Status | Task State | Power State | Networks                           |
+————————————–+———+——–+————+————-+————————————+
| 901d5365-01b6-4254-a65f-5177d804d074 | Server1 | ACTIVE | –          | Running     | private-net=172.16.2.3, 10.5.150.4 |
| f1441f2d-4fb2-4560-b0ff-85d0cde4bc45 | Server2 | ACTIVE | –          | Running     | private-net=172.16.2.4, 10.5.150.3 |

ubuntu@juju-zhhuabj-machine-7:~$ ps -ef|grep heat
root      3656     1  0 Dec08 bsp;       00:05:40 /var/lib/juju/tools/unit-heat-0/jujud unit –data-dir /var/lib/juju –unit-name heat/0 –debug
heat     20395     1  0 Dec08 bsp;       00:00:10 /usr/bin/python /usr/bin/heat-api –config-file=/etc/heat/heat.conf –log-file=/var/log/heat/heat-api.log
heat     20414     1  0 Dec08 bsp;       00:00:10 /usr/bin/python /usr/bin/heat-api-cfn –config-file=/etc/heat/heat.conf –log-file=/var/log/heat/heat-api-cfn.log
heat     20437     1  0 Dec08 bsp;       00:19:54 /usr/bin/python /usr/bin/heat-engine –config-file=/etc/heat/heat.conf –log-file=/var/log/heat/heat-engine.log

Heat也能对软件进行配置和部署的编排

Heat 提供了多种资源类型来支持对于软件配置和部署的编排,例如以下所列:

  •     OS::Heat::CloudConfig: VM引导程序启动时的配置。由 OS::Nova::Server 引用
  •     OS::Heat::SoftwareConfig:描写叙述软件配置
  •     OS::Heat::SoftwareDeployment:运行软件部署
  •     OS::Heat::SoftwareDeploymentGroup:对一组 VM 运行软件部署
  •     OS::Heat::SoftwareComponent:针对软件的不同生命周期部分。相应描写叙述软件配置
  •     OS::Heat::StructuredConfig:和 OS::Heat::SoftwareConfig 相似。可是用 Map 来表述配置
  •     OS::Heat::StructuredDeployment:运行 OS::Heat::StructuredConfig 相应的配置
  •     OS::Heat::StructuredDeploymentsGroup:对一组 VM 运行 OS::Heat::StructuredConfig 相应的配置

Heat 对负载均衡的编排


负载均衡也是一个非常高级应用,它也是由一组不同的资源类型来实现的。资源类型包括:

  •     OS::Neutron::Pool:定义资源池,一般能够由 VM 组成
  •     OS::Neutron::PoolMember:定义资源池的成员
  •     OS::Neutron::HealthMonitor:定义健康监视器,依据自定的协议,比方 TCP 来监控资源的状态,并提供给 OS::Neutron::Pool 来调整请求分发
  •     OS::Neutron::LoadBalancer:关联资源池以定义整个负载均衡。


Heat对资源自己主动伸缩的编排
基础架构的自己主动伸缩是一个非常高级的功能。Heat 提供自己主动伸缩组 OS::Heat::AutoScalingGroup 和伸缩策略 OS::Heat::ScalingPolicy。结合基于 Ceilometer 的 OS::Ceilometer::Alarm 实现了能够依据各种条件,比方负载,进行资源自己主动伸缩的功能。


怎样使用Cirros作为样例镜像

Since cirros images don’t currently support multi-part mime user-data, it’s necessary to inject the hook script to the image and upload the modified image to glance:

https://github.com/openstack/heat-templates/tree/master/hot/software-config/example-templates/cirros-example
wget http://download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img
virt-copy-in -a cirros-0.3.2-x86_64-disk.img init.d/heat-deploy-hook /etc/init.d
virt-copy-in -a cirros-0.3.2-x86_64-disk.img rc3.d/S99-heat-deploy-hook /etc/rc3.d
glance image-create –name cirros-0.3.2-sc –disk-format=qcow2 –container-format=bare heat stack-create sc1 -f cirros-hello-world.yaml -P “image=cirros-0.3.2-sc”

或者用cirros 0.3.3:

glance image-create –name “Cirros 0.3.3” –disk-format qcow2 –container-format bare –is-public True –copy http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
nova flavor-create m1.nano 42 64 0 1

或者在devstack中直接指定cirros的版本


參考

[1]  http://docs.openstack.org/developer/heat/template_guide/index.html [2]  http://www.ibm.com/developerworks/cn/cloud/library/1511_zoupx_openstackheat/index.htm [3]  https://github.com/openstack/heat-templates/tree/master/hot/software-config/example-templates/cirros-example 文章知识点与官方知识档案匹配,可进一步学习相关知识Linux技能树Linux实用命令awk命令4211 人正在系统学习中 相关资源:strand:受Twine启发的基本叙事脚本+解释器-其它代码类资源-CSDN文库

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年5月2日
下一篇 2017年5月2日

相关推荐