OpenStack镜像服务(glance)使用户能够发现、登记,并检索虚拟机镜像。它提供了一个REST API,使您可以查询虚拟机镜像元数据和检索一个实际的镜像。通过镜像服务在不同的位置,你可以存储虚拟机镜像使其有效,从简单的文件系统到对象——存储系统,比如OpenStack对象存储。
重点
为简单起见,本指南描述了配置镜像服务后端使用文件,上传并存储在控制节点上主管镜像服务。默认情况下,这个目录是/var/lib/glance/images/。
在继续之前,确保控制器节点至少有几个gb的可用空间在这个目录中。
对于其他后端信息要求,请参见Configuration Reference。
OpenStack的镜像服务对于基础设施即服务(Iaas)是及其重要的,如文章(1)中的Figure1.1,"概念结构"所示。它接受API对于服务器镜像或磁盘储存的请求,从最终用户或OpenStack计算组件中镜像的元数据。它还支持不同的存储库类型的存储磁盘或服务器镜像,包括OpenStack对象存储。
一些在OpenStack镜像服务运行的周期性进程支持缓存。通过集群复制服务确保一致性和可用性。其他周期性过程包括auditors、uodaters和reapers。
OpenStack镜像服务还包括了如下的组件:
组件 | 作用 |
---|---|
glance-api | 为镜像的恢复、检索和存储接受镜像的API调用 |
glance-registry | 存储、处理和检索所有关于镜像的元数据。元数据包括尺寸和类型 |
Database | 存储镜像的元数据,你可以依据你的喜好选择你的数据库。大多数部署使用MySQL或SQLite |
Storage repository for image files | 支持各种存储库类型包括常规文件系统、对象存储,RADOS块设备,HTTP,Amazon S3。请注意,某些存储库只会支持只读的使用。 |
安全注意
注册表是通过OpenStack镜像服务作为一个私有的内部服务来使用。不透露给用户。
这节描述了如何在控制节点上安装和配置镜像服务,代号为glance。为了简单,这个配置把镜像存储在本地文件系统。
笔记
本节假设的在身份服务正确安装、配置和操作被描述在文章(3)的“安装和配置”和“验证操作”章节以及admin-openrc.sh脚本在文章(3)中所描述的“创建客户机环境OpenStack脚本”设置。
在你安装和配置镜像服务之前,你必须创建一个数据库,服务证书和API端点。
1.为了创建数据库,请完成下面的步骤:
a.使用数据库客户端去连接数据库服务器以root的形式:
$ mysql -u root -p
b.创建glance数据库:
CREATE DATABASE glance;
c.给glance数据库授予适当的访问权限:
GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@’localhost’ \
IDENTIFIED BY ‘GLANCE_DBPASS’;
GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@’%’ \
IDENTIFIED BY ‘GLANCE_DBPASS’;
用合适的密码替换GLANCE_DAPASS。
d.编辑数据库访问端。
2.配置admin证书去获得访问admin-only的CLI命令行:
$ source admin-openrc.sh
3.为了创建服务证书,请完成下列步骤:
a.创建glance使用者:
$ openstack user create –password-prompt glance
User Password:
Repeat User Password:
b.在glance用户和service项目添加admin角色:
$ openstack role add –project service –user glance admin
c.创建glance服务实体:
$ openstack service create –name glance \
–description “OpenStack Image service” image
4.创建镜像服务的API端点:
$ openstack endpoint create \
–publicurl http://controller:9292 \
–internalurl http://controller:9292 \
–adminurl http://controller:9292 \
–region RegionOne \
image
笔记
默认的配置文件因为版本不同而不同。您可能需要添加这些部分和选项,而不是修改现有的部分和选项。而且,省略号(…)在配置代码片段表示潜在的默认配置选项,你应该保留。
1.安装包:
# apt-get install glance python-glanceclient
2.编辑/etc/glance/glance-api.conf文件,完成下面的步骤:
a.在[database]部分,配置数据库访问:
[database]
…
connection = mysql://glance:GLANCE_DBPASS@controller/glance
为你选择的镜像服务的数据库的密码替换GLANCE_DAPASS。
b.在[keystone_authtoken]和[paste_deploy]部分,配置身份服务访问:
[keystone_authtoken]
…
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = glance
password = GLANCE_PASS
[paste_deploy]
…
flavor = keystone
用你在身份服务为glance用户选择的密码去替换GLANCE_PASS。
笔记·
在[keystone_authtoken]部分中注释或移除其他选项。
c.在[glance_store]中,配置当地文件系统存储和镜像文件位置:
[glance_store]
…
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
d.在[DEFAULT]部分,配置noop通知驱动器使得通知不能启动,因为他们仅仅属于可选择的测试服务:
[DEFAULT]
…
notification_driver = noop
e.(可选择的)协助故障排除,在[DEFAULT]中启用详细日志记录:
[DEFAULT]
…
verbose = True
3.编辑/etc/glance/glance-registry.conf文件和完成下列操作:
a.在[database]部分,配置数据库访问:
[database]
…
connection = mysql://glance:GLANCE_DBPASS@controller/glance
用你在镜像服务数据库所选择的密码去替换GLANCE_DAPASS。
b.在[keystone_authtoken]和[paste_deploy]部分,配置验证服务的访问:
[keystone_authtoken]
…
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = glance
password = GLANCE_PASS
[paste_deploy]
…
flavor = keystone
用你在镜像服务数据库所选择的密码去替换GLANCE_DAPASS。
笔记
在[keystone_authtoken]部分中注释或移除其他选项。
c.在[DEFAULT]部分,配置noop通知驱动器使得通知不能启动,因为他们仅仅属于可选择的测试服务:
[DEFAULT]
…
notification_driver = noop
这个测试服务提供一个镜像服务配置使得通知可用。
d.(可选择的)协助故障排除,在[DEFAULT]中启用详细日志记录:
[DEFAULT]
…
verbose = True
4.填入镜像服务数据库:
# su -s /bin/sh -c “glance-manage db_sync” glance
1.重启镜像服务:
# service glance-registry restart
# service glance-api restart
2.默认情况下,ubuntu包创建一个SQLite数据库。
因为这个配置使用一个SQL数据库服务器,你可以移除SQLite数据库文件:
# rm -f /var/lib/glance/glance.sqlite
使用CirrOS确认镜像服务的操作,一个小型的linux镜像可以帮你测试你的openstack环境的部署。
更多的信息关于如何下载和建造镜像,请观看OpenStack Virtual Machine Image Guide
更多关于如何管理镜像,观看OpenStack User Guide.
1.在每一个客户端环境脚本,配置镜像客户端去使用API 版本2.0:
$ echo “export OS_IMAGE_API_VERSION=2” | tee -a admin-openrc.sh demoopenrc.sh
2.配置admin证书去获取访问admin-only CLI命令的权限:
$ source admin-openrc.sh
3.创建临时当地目录:
$ mkdir /tmp/images
4.对它下载资源镜像
$ wget -P /tmp/images http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
5.加载镜像对进行服务使用QCOW2磁盘格式,裸机包含的模式,以及公有可见的,以至于所有项目都可以访问到:
$ glance image-create –name “cirros-0.3.4-x86_64” –file /tmp/images/
cirros-0.3.4-x86_64-disk.img \
–disk-format qcow2 –container-format bare –visibility public –
progress
[=============================>] 100%
关于glance 镜像创建的信息,请观看Image service command-line client
关于对于镜像磁盘和容器格式的信息,请观看Disk and container formats for images
笔记
OpenStack是动态生成ID的,所有你将会看见与例子不同的值。
6.确认加载了镜像和有效的属性:
$ glance image-list
7.移除临时目录和资源镜像:
$ rm -r /tmp/images