一、实验说明
按照官方文档搭建queens版本openstack,拓扑如下图所示:
二、Image service介绍
image server,代码名称为galnce,用于存放虚拟机的映像文件,他通过一个REST API接口供用户查找映像文件的metadata并获得实际的映像文件。虚拟机映像文件可以存在本地文件系统中或者类似swift的对象存储中,metadata由终端用户或者openstack的compute组件定义。
image server通过几个周期性的进程来为其提供缓存和确保集群中映像文件的一致性和高可用。
image server由以下几个组件构成:
- glance-api
接收发现、获取和存储的image API调用 - glance-registry
存储、处理和检索有关image的元数据。元数据包括大小和类型等项。注意:不要将该组建暴漏给用户。 - Database
存储image元数据,可以使用MySQL或SQLite数据库。 - Storage repository for image files
支持各种存储库类型,包括普通文件系统、对象存储等。注意,有些存储库只支持只读使用。 - Metadata definition service
提供通用API,让用户自定义元数据。元数据可用于image、volume等不同的资源类型三、操作步骤
为简单起见,将image server安装在controller节点并将数据保存在本地文件系统上
准备工作
安装配置image server前需要先为其创建数据库,服务凭证以及API endpiont - 创建数据库并授权
[root@controller ~]# mysql MariaDB [(none)]> create database glance; MariaDB [(none)]> grant all privileges on glance.* to 'glance'@'localhost' identified by 'password1!'; MariaDB [(none)]> grant all privileges on glance.* to 'glance'@'%' identified by 'password1!';
2.使用admin身份创建glance用户并授权
[root@controller ~]# . admin-openrc [root@controller ~]# openstack user create --domain default --password-prompt glance
[root@controller ~]# openstack role add --project service --user glance admin
- 创建名为glance的image服务
[root@controller ~]# openstack service create --name glance --description "OpenStack Image" image
- 创建image服务API路径
usage: openstack endpoint create <service> <interface> <url> [root@controller ~]# openstack endpoint create --region RegionOne image public http://controller:9292
[root@controller ~]# openstack endpoint create --region RegionOne image internal http://controller:9292
[root@controller ~]# openstack endpoint create --region RegionOne image admin http://controller:9292
安装配置
- 安装程序并创建映像文件存放目录
[root@controller ~]# yum install openstack-glance [root@controller ~]# mkdir -pv /var/images
- 编辑/etc/glance/glance-api.conf配置文件
[database] connection = mysql+pymysql://glance:password1!@controller/glance [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = glance password = password1! [paste_deploy] flavor = keystone
注销或删除[keystone_authtoken]段的其他选项,在[glance_store]段设置映像文件存放位置
[glance_store] stores = file,http default_store = file filesystem_store_datadir = /var/images/
- 编辑/etc/glance/glance-registry.conf配置文件
[database] connection = mysql+pymysql://glance:password1!@controller/glance [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = glance password = password1! [paste_deploy] flavor = keystone
注销或删除[keystone_authtoken]段的其他选项
- 初始化image数据库并验证
[root@controller ~]# su -s /bin/sh -c "glance-manage db_sync" glance [root@controller ~]# mysql MariaDB [(none)]> show databases;
MariaDB [(none)]> use glance; MariaDB [glance]> show tables;
启动服务并设置开机自启
[root@controller ~]# systemctl enable openstack-glance-api.service openstack-glance-registry.service
[root@controller ~]# systemctl start openstack-glance-api.service openstack-glance-registry.service
结果验证
- 使用admin角色,下载映像文件
[root@controller ~]# . admin-openrc [root@controller ~]# wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
- 向image server上传映像文件并验证
glance用户必须对映像文件的存放目录有读写权限[root@controller var]# chown -R glance.glance images/ [root@controller ~]# openstack image create "cirros" --file cirros-0.4.0-x86_64-disk.img --disk-format qcow2 --container-format bare --public
[root@controller ~]# openstack image list
转载于:https://blog.51cto.com/arkling/2134538