一、glance简介
云环境下会有很多用户同时创建很多虚拟机,同时还要创建的很快,比如同一时间创建100台虚拟机最多不能超过10分钟,否则顾客体验会很差,所以云环境下需要更高效的解决方案,这就是 Image。Image 是一个模板,里面包含了基本的操作系统和其他的软件,不含有唯一标识的设置,比如MAC地址与IP地址等。对于公有云,每种操作系统都应该至少有一个image模板,而私有云不做限制。但是为了使用方便,当把公有云的image安装了自己需要的软件之后可以拍摄快照,把快照镜像作为自己的私有镜像来使用。
Glance提供 Image Service服务,功能是管理 Image,让用户能够发现、获取和保存 Image。提供 REST API (request应用接口)让用户能够查询和获取 image 的元数据(描述数据的数据)和 image 本身支持多种方式存储 image,包括普通的文件系统、Swift、Amazon S3 等对 Instance 执行 Snapshot 创建新的 image。
- registry用于记录元数据,说明了数据的属性,数据名是啥,多大,在哪
- DB database,Image 的 metadata 会保持到 database 中,默认是 MySQL。在控制节点上可以查看glance 的 database 信息
- store backend Glance 自己并不存储 image。真正的 image 是存放在 backend 中的。Glance支持多种 backend,包括:A directory on a local filesystem(这是默认配置)、GridFS、Ceph RBD、Amazon S3、Sheepdog、OpenStack BlockStorage (Cinder)、OpenStack Object Storage (Swift)、VMware ESX
1.glance架构
镜像的访问权限
- queued:没有上传image数据,只有db中的元数据
- saving:正在上传image data。
- active:当镜像上传完毕,镜像就可以被使用,此时属于active
- deactivated:表示任何非管理员用户都无权访问镜像数据,禁止下载镜像,也禁止镜像导出和镜像克隆之类的操作(请求镜像数据的操作)
- killed:表示上传过程中发生错误,并且镜像不可读
- deleted:glance已经保存了该镜像的数据,但是该镜像不在可用,处于该状态的镜像将在不久后被自动删除
- pending_delete:与delete想说,glance还没有清除镜像数据,处于该状态的镜像不可恢复
- openstack服务之间的通信是通过API进行的,API的地址通常都是endpoint;
- A client指的是任何使用glance服务器的应用程序;
- REST API指的是glance提供REST访问的API;
- Database Abstraction
Layer(DAL,数据库抽象层),同一glance和数据库之间的通信的应用程序编程接口。有了DAL,当用户有更改数据库内容的请求时,可能会因为DAL定义的限制而无法更改,提高了数据库的安全性;glance domain controller 域控制器,实现主要的中间件功能,如授权、通知、策略与数据库连接; - glance store ,用于组织glance和各种数据存储之间的交互;
- registry layer注册表层,用于通过使用单独的服务来组织域和DAL之间的安全通信的可选层。
#glance image-list 或 #ls -l // 列出所有的镜像
2.磁盘格式
raw
这是一种非结构化的磁盘映像格式
vhd
这是VHD磁盘格式,是VMware,Xen,Microsoft,VirtualBox和其他公司的虚拟机监视器使用的一种常见磁盘格式
vhdx
这是VHDX磁盘格式,它是vhd格式的增强版本,除了其他功能外,还支持更大的磁盘大小。
vmdk
许多常见的虚拟机监视器支持的另一种常见磁盘格式
vdi
VirtualBox虚拟机监视器和QEMU仿真器支持的磁盘格式
iso
光盘(例如CDROM)的数据内容的存档格式。
ploop
Virtuozzo支持并用于运行OS容器的磁盘格式
qcow2
QEMU仿真器支持的一种磁盘格式,可以动态扩展并支持“写时复制”
aki
这表明Glance中存储的是Amazon内核映像
ari
这表明Glance中存储的是Amazon ramdisk映像
ami
这表明Glance中存储的是Amazon机器映像
实验环境部署
二、创建数据库实例和数据库用户
[root@ct ~]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 26
Server version: 10.3.20-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE glance;
Query OK, 1 row affected (0.136 sec)
MariaDB [(none)]> grant all privileges on glance.* to 'glance'@'localhost' identified by 'glance_dbpass';
Query OK, 0 rows affected (0.304 sec)
MariaDB [(none)]> grant all privileges on glance.* to 'glance'@'%' identified by 'glance_dbpass';
Query OK, 0 rows affected (0.003 sec)
MariaDB [(none)]> flush privileges
三、创建用户、修改配置文件
1.创建OpenStack的Glance用户
创建用户前,需要首先执行管理员环境变量脚本(此处已经在~/.bashrc 中定义过了)可以参考之前部署**------openstack部署前篇
创建用户glance
[root@ct ~]# openstack user create --domain default --password glance_pass glance
2.将glance用户添加到service项目中,并且针对这个项目拥有admin权限
[root@ct ~]# openstack role add --project service --user glance admin /////注册glance的API,需要对service项目有admin权限
3.创建service服务
[root@ct ~]# openstack service create --name glance --description "OpenStack image" image+-------------+----------------------------------+
| Field | Value |
+---------