OpenStack Orchestration service (编排服务Heat)

  1. 云栖社区>
  2. 博客>
  3. 正文

OpenStack Orchestration service (编排服务Heat)

技术小阿哥 2017-11-27 16:14:00 浏览1051
展开阅读全文

官方文档安装在 on the controller node,本文档使用新的节点安装


Heat编排服务组件

The Orchestration service consists of the following components:

heat command-line client

A CLI that communicates with the heat-api to run AWS CloudFormation APIs. End developers can directly use the Orchestration REST API.

heat-api component

An OpenStack-native REST API that processes API requests by sending them to the heat-engine over Remote Procedure Call (RPC).

heat-api-cfn component

An AWS Query API that is compatible with AWS CloudFormation. It processes API requests by sending them to the heat-engine over RPC.

heat-engine

Orchestrates the launching of templates and provides events back to the API consumer.

1、创建数据库

root@storage:~# apt-get install mysql-server -y

root@storage:~# mysql -uroot -p

Enter password:  zoomtech

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 5

Server version: 5.7.13-0ubuntu0.16.04.2 (Ubuntu)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE DATABASE heat;

Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'localhost' \

    -> IDENTIFIED BY 'heat';

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'%' \

    -> IDENTIFIED BY 'heat';

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> exit

Bye

2、向Keystone注册Heat服务

安装OpenStack和Keystone客户端

root@storage:~# apt install python-openstackclient -y

root@storage:~# apt-get install python-keystoneclient -y

准备admin用户身份环境

root@storage:~# cat admin-openrc

export OS_PROJECT_DOMAIN_NAME=default

export OS_USER_DOMAIN_NAME=default

export OS_PROJECT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=nova

export OS_AUTH_URL=http://controller:35357/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

root@storage:~# . admin-openrc

创建heat用户

root@storage:~# openstack user create --domain default --password-prompt heat

User Password:   heat

Repeat User Password:   heat

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | 336cb165bf0b49668e2d63d31d5d0501 |

| enabled   | True                             |

| id        | 748b4048ebb94b16920205f85e420f5f |

| name      | heat                             |

+-----------+----------------------------------+


给heat添加admin角色

root@storage:~# openstack role add --project service --user heat admin


root@storage:~# vim /etc/heat/heat.conf

[DEFAULT]

#In the [DEFAULT] and [oslo_messaging_rabbit] sections, configure RabbitMQ message queue access:

rpc_backend = rabbit

auth_strategy = keystone

#In the [DEFAULT] section, configure the metadata and wait condition URLs:

heat_metadata_server_url = http://controller:8000

heat_waitcondition_server_url = http://controller:8000/v1/waitcondition

#In the [DEFAULT] section, configure the stack domain and administrative credentials:

stack_domain_admin = heat_domain_admin

stack_domain_admin_password = $heat_passwd

stack_user_domain_name = heat

#Replace heat with the password you chose for the heat_domain_admin user in the Identity service.

[oslo_messaging_rabbit]

rabbit_host = controller

rabbit_userid = openstack

rabbit_password = nova

#Replace nova with the password you chose for the openstack account in RabbitMQ.

[database]

connection = mysql+pymysql://heat:heat@localhost/heat

#Replace heat with the password you chose for the Orchestration database.

#Replace mysql node "storage"  with your heat node.

#In the [keystone_authtoken], [trustee], [clients_keystone], and [ec2authtoken] sections, configure Identity service access:

[keystone_authtoken]

auth_uri = http://controller:5000

auth_url = http://controller:35357

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = heat

password = heat

#Replace heat with the password you chose for the heat user in the Identity service.

[trustee]

auth_plugin = password

auth_url = http://controller:35357

username = heat

password = heat

user_domain_name = default

[clients_keystone]

auth_uri = http://controller:35357

[ec2authtoken]

auth_uri = http://controller:5000

同步数据库

root@storage:/etc/heat# su -s /bin/sh -c "heat-manage db_sync" heat

启动服务

root@storage:~# service heat-api restart

root@storage:~# service heat-api-cfn restart

root@storage:~# service heat-engine restart


服务验证:三个服务的进程

root@storage:~# ps -A | grep heat

 48413 ?        00:00:02 heat-engine

 48733 ?        00:00:00 heat-api

 48786 ?        00:00:01 heat-api-cfn

root@storage:~# ps aux | grep heat

root      39866  0.0  0.0  16192  6208 pts/1    S+   Aug17   0:00 mysql -u heat -p -h localhost

heat      48265  1.3  0.1 166400 127360 ?       Ss   11:04   0:03 /usr/bin/python /usr/bin/heat-engine --config-file=/etc/heat/heat.conf --log-file=/var/log

