当前位置: 首页 > news >正文

OpenStack 学习笔记(四):编排管理与存储管理实践(上)

OpenStack管理

OpenStack编排管理-heat

heat作用

Heat是一种通过OpenStack原生REST API使用声明性模板格式编排复合云应用程序的服务,提供与其他OpenStack核心项目的紧密集成

  • Heat模板以文本文件的形式描述了云应用程序的基础架构,文本文件可供用户读写,并且支持通过版本控制工具进行管理
  • Heat模板指定资源之间的关系,使得Heat能够调用OpenStack API以正确的顺序创建用户所需的基础架构,从而完全启动用户的应用程序

heat与其他服务之间的关系

在这里插入图片描述

•Heat是位于Nova、Neutron等服务之上的一个组件,它充当了OpenStack对外接口的角色,用户不需要直接接触OpenStack其他服务,只需把对各种资源的需求写在Heat模版里,Heat就会自动调用相关服务的接口来配置资源,从而满足用户的需求。

heat架构

在这里插入图片描述

用户在Horizon中或者命令行中提交包含模板和参数输入的请求,Horizon或者命令行工具会把请求转化为REST格式的API调用,然后调用Heat-api或者是Heat-api-cfn。Heat-api 和Heat-api-cfn会验证模板的正确性,然后通过消息队列传递给Heat Engine来处理请求。

•Heat中的模板是OpenStack资源的集合(虚拟机、网络、存储、告警、浮动IP、安全组、伸缩组、嵌套stack等),通过定义模板,可以将需要创建的资源在模板中描述,用此模板可以多次创建需要的资源。

heat组件

在这里插入图片描述

Heat-api:提供REST API服务,是其他组件与Heat交互的入口,接收API请求并传送给heat-engine。

•Heat-api-cfn:提供兼容AWS CloudFormation的API,接收API请求并转发给heat-engine。

•Heat-engine:Heat的核心,主要实现任务调度、资源生命周期管理等作用,自身并不提供资源创建功能,只负责编排资源后交由其他组件去处理。

# 查看heat相关进程
[root@controller ~]# ps -e | grep heat

heat engine架构

在这里插入图片描述

heat模板

Heat模板默认编写语言-YAML语法
  • YAML Ain’t Markup Language
  • 使用缩进(一个或多个空格)排版
  • 序列项用短划线表示
  • MAP中的key-value对用冒号表示

在这里插入图片描述

heat web实验

创建实例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建网络

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

名称 Public_net
ID  6a1a6c1c-f0c9-4538-9bcf-e57d7be1c37e

创建image

在这里插入图片描述
在这里插入图片描述

ID  73ca0239-e6fd-49da-9c40-0b63606ca331

编写hot模板

把下面这段写到heat.txt文件中

heat_template_version: 2018-08-31description: Simple template to deploy a stack with two virtual machine instancesparameters:image_name_1: type: string label: Image ID description: SCOIMAGE Specify an image name for instance1 default:  73ca0239-e6fd-49da-9c40-0b63606ca331 #替换自己的image idpublic_net:type: stringlabel: Network IDdescription: SCONETWORK Network to be used for the compute instancedefault: 6a1a6c1c-f0c9-4538-9bcf-e57d7be1c37e  #替换自己的外网 idresources:mykey:type: OS::Nova::KeyPairproperties:save_private_key: truename: mykeyweb_secgroup:type: OS::Neutron::SecurityGroupproperties:rules:- protocol: tcpremote_ip_prefix: 0.0.0.0/0port_range_min: 22port_range_max: 22- protocol: icmpprivate_net:type: OS::Neutron::Netproperties: name: private_netprivate_subnet:type: OS::Neutron::Subnetproperties: network_id: { get_resource: private_net }cidr: "192.168.99.0/24"ip_version: 4vrouter:type: OS::Neutron::Routerproperties: external_gateway_info: network: { get_param: public_net }vrouter_interface:type: OS::Neutron::RouterInterfaceproperties:router_id: { get_resource: vrouter }subnet_id: { get_resource: private_subnet }instance_port:type: OS::Neutron::Portproperties:network: { get_resource: private_net }security_groups: - default- { get_resource: web_secgroup }fixed_ips:- subnet_id: { get_resource: private_subnet }floating_ip:type: OS::Neutron::FloatingIPproperties:floating_network_id: { get_param: public_net }association:type: OS::Neutron::FloatingIPAssociationproperties:floatingip_id: { get_resource: floating_ip }port_id: { get_resource: instance_port }instance1: type: OS::Nova::Server properties:image: { get_param: image_name_1 }key_name: { get_resource: mykey }flavor: Flavor_web            #替换自己创建的flavor名字networks:- port : { get_resource : instance_port }outputs:private_key:description: Private keyvalue: { get_attr: [ mykey, private_key ] }

创建堆栈:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

OpenStack存储管理实验

实验介绍

本实验主要介绍如何通过OpenStack Dashboard和OpenStack CLI两种方式创建并管理卷类型和QOS,最后介绍了卷的创建、挂载及卸载、上传卷到镜像、创建卷快照并基于卷快照创建卷、基于卷发放虚拟机实例、卷扩容、更新卷状态以及删除卷等基本操作。

