1、Glance-镜像服务介绍
(1)服务功能
- OpenStack镜像服务( glance )使用户能够发现、注册并检索虚拟机镜像( . img文件)
- 它提供了一个REST API接口,使用户可以查询虚拟机镜像元数据和检索-个实际的镜像文件
- 不论是简单的文件系统还是OpenStack 对象存储,你都可以通过镜像服务在不同的位置存储虚拟机镜像
- 默认情况下,上传的虚拟机镜像存储路径为/var/lib/glance/images/
(2)组件说明
- glance-api:一个用来接收镜像发现、检索和存储的API接口
- glance-registry:用来存储、处理和检索镜像的元数据。元数据包含对象的大小和类型。glance-registry是一个OpenStack镜像服务使用的内部服务,不要透露给用户。
- Database:用于存储镜像的元数据的大小、类型,支持大多数数据库,一般选择MySQL或SQLite
- Storage repository for image files: 镜像文件的存储仓库。支持包括普通文件系统在内的各种存储类型。包括对象存储、块设备、HTTP、Amazon S3,但有些存储只支持只读访问
(3)基本概念
Image Identifiers:就是Image URL,格式<Glance Server Location>/images/<ID> 全局唯一
Image Status(镜像状态):
- Queued: 镜像ID已被保留,镜像还没有上传
- Saving: 镜像正在被上传
- Active: 镜像可以使用了
- Killed: 镜像损坏或者不可用
- Deleted: 镜像被删除
Disk Format(磁盘格式):
- Raw: This is unstructured disk image format
- Vhd: VMWare、 XEN、Microsoft、 VirtualBox
- Vndk: common format
- Vdi: VirtualBox、 QEMU emulator
- ISO: optical disc
- Qcow2: QEMU emulator
- Aki: Amazon Kernel Image
- Ari: Amazon ramdisk image
- Ami: Amazon machine image
Container Format(容器格式)
- Bare
- 0vf
- Aki
- Ami
- Ari
(4)组件工作流参考下图:
2、glance服务安装配置
我依旧是在controller节点上安装配置glance服务。
(1)配置先决条件
#1、创建数据库
#a.以数据库管理员root的身份登录数据库
# mysql-u root -p
#b.创建glance数据库
CREATE DATABASE glance;
#c.创建数据库用户glance,并授予其对glance数据库的管理权限
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';
#d.退出数据库连接
#2、启用admin环境脚本
source admin.sh
#3、创建认证服务凭证,完成下列步骤:
#a.创建glance用户
keystone user-create --name glance --pass GLANCE_PASS
#b.将glance用户链接到service租户和admin角色
keystone user-role-add --user glance --tenant service --role admin
#c.创建glance服务
keystone service-create --name glance --type image --description "OpenStackImage Service"
#4、为OpenStack镜像服务创建认证服务端点
keystone endpoint-create --service-id $(keystone service-list | awk '/ image / {print $2}') --publicurl http://controller.nice.com:9292 --internalurl http://controller.nice.com:9292 --adminurl http://controller.nice.com:9292 --region regionOne
(2)安装并配置镜像服务组件
#1、安装软件包
yum install openstack-glance python-glanceclient
#2、编辑/etc/glance/glance-api.conf文件,并完成下列操作
#a.修改[database]小节,配置数据库连接:
[database]
...
connection=mysql://glance:GLANCE_DBPASS@controller.nice.com/glance
#b.修改[keystone_authtoken]和[paste_deploy]小节,配置认证服务访问:
[keystone_authtoken]
...
auth_uri=http://controller.nice.com:5000/v2.0
identity_uri=http://controller.nice.com:35357
admin_tenant_name=service
admin_user=glance
admin_password=GLANCE_PASS
[paste_deploy]
...
flavor=keystone
#c.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
...
verbose=True
#3、编辑/etc/glance/glance-registry.con文件,并完成下列配置:
#a.在[database]小节中配置数据库连接:
[database]
...
connection=mysql://glance:GLANCE_DBPASS@controller.nice.com/glance
#b.在[keystone_authtoken]和[paste_deploy]小节中配置认证服务访问
[keystone_authtoken]
...
auth_uri=http://controller.nice.com:5000/v2.0
identity_uri=http://controller.nice.com:35357
admin_tenant_name=service
admin_user=glance
admin_password=GLANCE_PASS
[paste_deploy]
...
flavor=keystone
#c.在[glance_store]小节中配置本地文件系统存储和镜像文件的存放路径
[glance_store]
...
default_store=file
filesystem_store_datadir=/var/lib/glance/images/
#d.(可选)在[DEFAULT]小节中配置详细日志输出。方便排错。
[DEFAULT]
...
verbose=True
#4、初始化镜像服务的数据库
su -s /bin/sh -c "glance-manage db_sync" glance
(3)启动镜像服务并设置开机自动启动:
systemctl enable openstack-glance-api.service openstack-glance-registry.service
systemctl start openstack-glance-api.service openstack-glance-registry.service
3、配置检查
(1)检查glance数据库
(2)上传镜像
给一个cirros镜像下载链接(用来测试,wget下载很慢,建议迅雷下载,然后通过xshell上传上去):
http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
#下载lrzsz工具直接在xshell上传文件
yum install lrzsz -y
上传镜像到镜像服务器,先介绍glance image-create相关选项含义:
--name <NAME> 镜像名称。
--file <FILE> 要上传文件及路径。
--disk-format <DISK_FORMAT> 镜像的磁盘格式。可以支持:ami, ari, aki, vhd, vmdk, raw, qcow2, vdi,iso格式。
--container-format <CONTAINER_FORMAT> 镜像容器格式。可以支持:ami, ari, aki, bare, ovf格式。
--is-public {True,False} 镜像是否可以被公共访问。
--progress 显示上传进度。
glance image-create --name "cirros-0.3.4-x86_64" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --is-public True --progress
glance image-list
(3)确认镜像文件上传并验证属性