一、基础理论篇
1. Glance的概述
Glance是为虚拟机的创建提供镜像的服务,我们基于Openstack是构建基本的IaaS平台对外提供虚拟机,而虚拟机在创建时必须为选择需要安装的操作系统,Glance服务就是为该选择提供不同的操作系统镜像。
2. Glance 主要组件
2.1 glance-api
glance-api用于接收镜像API的调用,如镜像发现、恢复以及存储等。作为一个后
台进程, glance-apl对外提供 REST API接口,响应用户发起的镜像查询、获取和存储的
调用。
2.2 glance-registi
glance-registry用于存储、处理和恢复镜像的元数据,元数据包括镜像的大小和类型
等属性。 registry是一个内部服务接口,不建议暴露给普通用户。
2.3 Database
database用于存放镜像的元数据,可以根据需要选择数据库,如 MySQL、 SQLite等。
2.4 storage repository for image files
一般情况下, Glance并不需要存储仼何镜像,而是将镜像存储在后端仓库中。 Glance
支持多种 repository。主要包括对象存储Swit、块存储 Cinder、 VMware的 ESX/ESXI
或者 vCenter、亚马逊的S3、HTP可用服务器、Ceph等
3. 镜像的格式
Glance支持多种镜像格式,包括磁盘格式和容器格式。 Open Stack中支持多种虚拟
化的技术,如KVM、 Xen Server、 Hyper-V和 Mware等。用户在上传镜像时,需要指
定上传镜像文件的格式。除了磁盘格式,在 Glance中还有容器格式。一般在上传镜像时
只需指定容器格式为bare,即为空。因为 Glance中并没有真正使用到容器格式。容器格
式用来表示虚拟机镜像文件是否包含了元数据,例如OVF格式。下面列出了几种 Glance
中常用的镜像文件格式:
3.1 RAW
RAW是一种没有格式或裸格式的磁盘文件类型。RAW对数据不做任何修饰和处理,
直接保存最原始的状态,所以在性能方面非常出色。由于RAW格式保存原始数据,因
此更容易和其他镜像格式之间进行转换。
3.2 QCOW2
QCOw2是QCOW的升级版本,其主要特性是磁盘文件大小可以动态按需增长,并
且不会占用所有的实际磁盘空间大小。例如创建了100GB的QCOW2格式的磁盘,而实
际只保存了2GB数据,那么将只占用实际物理磁盘的2GB空间。与RAW相比,使用
QCOW2格式可以节省磁盘容量。
3.3 VHD
VHD是微软公司产品使用的磁盘格式。 Virtual Pc(微软早期虚拟化产品)和 Hyper-V
使用的就是VHD格式。 VirtualBox也提供了对vHD的支持。如需在 Open Stack上使用Hyper-V类型的虚拟化,就应上传VHD格式的镜像文件。
3.4 VMDK
VMDK是 VMware公司产品使用的磁盘格式。目前也是一个开放的通用格式
除了VMware的产品外,QEMU和Ⅴ irtualBox也提供了对VMDK格式的支持。
3.5 VDI
VDI 是 Oracle 公司的VirtualBox虚拟机软件使用的格式。
3.6 ISO
ISO 是一种存档文件在光盘上的格式。
4.7 AKI 、ARI、AMI
AKI、ARI、均为Amazon 公司的AWS 所用的镜像格式。
4.Glance的工作流程
Glance需要配置的服务:glance-api、glance-registry
Glance-api:接受云系统镜像的创建、删除、读取请求
Glance-registry:云系统镜像注册服务
二、实践操作篇
1.环境说明
系统 | 主机名 | IP地址 |
CentOS 7.7 | controller | ens33:10.0.0.129 ens37:192.168.248.140 |
CentOS 7.7 | compute | ens33:10.0.0.130 ens37:192.168.248.141 |
虚拟机网卡配置
ens33 为VMnet1仅主机模式
ens37 为VMnet8 Nat模式
2. Glance的配置
Glance安装配置(此处将glance服务配置在控制节点上)
2.1 安装Glance相关软件包
[root@controller ~]# yum install -y openstack-glance
2.2创建Glance数据库
[root@controller ~]# mysql -uroot -p
MariaDB [(none)]> create database glance;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on glance.* to 'glance'@'localhost' identified by 'glance';
Query OK, 0 rows affected (0.11 sec)
MariaDB [(none)]> grant all privileges on glance.* to 'glance'@'%' identified by 'glance';
Query OK, 0 rows affected (0.00 sec)
2.3 修改配置文件,配置数据库连接
编辑文件 /etc/glance/glance-api.conf
在 [database] 部分,配置数据库访问:
[database]
...
connection = mysql+pymysql://glance:glance@10.0.0.129/glance
同步修改/etc/glance/glance-registry.conf
在 [database] 部分,配置数据库访问:
[database]
...
connection = mysql+pymysql://glance:glance@10.0.0.129/glance
2.4 然后初始化glance数据库
[root@controller ~]# su -s /bin/sh -c "glance-manage db_sync" glance
检查数据表是否生成成功
[root@controller ~]# mysql -h 10.0.0.129 -uglance -pglance -e "use glance;show tables;"
2.5 创建service项目
服务之间交互就需要用到keystone认证,用到认证就需要用户,用户必须属于一个项目当中,我们将这一些组件的用户都放入到service项目中,便于管理
在执行命令之前记得先运行如下命令:
[root@controller ~]# source admin-openstack.sh
[root@controller ~]# openstack project create --domain default --description "Service Project" service
2.6 创建glance用户
[root@controller ~]# openstack user create --domain default --password-prompt glance
这个glance用户主要是用于glance组件认证用的
2.7 赋予glance用户admin角色
在keystone篇章已经创建admin角色了
[root@controller ~]# openstack role add --project service --user glance admin
2.8 创建glance实体和endpoint端点信息
OpenStack里的每一个组件都需要在keystone里面创建对应的服务实体以及端点信息,这样才能够为外部访问用户提供访问路径
创建glance服务实体
[root@controller ~]# openstack service create --name glance --description "Openstack Image" image
创建Glance服务的三个API端点(公有、私有、admin)
公有端点的创建
[root@controller ~]#openstack endpoint create --region RegionOne image public http://controller:9292
创建私有端点信息
[root@controller ~]# openstack endpoint create --region RegionOne image internal
创建admin管理员端点
[root@controller ~]# openstack endpoint create --region RegionOne image admin http://controller:9292
以上创建都只存在一个端口信息,因为Glance只有一个端口是对外暴露的,就是Glance-api 的9292端口
3.配置镜像服务
3.1 修改Glance-Api的配置文件
[root@controller ~]# vi /etc/glance/glance-api.conf
[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 = glance #glance用户
password = 123456 #glance用户的密码
......
[paste_deploy]
flavor = keystone
......
配置上传镜像存放的路径
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images
....
3.2 修改Glance-Registry的配置文件
[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 = glance
password = 123456
......
[paste_deploy]
flavor = keystone
......
这个文件就只修改以上这一些即可
3.3启动相应服务即可
[root@controller ~]# systemctl start openstack-glance-api
[root@controller ~]# systemctl enable openstack-glance-api
[root@controller ~]# systemctl start openstack-glance-registry
[root@controller ~]# systemctl enable openstack-glance-registry
查询对应端口是否运行
[root@controller ~]# ss -tan | grep 9191
LISTEN 0 128 *:9191 *:*
[root@controller ~]# ss -tan | grep 9292
LISTEN 0 128 *:9292 *:*
3.4验证测试glance服务是否搭建成功
[root@controller ~]# openstack image list //使用这一个命令可以查询glance的镜像列表 当前为空
也可以使用如下命令进行查询
[root@controller ~]# glance image-list
4. 上传镜像
4.1 下载cirros镜像用于测试
[root@controller ~]# wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
4.2 然后上传到glance镜像服务
命令格式:
openstack image create 名称 --file 指定镜像所在的路径 --disk-format 指定磁盘的类型为qcow2 --container-format 指定容器的格式为bare --public 代表公共资源,谁都可以访问
[root@controller ~]# openstack image create "cirros" --file /root/cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public
注:除了以上的方法,还有一种方法也可以实现操作:
glance image-create --name 指定名称 --file 指定文件所在的路径 --disk-format 指定磁盘格式 --container-format 指定容器格式
4.3查看上传的效果
[root@controller ~]# glance image-list
也可以使用:openstakc image list 来查看也可以
查看对应目录是否生成有镜像:
# ls /var/lib/glance/images/d20c35e5-ffa8-4d57-babc-9f1bf56a850d
/var/lib/glance/images/d20c35e5-ffa8-4d57-babc-9f1bf56a850d
发表评论