1. 1.4 OpenStack镜像服务Glance
1.1.1. Glance概述
OpenStack中的Glance是镜像服务,能够提供发现、注册并查询虚拟机镜像,也是Openstack的一个组件或者说项目之一。镜像服务提供了一个Rest API的方式。 OpenStack的Glance镜像可以存放在本地文件系统,也可以存放在OpenStack的对象存储上。默认情况下是本地文件,存放在/var/lib/glance/images/目录下。 Glance还管理着快照,快照也是一种镜像,可以基于快照创建新的虚拟机。
Glance主要有两个组件
(图2.5.2)
Glance-api接收REST API请求,然后通过其他模块(glance-registry及image store)来完成诸如镜像的查找、获取、上传、删除等操作,api默认监听端口9292。
glance-registry用于与MySQL数据库交互,用于存储或获取镜像的元数据(metadata);提供镜像元数据相关的REST接口,通过glance-registry,可以向数据库中写入或获取镜像的各种数据,glance-registry监听端口9191。Glance的数据库中有两张表,一张是image表,另一张是image property表。Image表保存了镜像格式、大小等信息;image property表则主要保存镜像的定制化信息。
database 用户存放镜像的元数据。
- image store是一个存储的接口层,通过这个接口,glance可以获取镜像,image store支持的存储有Amazon的S3、OpenStack本身的Swift,还有诸如ceph,sheepdog,GlusterFS等分布式存储。 Image store是镜像保存与获取的接口,它仅仅是一个接口层,具体的实现需要外部的存储支持,
1.1.2. Glance部署
安装Glance
[root@linux-node1 ~]# yum install -y openstack-glance
配置Glance
Glance的配置是通过修改两个组件的配置文件来完成。Glance使用了MySQL和Keystone。
- Glance数据库配置
[root@linux-node1 ~]# vim /etc/glance/glance-api.conf
[database]
connection= mysql+pymysql://glance:glance@192.168.56.11/glance
- 设置Keystone
就像在Keystone章节提到了。OpenStack其它组件都需要和Keystone进行交互,来进行用户认证和服务目录的管理。对于Glance来说,Keystone的配置在glance-api.conf和glance-registry.conf都需要设置,而且配置相同。 glance-api.conf配置
[root@linux-node1 ~]# vim /etc/glance/glance-api.conf
[keystone_authtoken]
www_authenticate_uri = http://192.168.56.11:5000
auth_url = http://192.168.56.11:5000
memcached_servers = 192.168.56.11:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = glance
[paste_deploy]
flavor=keystone
- 设置Glance镜像存储
[root@linux-node1 ~]# vim /etc/glance/glance-api.conf #默认的存储方式是文件,可以指定镜像存储的路径 [glance_store] stores = file,http default_store=file filesystem_store_datadir=/var/lib/glance/images/ #也就是说,我们后面上传的镜像都保存在/var/lib/glance/images目录下。
同步数据库
[root@linux-node1 ~]# su -s /bin/sh -c "glance-manage db_sync" glance 测试数据库同步情况 [root@linux-node1 ~]# mysql -h 192.168.56.11 -uglance -pglance -e "use glance;show tables;"
启动Glance服务
[root@linux-node1 ~]# systemctl enable openstack-glance-api.service
[root@linux-node1 ~]# systemctl start openstack-glance-api.service
Glance服务注册
想要让别的服务可以使用Glance,就需要在Keystone上完成服务的注册。注意需要先source一下admin的环境变量。
[root@linux-node1 ~]# source /root/admin-openstack.sh # openstack service create --name glance --description "OpenStack Image" image # openstack endpoint create --region RegionOne image public http://192.168.56.11:9292 # openstack endpoint create --region RegionOne image internal http://192.168.56.11:9292 # openstack endpoint create --region RegionOne image admin http://192.168.56.11:9292
1.1.3. 验证Glance安装
测试Glance状态
我们可以直接使用glance命令列出现在的所有镜像,如果出现一个空列表,说明Glance启动并配置完成。
[root@linux-node1 ~]# source /root/admin-openstack.sh [root@linux-node1 ~]# openstack image list
如果未出现报错,基本上可以确实部署没有问题,可以上传镜像进行测试。
Glance镜像上传测试
在刚开始实施OpenStack平台阶段,如果没有制作镜像。可以使用一个实验的镜像进行测试,这是一个小的Linux系统。
[root@linux-node1 ~]# cd /usr/local/src
[root@linux-node1 src]# wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
#上传并注册一个镜像。注意以后只要看到使用openstack命令,都需要保证,已经使用source命令导入了环境变量。因为这些操作都需要环境变量里面的账号进行认证授权。
[root@linux-node1 src]# openstack image create "cirros" --disk-format qcow2 \
--container-format bare --file cirros-0.4.0-x86_64-disk.img --public
2. 上传完毕后可以通过openstack image list再次查看上传的镜像。默认情况下,Glance使用本地文件系统来保存上传的镜像。默认存放在/var/lib/glance/images/目录下,会将镜像以image id来进行命名。
[root@linux-node1 src]# openstack image list
+--------------------------------------+--------+--------+
| ID | Name | Status |
+--------------------------------------+--------+--------+
| cf154a84-a73a-451b-bcb3-83c98e7c0d3e | cirros | active |
+--------------------------------------+--------+--------+
3. 同时,这个文件会被保存到配置文件设置的目录下,并以ID命名。
[root@linux-node1 ~]# ls -l /var/lib/glance/images/
total 12980
-rw-r----- 1 glance glance 13287936 Dec 1 14:11 65f9826a-5ccb-47d9-8a1a-75e31fb88a4a
Glance在OpenStack组件中,属于比较简单的一个。我建议读者如果一直跟着做实验的话,现在是时候停下来总结一下了。因为后面的服务的部署流程和glance都大同小异。