实验流程

在这里插入图片描述

OpenStack Dashboard操作

卷类型和QoS管理

使用admin用户登录OpenStack Dashboard界面,在左侧导航栏,选择“管理员> 卷> 卷类型”,进入卷类型列表,单击页面右上角的“创建卷类型”
在这里插入图片描述
在这里插入图片描述

创建QoS规格

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

单击待操作的卷类型所在行“Actions”列方框中的,在操作列表中选择“管理QoS规格关联”
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

卷管理

创建卷

弹出创建卷对话框,输入如下信息:

卷名称:自定义,如“Volume_web_01”。

卷来源:选择“镜像”。

使用镜像作为源:选择镜像“Img_web”。

类型:选择卷类型“VolumeType_web”。

大小:选择1 GB。

可用分区:选择“nova”。

其他保持默认。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

挂载和卸载卷

在这里插入图片描述

弹出管理卷挂载对话框,在“连接到实例”下方选择待挂载的虚拟机实例“Instance_web_01”,单击“连接卷”

在这里插入图片描述
在这里插入图片描述

分离卷

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

上传卷到镜像

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

创建卷快照

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

卷扩容

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

基于卷快照创建卷

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

新创建的卷“Volume_web_02”相当于已恢复到卷“Volume_web_01”创建快照时的状态

基于卷发放虚拟机实例

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

编辑卷
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

若卷不是启动卷,则无法基于该卷发放虚拟机实例

更新卷状态

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

删除卷

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

删除卷“Volume_web_02”
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

配置NFS共享存储

在这里插入图片描述

nfs

[root@nfs ~]# mkdir /nfs_share
[root@nfs ~]# chmod -R 777 /nfs_share
[root@nfs ~]# yum -y install nfs-utils
[root@nfs ~]# echo "/nfs_share *(rw,sync,no_root_squash)" > /etc/exports
[root@nfs ~]# systemctl stop firewalld.service
[root@nfs ~]# systemctl restart nfs-server
[root@nfs ~]# systemctl enable nfs-server
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.
[root@nfs ~]# showmount -e localhost
Export list for localhost:
/nfs_share *

controller和compute

[root@controller ~]# mkdir /mnt/nfs_share
[root@controller ~]# chmod -R 777 /mnt/nfs_share
[root@controller ~]# showmount -e 192.168.108.12
Export list for 192.168.108.12:
/nfs_share *[root@compute ~]# mkdir /mnt/nfs_share
[root@compute ~]# chmod -R 777 /mnt/nfs_share
[root@compute ~]# showmount -e 192.168.108.12
Export list for 192.168.108.12:
/nfs_share *

controller

[root@controller ~]# vim /etc/cinder/cinder.conf
[root@controller ~]# cat /etc/cinder/nfs_shares
192.168.108.12:/nfs_share[root@controller ~]# mkdir -p /mnt/nfs_share
[root@controller ~]# chown -R cinder:cinder /mnt/nfs_share
[root@controller ~]# systemctl restart openstack-cinder-volume

在这里插入图片描述

在这里插入图片描述

创建卷类型:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

创建卷:

在这里插入图片描述

以这个镜像作为源的卷创建新的实例Instance_web_02测试调整实例大小

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

去nfs上查看共享:

[root@nfs ~]# cd /nfs_share/
[root@nfs nfs_share]# ls
volume-ade705e8-5a3a-4068-88df-54085fcc5019

OpenStack CLI操作

卷类型和QoS管理

创建卷类型“VolumeType_cli”,类型为“public”,查看卷类型列表。

[root@controller ~(keystone_admin)]# openstack volume type create --public VolumeType_cli
+-------------+--------------------------------------+
| Field       | Value                                |
+-------------+--------------------------------------+
| description | None                                 |
| id          | 0c2ff54a-a523-49ee-a0ec-435e0566fade |
| is_public   | True                                 |
| name        | VolumeType_cli                       |
+-------------+--------------------------------------+[root@controller ~(keystone_admin)]# openstack volume type list
+--------------------------------------+----------------+-----------+
| ID                                   | Name           | Is Public |
+--------------------------------------+----------------+-----------+
| 0c2ff54a-a523-49ee-a0ec-435e0566fade | VolumeType_cli | True      |
| f36391a9-b59a-4eb1-accb-47993e1a3cb2 | nfs            | True      |
| 4b1f7c20-54f3-4f5d-a091-69abb6617242 | VolumeType_web | True      |
| 0482e78e-b20f-425a-a39d-1d741dc40e42 | iscsi          | True      |
| f6ddddce-66a9-42a6-ac35-ff7b28ce63af | __DEFAULT__    | True      |
+--------------------------------------+----------------+-----------+

创建卷QoS“QoS_cli”,使用对象为“back-end”,查看卷QoS列表