/heat/heat-engine.log

heat      48628  0.0  0.1 158080 102528 ?       S    11:05   0:00 /usr/bin/python /usr/bin/heat-api --config-file=/etc/heat/heat.conf --log-file=/var/log/he

at/heat-api.log

heat      48786  0.5  0.1 157568 117376 ?       Ss   11:05   0:01 /usr/bin/python /usr/bin/heat-api-cfn --config-file=/etc/heat/heat.conf --log-file=/var/lo

g/heat/heat-api-cfn.log


查询端口:heat服务工作在8000和8004端口

root@storage:~# netstat -ltunp | grep 8000

tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      46595/python   

root@storage:~# netstat -ltunp | grep 8004

tcp        0      0 0.0.0.0:8004            0.0.0.0:*               LISTEN      46434/python


查询heat日志,确认服务是否正常运行

root@storage:~# tail -n 10  /var/log/heat/heat-api.log

2016-08-18 09:59:02.676 46434 INFO heat.common.wsgi [-] Started child 46575

2016-08-18 09:59:02.678 46575 INFO eventlet.wsgi.server [-] (46575) wsgi starting up on http://0.0.0.0:8004

2016-08-18 09:59:02.678 46434 INFO heat.common.wsgi [-] Started child 46576

2016-08-18 09:59:02.681 46576 INFO eventlet.wsgi.server [-] (46576) wsgi starting up on http://0.0.0.0:8004

2016-08-18 09:59:02.681 46434 INFO heat.common.wsgi [-] Started child 46577

2016-08-18 09:59:02.683 46577 INFO eventlet.wsgi.server [-] (46577) wsgi starting up on http://0.0.0.0:8004

2016-08-18 09:59:02.684 46434 INFO heat.common.wsgi [-] Started child 46578

2016-08-18 09:59:02.685 46578 INFO eventlet.wsgi.server [-] (46578) wsgi starting up on http://0.0.0.0:8004

2016-08-18 09:59:02.686 46434 INFO heat.common.wsgi [-] Started child 46579

2016-08-18 09:59:02.688 46579 INFO eventlet.wsgi.server [-] (46579) wsgi starting up on http://0.0.0.0:8004

root@storage:~# tail -n 10  /var/log/heat/heat-api-cfn.log

2016-08-17 16:54:14.711 38821 WARNING keystonemiddleware.auth_token [-] Configuring admin URI using auth fragments was deprecated in the Kilo release, and will be removed in the N release, use 'identity_uri\ instead.

2016-08-17 16:54:14.711 38821 WARNING keystonemiddleware.auth_token [-] Configuring auth_uri to point to the public identity endpoint is required; clients may not be able to authenticate against an admin endpoint

2016-08-17 16:54:14.715 38821 INFO heat.api.cfn [-] Starting Heat API on 0.0.0.0:8000

2016-08-17 16:54:14.716 38821 WARNING oslo_reports.guru_meditation_report [-] Guru mediation now registers SIGUSR1 and SIGUSR2 by default for backward compatibility. SIGUSR1 will no longer be registered in a future release, so please use SIGUSR2 to generate reports.

2016-08-17 16:54:14.717 38821 INFO heat.common.wsgi [-] Starting single process server

2016-08-17 16:54:14.717 38821 INFO eventlet.wsgi.server [-] (38821) wsgi starting up on http://0.0.0.0:8000

2016-08-18 09:59:12.225 46595 INFO heat.api.cfn [-] Starting Heat API on 0.0.0.0:8000

2016-08-18 09:59:12.226 46595 WARNING oslo_reports.guru_meditation_report [-] Guru mediation now registers SIGUSR1 and SIGUSR2 by default for backward compatibility. SIGUSR1 will no longer be registered in a future release, so please use SIGUSR2 to generate reports.

2016-08-18 09:59:12.227 46595 INFO heat.common.wsgi [-] Starting single process server

2016-08-18 09:59:12.227 46595 INFO eventlet.wsgi.server [-] (46595) wsgi starting up on http://0.0.0.0:8000

root@storage:~# tail /var/log/heat/heat-engine.log

2016-08-18 11:06:54.708 48290 INFO heat.engine.service [req-dab8b000-ec0e-4208-986f-568d79ba2b44 - - - - -] Service 6e4d85aa-a0c4-42ba-93bb-f3e045f7c876 is updated

2016-08-18 11:06:54.708 48322 INFO heat.engine.service [req-4f6ad467-2e80-407f-92ab-7adc888f8b13 - - - - -] Service 1b9829bd-6540-4534-a0cb-8ff78578e0b9 is updated

