Glance是OpenStack镜像服务,用来注册、登陆和检索虚拟机镜像。Glance服务提供了一个REST API,使你能够查询虚拟机镜像元数据和检索的实际镜像。通过镜像服务提供的虚拟机镜像可以存储在不同的位置,从简单的文件系统对象存储到类似OpeenStack对象存储系统。
为了简单,本安装镜像服务使用普通文件系统做为后端,也就是说上传镜像将被存储在一个目录里,这个目录是/var/lib/glance/image,你要确保这个目录提供足够的空间,然后再来存储虚拟机的镜像和快照。大小怎么着自己看着办。
镜像服务组件:
Glance-API 承受镜像API的探索,检索和存储镜像的API调用。
Glance-registry 存储,处理和检索有关镜像的元数据,元数据大小、类型等等。
Database 存储镜像元数据,你可以选择你喜欢的数据库,现在比较多的是mysql和sqlite
镜像文件存储在存储库中,你可以选择不同的存储库,比如正常文件系统、 RADOS、Amazon S3 HTTP,也有一些提供只读使用,所以我们可以使用不同的分布式文件系统来扩展。
Object Storage {Ring proxy object container account replication updaters auditors} auditors检查{object,container,account}updaters失败更新{container account} account处理container列表 container处理对象列表 object文件所在地 Ring名称与物理位置映射。
它接受来自最终用户和Nova的镜像和镜像元数据的API请求,并且可以存储在对象存储服务的磁盘文件上。
逻辑图:
安装镜像服务:
glance服务工作在虚拟磁盘镜像上面,用户可以添加一个新镜像,或者从现有的服务中存储快照,使用快照来备份或者做为其它服务器的模版,你可以注册镜像在对象存储或者在其它的文件系统中,例如可以使用WEB服务或者NFS,MFS等。
1、安装镜像服务包
# apt-get install glance python-glanceclient
2、配置数据位置,glance-api和glance-registry都有自己的配置文件,路径分别是
/etc/glance/glance-api.conf
/etc/glance/glance-registry.conf修改[default]选项,连接mysql
两个文件都要改
#sql_connection = mysql://glance:stack@controller/glance
3、删除rm /var/lib/glance/glance.sqlite文件,避免ubuntu使用sqlite连接数据库
# rm /var/lib/glance/glance.sqlite
4、创建数据库和连接方式,又是一个密码,同样记住了。
mysql> create database glance;
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'stack';
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'controller' IDENTIFIED BY 'stack';
5、重启下
# service glance-api restart
# service glance-registry restart
6、用镜像服务创建数据表
# glance-manage db_sync
查下一下有多少表:
看一下images的表结构:
6、创建一个用户glance在keystone,使用密码和邮件,并把他添加到服务的租户里去。记住咯,又一个密码。
# keystone user-create --name=glance --pass=stack --email=zwhset@163.com
7、把镜像服务注册到keystone里去,修改配置文件。
修改glance-api.comf 和glance-registry.conf
[keystone_authtoken]
auth_host = controller
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = glance
admin_password = stack
还是一样两个都要改
8、把凭证添加到下面两个文件中去
/etc/glance/glance-api-paste.ini
/etc/glance/glance-registry-paste.ini
[filter:authtoken]
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
delay_auth_decision = true
auth_host=controller
admin_user=glance
admin_tenant_name=service
admin_password=stack
flavor=keystone
9、在keystone上面注册镜像服务让其它服务可以看到并且创建终端。
# keystone service-create --name=glance --type=image --description="Glance Image Service"
10、使用刚返回的ID创建终端服务。
# keystone endpoint-create --service-id=310682cc6c304ddb91be7a5798bf608e --publicurl=http://controller:9292 --internalurl=http://controller:9292 --adminurl=http://controller:9292
11、重启glance服务以生效刚修改的
# service glance-registry restart
# service glance-api restart
验证镜像服务的安装
1、下载一个13M镜像测试。
# mkdir images
# cd images/
# wget http://cdn.download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img
2、上传镜像到镜像服务
# glance image-create --name="CirrOS 0.3.1" --disk-format=qcow2 --container-format=bare --is-public=true < cirros-0.3.1-x86_64-disk.img
选项说明:
# glance image-create --name=imageLabel --disk-format=fileFormat --container-format=containerFormat --is-public=accessValue < imageFile
imageLable:镜像的名称,随意写。
fileFormat:指定图像的格式,有效的格式为qcow2,raw,vhd,vmdk,vdi,iso,aki,ari和ami
查看格式:
containerFormat:指定container的格式,有效的格式有bare,ovf,aki,ari 和ami
imageFile:指定镜像文件
3、查看镜像列表