镜像服务 Glance 介绍

OpenStack 镜像服务包含以下组件:

  • glance-api:通过镜像 API 进行镜像建立,搜索,存储操作。
  • glance-registry:存储,运行和搜索涵盖镜像大小与类型的元数据。
  • 数据库
  • 镜像文件存储仓库
  • 元数据定义服务:提供一组 API 便于镜像管理。

安装镜像服务 Glance

配置数据库

1
$ mysql -u root -p

新建 glance 数据库并赋予 glance 用户权限:

1
2
3
MariaDB [(none)]> create database glance;
MariaDB [(none)]> grant all privileges on glance.* to 'glance'@'localhost' identified by 'GLANCE_DBPASSWORD';
MariaDB [(none)]> grant all privileges on glance.* to 'glance'@'%' identified by 'GLANCE_DBPASSWORD';

GLANCE_DBPASSWORD 替换为需要的密码。

新建服务证书及 API Endpoints

导入 admin 用户环境变量;

1
$ . admin-openrc

关于 openrc 文件在安装 keystone提及

新建 glance 用户并设置 GLANCE_PASSWORD

1
$ openstack user create --domain default --password-prompt glance

admin 角色加入 glance 用户和 service 项目:

1
openstack role add --project service --user glance admin

生成 glance 服务入口点:

1
$ openstacak service create --name glance --description "OpenStack Image" image

生成镜像服务的 API Endpoints

1
2
3
$ openstack endpoint create --region RsegionOne 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

安装配置组件

安装 openstack-glance 软件包:

1
# yum install openstack-glance

修改 /etc/glance/glance-api.conf 文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[database]
# ...
connection = mysql+pymysql://glance:GLANCE_DBPASSWORD@controller/glance

[keystone_authtoken]
# ...
memcached_servers = controller:11211
auth_uri = http://controller:5000
project_domain_name = Default
project_name = service
user_domain_name = Default
password = GLANCE_PASSWORD
username = glance
auth_url = http://controller:35357
auth_type = password

[paste_deploy]
# ...
flavor = keystone

[glance_store]
#...
stores = file, http
default_store = file
filesystem_store_datadir = /var/lib/glance/images

注释掉这几个字段中其他的设置; GLANCE_DBPASSWORDGLANCE_PASSWORD 要更改成自己设定的密码。

修改 /etc/glance/glance-registry.conf 文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
[database]
# ...
connection = mysql+pymysql://glance:GLANCE_DBPASSWORD@controller/glance

[keystone_authtoken]
# ...
memcached_servers = controller:11211
auth_uri = http://controller:5000
project_domain_name = Default
project_name = service
user_domain_name = Default
password = GLANCE_PASSWORD
username = glance
auth_url = http://controller:35357
auth_type = password

[paste_deploy]
# ...
flavor = keystone

注释掉这几个字段中其他的设置; GLANCE_DBPASSWORDGLANCE_PASSWORD 要更改成自己设定的密码。

更新 glance 数据库:

1
# su -s /bin/sh -c "glance-manage db_sync" glance

启动镜像服务

1
2
# systemctl enable openstack-glance-api openstack-glance-registry
# systemctl start openstack-glance-api openstack-glance-registry

服务测试

导入 admin 用户环境变量;

1
$ . admin-openrc

下载测试用镜像 CirrOS

1
$ wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img

由于国内特殊网络原因,若下载不成功可先通过其他途径下载,再拷贝到目标机器上。

上传镜像:

1
$ openstack image create "CirrOS-0.3.5-64bit" --file cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --public

使用 QCOW2 (QEMU Copy On Write 2) 磁盘格式, bare 容器格式上传镜像,并且将镜像权限设置为 public ,让所有的项目都能够获得该镜像。

查看镜像:

1
$ openstack image list

需要获取更多镜像请参照 OpenStack Docs: Get images。注意云镜像和安装镜像的区别。

总结

之前在初始配置和安装 Keystone 时踩了不少坑,这次安装 Glance 倒是出奇的顺利。官方文档还是好用的啊。


知识共享许可协议
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。