2016-08-18 11:06:54.708 48329 INFO heat.engine.service [req-3f5e440b-e308-46bc-9e82-450d189cba53 - - - - -] Service 012ed06b-cc22-49d5-ad8f-27ad3af38691 is updated

2016-08-18 11:06:54.708 48352 INFO heat.engine.service [req-111f1975-3118-44db-93f2-1ad828342e07 - - - - -] Service 61883e3c-265d-495b-8f36-241d6909e491 is updated

2016-08-18 11:06:54.708 48284 INFO heat.engine.service [req-2d808b38-8746-409f-8c1f-225ee5fdf83f - - - - -] Service b531cd81-60d3-4841-a738-e74f49ca1606 is updated

2016-08-18 11:06:54.753 48317 INFO heat.engine.service [req-324789aa-0dee-4f76-ad80-a360155d49fe - - - - -] Service a37cf2eb-d7af-4d2d-97bc-0d71858cf318 is updated

2016-08-18 11:06:54.783 48345 INFO heat.engine.service [req-b5607198-0b7d-4138-adfa-6cef3ae673b4 - - - - -] Service 36b200b2-2eaf-42e7-8910-315728834961 is updated

2016-08-18 11:06:54.783 48298 INFO heat.engine.service [req-37254e4e-e2bc-4a2e-8437-e982167ac392 - - - - -] Service 85978b07-1189-4ded-a46a-6a9fc23f386f is updated

2016-08-18 11:06:54.783 48422 INFO heat.engine.service [req-79b2feb3-657c-4ec1-8add-5d8b15910e1b - - - - -] Service 37a99d3b-6309-42de-b922-152673f8caa6 is updated

2016-08-18 11:06:54.783 48299 INFO heat.engine.service [req-77caaa7d-f263-448a-b4a6-060da57cc81a - - - - -] Service a9a02e13-bc27-4d9e-833a-6e1cbb68fcdb is updated

 

root@storage:~/heat# openstack service list

+----------------------------------+----------+----------------+

| ID                               | Name     | Type           |

+----------------------------------+----------+----------------+

| 3cb8f6fab4e54437a4ecf4007a9fc0a6 | cinder   | volume         |

| 440962187ab0433b9e27ac8b7f181a7c | keystone | identity       |

| 87cee2d4b1d445c9bc8715b1b83bbf6c | nova     | compute        |

| b4020f307f8a47bab274adb8d00dd954 | cinderv2 | volumev2       |

| c6960664ab714336b085a59fff5ae68a | swift    | object-store   |

| c75b4f0612f64e31bf4710ee1cbb0066 | glance   | image          |

| cfb21a0c73704d51848ce208bce62cec | heat-cfn | cloudformation |

| d4de96e73e184eaea59776fd549900d3 | neutron  | network        |

| ef1a98be03014f3a86e891569b074d16 | heat     | orchestration  |

| f95cb598c8134a6a834f7d435c433985 | swift    | object-store   |

+----------------------------------+----------+----------------+

root@storage:~#

root@storage:~# openstack orchestration service list


创建template

root@storage:~/heat# cat demo-template.yml

heat_template_version: 2015-10-15

description: Launch a basic instance with CirrOS image using the

             ``m1.tiny`` flavor, ``mykey`` key,  and one network.

parameters:

  NetID:

    type: string

    description: Network ID to use for the instance.

resources:

  server:

    type: OS::Nova::Server

    properties:

      image: { get_parm: Image_ID }

      flavor: zoom.medium

      key_name: key

      networks:

      - network: { get_param: Net_ID }

outputs:

  instance_name:

    description: Name of the instance.

    value: { get_attr: [ server, name ] }

  instance_ip:

    description: IP address of the instance.

    value: { get_attr: [ server, first_address ] }


创建Stack

root@storage:~/heat# vim create_stack.sh

IMAGE_ID=$(nova image-list | awk '/ Ubuntu16.04-server-clouding-powerpc64el / { print $2 }')

NET_ID=$(openstack network list | awk '/ private / { print $2 }')

heat stack-create Ubuntu-clouding.stack -f demo-template.yml \

-P Image_ID=$IMAGE_ID \

-P Net_ID=$NET_ID \

#openstack stack create -t demo-template.yml --parameter "NetID=$NET_ID" --parameter "Net_ID=$IMAGE_ID" stack




本文转自 OpenStack2015 51CTO博客,原文链接:http://blog.51cto.com/andyliu/1840112,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
技术小阿哥
+ 关注