镜像服务(Glance)使用户能够发现,注册和检索虚拟机镜像。它提供了一个 REST API,可让您查询虚拟机镜像元数据并检索实际镜像。可以存储通过Image Service在各种位置(从简单的文件系统到像OpenStack Object Storage这样的对象存储系统)提供的虚拟机镜像。
重要:为了简单起见,本指南介绍如何配置Image服务以使用file后端,后端上传并存储在托管Image服务的控制器节点上的目录中。默认情况下,此目录为/var/lib/glance/images/。在继续操作之前,请确保控制器节点在此目录中至少有几GB的可用空间。有关其他后端的要求的信息,请参阅 配置参考。
OpenStack Image服务是基础架构即服务(IaaS)的核心之一。它接受磁盘或服务器镜像的API请求,以及最终用户或OpenStack Compute组件的元数据定义。它还支持在各种存储库类型(包括OpenStack对象存储)中存储磁盘或服务器镜像。
在OpenStack Image服务上运行多个定期进程来支持缓存。复制服务通过集群确保一致性和可用性。
OpenStack Image服务包括以下组件:
glance-api
接受glance API调用,用于镜像发现,检索和存储。
glance-registry
存储,处理和检索有关图像的元数据。元数据包括大小和类型等项。
警告:注册表是OpenStack Image服务使用的私有内部服务。不要将此服务暴露给用户。
Database
存储图像元数据,您可以根据自己的喜好选择数据库。大多数部署使用MySQL或SQLite。
Storage repository for image files
支持各种存储库类型,包括普通文件系统(或安装在glance-api控制器节点上的任何文件系统),对象存储,RADOS块设备,VMware数据存储和HTTP。请注意,某些存储库仅支持只读使用。
Metadata definition service
供应商,管理员,服务和用户的常见API,用于有意义地定义自己的自定义元数据。此元数据可用于不同类型的资源,如图像,工件,卷,规格和聚合( images, artifacts, volumes, flavors, and aggregates.)。定义包括新属性的关键字,描述,约束和可以关联的资源类型。
1.1.1.1.2. 安装和配置
本节介绍如何在控制器节点上安装和配置Image Service,代号为glance。为了简单起见,此配置将映像存储在本地文件系统上。
1.1.1.1.2.1. 先决条件
在安装和配置映像服务之前,必须创建数据库,服务凭据和API端点。
1、要创建数据库,请完成以下步骤:
使用数据库访问客户端作为root用户连接到数据库服务器:
$ mysql -u root -p
创建glance数据库:
MariaDB [(none)]> CREATE DATABASE glance;
授予对glance数据库的正确访问权限:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY 'GLANCE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY 'GLANCE_DBPASS';
更换GLANCE_DBPASS一个合适的密码。
退出数据库访问客户端。
2、输入admin凭据以访问仅管理CLI命令:
$ . admin-openrc
3、要创建服务凭据,请完成以下步骤:
创建glance用户:
$ openstack user create --domain default --password-prompt glance
User Password:
Repeat User Password:
将admin角色添加到glance用户和 service项目中:
$ openstack role add --project service --user glance admin
创建glance服务实体:
$ openstack service create --name glance \
--description "OpenStack Image" image
4、创建镜像服务API端点:
$ openstack endpoint create --region RegionOne \
image public http://controller:9292
$ openstack endpoint create --region RegionOne \
image internal http://controller:9292
$ openstack endpoint create --region RegionOne \
image admin http://controller:9292
1.1.1.1.2.2. 安装和配置组件
1、安装软件包:
# yum install openstack-glance
2、编辑/etc/glance/glance-api.conf文件并完成以下操作:
在该[database]部分中,配置数据库访问:
[database]
# ...
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
替换GLANCE_DBPASS为镜像服务数据库选择的密码。
在[keystone_authtoken]和[paste_deploy]部分中,配置身份服务访问:
[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 = GLANCE_PASS
[paste_deploy]
# ...
flavor = keystone
替换GLANCE_PASS为glance身份服务中为用户选择的密码 。
在本[glance_store]节中,配置本地文件系统存储和镜像文件的位置:
[glance_store]
# ...
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
3、编辑/etc/glance/glance-registry.conf文件并完成以下操作:
在该[database]部分中,配置数据库访问:
[database]
# ...
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
替换GLANCE_DBPASS为镜像服务数据库选择的密码。
在[keystone_authtoken]和[paste_deploy]部分中,配置身份服务访问:
[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 = GLANCE_PASS
[paste_deploy]
# ...
flavor = keystone
替换GLANCE_PASS为glance身份服务中为用户选择的密码 。
4、导入镜像服务数据库:
# su -s /bin/sh -c "glance-manage db_sync" glance
1.1.1.1.2.3. 完成安装
启动镜像服务并将其配置为在系统引导时启动:
# systemctl enable openstack-glance-api.service \
openstack-glance-registry.service
# systemctl start openstack-glance-api.service \
openstack-glance-registry.service
1.1.1.1.3. 验证操作
使用CirrOS验证镜像服务的操作 ,这个小型的Linux镜像可帮助测试OpenStack部署。
有关如何下载和构建镜像的更多信息,请参阅“ OpenStack虚拟机镜像指南”。有关如何管理镜像的信息,请参阅“OpenStack最终用户指南”。
注意:在控制器节点上执行这些命令。
1、生效admin凭据以访问仅管理CLI命令:
$ . admin-openrc
2、下载源镜像:
$ wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
注意:wget如果未安装,请安装。
3、使用QCOW2磁盘格式,裸容器格式和公共可见性将镜像上传到Image服务 ,所以所有项目都可以访问它:
$ openstack image create "cirros" \
--file cirros-0.3.5-x86_64-disk.img \
--disk-format qcow2 --container-format bare \
--public
4、确认镜像的上传并验证属性:
$ openstack image list