Glance(OpenStack Image Service)
是为虚拟机提供发现,注册,和下载镜像的服务。Glance 提供了虚拟机镜像的集中存储。通过 Glance 的 RESTful API,可以查询镜像元数据、下载镜像。虚拟机的镜像可以很方便的存储在各种地方,从简单的文件系统到对象存储系统(比如 OpenStack Swift)。
在 Glance 里镜像被当做模板来存储,用于启动新实例。Glance 还可以从正在运行的实例建立快照用于备份虚拟机的状态。
Glance 具体功能如下:
Clance 在整个 OpenStack 架构中的位置如下图:
在 Newton 之前的版本中,Glance 支持两种 RESTful API V1和V2,两者区别为:
V1版本的实现,具有 glance-api 和 glance-registry 两个 WSGI 服务,二者都提供 RESTful API,但需要强调的一点是,glance-registry 提供的 RESTful API 是给 glance-api 使用的,并不开放给外部用户。
1)glance-api glance-api 是系统后台运行的服务进程。 对外提供 RESTful API,响应镜像查询、获取和存储的调用。glance-api 不会真正处理请求。
(2)glance-registry glance-registry 是系统后台运行的服务进程。 负责处理和存取镜像的 metadata,例如镜像的大小和类型。
V2版本的实现就是将 glance-registry 集成到了 glance-api 内部,这么做的好处是减少了一个中间的处理环节。V1版本在 Newton 中标注被弃用,目前已经被移除。
Glance 支持多种格式的镜像,包括:
Glance 自己并不存储镜像。 真正的镜像是存放在后端存储中的。Glance 支持多种后端存储,包括:
具体使用哪种 backend,是在 /etc/glance/glance-api.conf
中配置的。
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '123456';
获得 admin
凭证来获取只有管理员能执行的命令的访问权限:
export OS_USERNAME=admin
export OS_PASSWORD=keystone
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://master01.boysec.cn:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
注意:如果加入到.bashrc
下则不需要再次执行!
创建 glance
用户:
# 非交互式{推荐}密码也是glance
openstack user create --domain default --password glance glance
#交互式
#openstack user create --domain default --password-prompt glance
openstack user create --domain default --password-prompt glance
# 添加 admin 角色到 glance 用户和 service 项目上。
openstack role add --project service --user glance admin
openstack service create --name glance \
--description "OpenStack Image" image
# 创建公共接口的端点.
openstack endpoint create --region RegionOne \
image public http://master01.boysec.cn:9292
# 创建内部接口的端点
openstack endpoint create --region RegionOne \
image internal http://master01.boysec.cn:9292
# 创建管理接口的端点
openstack endpoint create --region RegionOne \
image admin http://master01.boysec.cn:9292
yum install openstack-glance
[root@master01 ~]# cp /etc/glance/glance-api.conf{,.bak}
[root@master01 ~]# grep -Ev "^$|#" /etc/glance/glance-api.conf.bak >/etc/glance/glance-api.conf
[root@master01 ~]# cat /etc/glance/glance-api.conf
[DEFAULT]
[cinder]
[cors]
[database]
connection = mysql+pymysql://glance:123456@master01.boysec.cn/glance
[file]
[glance.store.http.store]
[glance.store.rbd.store]
[glance.store.sheepdog.store]
[glance.store.swift.store]
[glance.store.vmware_datastore.store]
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images
[image_format]
[keystone_authtoken]
www_authenticate_uri = http://master01.boysec.cn:5000
auth_url = http://master01.boysec.cn:5000
memcached_servers = master01.boysec.cn:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = glance
[oslo_concurrency]
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_middleware]
[oslo_policy]
[paste_deploy]
flavor = keystone
[profiler]
[store_type_location_strategy]
[task]
[taskflow_executor]
su -s /bin/sh -c "glance-manage db_sync" glance
systemctl enable openstack-glance-api.service
systemctl start openstack-glance-api.service
# 下载
wget http://download.cirros-cloud.net/0.5.1/cirros-0.5.1-x86_64-disk.img
# 上传
glance image-create --name "cirros" \
--file cirros-0.5.1-x86_64-disk.img \
--disk-format qcow2 --container-format bare \
--visibility public
# 验证
[root@master01 ~]# glance image-list
+--------------------------------------+--------+
| ID | Name |
+--------------------------------------+--------+
| d4e76622-3d1f-43c7-bf0f-5262cd8a3aec | cirros |
+--------------------------------------+--------+