[root@controller ~(keystone_admin)]# openstack volume qos create --consume back-end QoS_cli
+------------+--------------------------------------+
| Field      | Value                                |
+------------+--------------------------------------+
| consumer   | back-end                             |
| id         | b16ae662-e771-4fe1-b4a9-1a7a2d70c840 |
| name       | QoS_cli                              |
| properties |                                      |
+------------+--------------------------------------+[root@controller ~(keystone_admin)]# openstack volume qos list
+--------------------------------------+---------+----------+----------------+------------+
| ID                                   | Name    | Consumer | Associations   | Properties |
+--------------------------------------+---------+----------+----------------+------------+
| b16ae662-e771-4fe1-b4a9-1a7a2d70c840 | QoS_cli | back-end |                |            |
| 4efffda0-efaf-4849-a39b-ae4c2f29ac4b | QoS_web | back-end | VolumeType_web |            |
+--------------------------------------+---------+----------+----------------+------------+

将卷QoS“QoS_cli”分配给卷类型“VolumeType_cli”,查看卷QoS分配的卷类型

[root@controller ~(keystone_admin)]# openstack volume qos associate QoS_cli VolumeType_cli
[root@controller ~(keystone_admin)]#
[root@controller ~(keystone_admin)]#
[root@controller ~(keystone_admin)]# openstack volume qos show QoS_cli
+--------------+--------------------------------------+
| Field        | Value                                |
+--------------+--------------------------------------+
| associations | VolumeType_cli                       |
| consumer     | back-end                             |
| id           | b16ae662-e771-4fe1-b4a9-1a7a2d70c840 |
| name         | QoS_cli                              |
| properties   |                                      |
+--------------+--------------------------------------+

卷管理

创建卷

创建卷“Volume_cli_01”,配置如下:

卷名称:“Volume_web_01”。

卷来源:“Img_cli”。

类型:“VolumeType_web”。

大小:1 GB。

可用分区:“nova”。

启动卷。查看卷列表

[root@controller ~(keystone_admin)]# openstack volume create --image Img_cli --type VolumeType_cli --size 1 --availability-zone nova --bootable Volume_cli_01
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| attachments         | []                                   |
| availability_zone   | nova                                 |
| bootable            | false                                |
| consistencygroup_id | None                                 |
| created_at          | 2025-09-18T11:47:27.268013           |
| description         | None                                 |
| encrypted           | False                                |
| id                  | 81cb8d61-d64a-4fc5-a385-6efb869c7925 |
| migration_status    | None                                 |
| multiattach         | False                                |
| name                | Volume_cli_01                        |
| properties          |                                      |
| replication_status  | None                                 |
| size                | 1                                    |
| snapshot_id         | None                                 |
| source_volid        | None                                 |
| status              | creating                             |
| type                | VolumeType_cli                       |
| updated_at          | None                                 |
| user_id             | af704f24dc304c09a051f19c9f4d4efe     |
+---------------------+--------------------------------------+[root@controller ~(keystone_admin)]# openstack volume list
+--------------------------------------+---------------+-----------+------+------------------------------------------+
| ID                                   | Name          | Status    | Size | Attached to                              |
+--------------------------------------+---------------+-----------+------+------------------------------------------+
| 81cb8d61-d64a-4fc5-a385-6efb869c7925 | Volume_cli_01 | available |    1 |                                          |
| ade705e8-5a3a-4068-88df-54085fcc5019 | Volume_web    | in-use    |    1 | Attached to Instance_web_02 on /dev/vda  |
+--------------------------------------+---------------+-----------+------+------------------------------------------+
http://www.dtcms.com/a/389894.html

相关文章:

  • list_for_each_entry 详解
  • Perplexity AI Agent原生浏览器Comet
  • 颈椎按摩器方案开发,智能按摩仪方案设计
  • Sui 学习日志 1
  • 六、Java—IO流
  • 数据库 事务隔离级别 深入理解数据库事务隔离级别:脏读、不可重复读、幻读与串行化
  • 从“纸面”到“人本”:劳务合同管理的数字化蜕变
  • ARM架构——学习时钟7.2
  • VS Code 调试配置详解:占位符与语言差异
  • 锁 相关知识总结
  • caffeine 发生缓存内容被修改以及解决方案-深度克隆
  • rust编写web服务06-JWT身份认证
  • 《怪猎:荒野》制作人:PC平台对日本游戏非常重要
  • 大模型训练框架(二)FSDP
  • MySQL——系统数据库、常用工具
  • 蓝桥杯题目讲解_Python(转载)
  • 性能测试监控实践(九):性能测试时,监控docker微服务资源利用率和分析
  • TCP,UDP和ICMP
  • Python语法学习篇(七)【py3】
  • 网页控制鼠标 查看鼠标位置
  • PIT 定时器
  • 【题解】 [蓝桥杯 2019 省 B] 特别数的和
  • 数字隔离器,串口通信的安全之“芯”
  • 山脊图 (Ridgeline Plot):使用 joypy 库,优雅地比较多组数据的分布情况
  • Linux 进程同步以及僵尸进程等知识介绍
  • Python进程和线程
  • 斐波那契数列的递归和迭代实现
  • 时空预测论文分享:规则知识 因果预测框架 面向研究的评估体系 主动适应漂移
  • 《WINDOWS 环境下32位汇编语言程序设计》第18章 ODBC数据库编程
  • linux入门(3)