一、服务概述
镜像服务 (glance) 允许用户发现、注册和获取虚拟机镜像。它提供了一个 REST API,允许您查询虚拟机镜像的 metadata 并获取一个现存的镜像。您可以将虚拟机镜像存储到各种位置,从简单的文件系统到对象存储系统—-例如 OpenStack 对象存储, 并通过镜像服务使用。
OpenStack镜像服务是IaaS的核心服务,如同 :ref:`get_started_conceptual_architecture`所示。它接受磁盘镜像或服务器镜像API请求,和来自终端用户或OpenStack计算组件的元数据定义。它也支持包括OpenStack对象存储在内的多种类型仓库上的磁盘镜像或服务器镜像存储。
大量周期性进程运行于OpenStack镜像服务上以支持缓存。同步复制(Replication)服务保证集群中的一致性和可用性。其它周期性进程包括auditors, updaters, 和 reapers。
OpenStack镜像服务包括以下组件:
- glance-api:接收镜像API的调用,诸如镜像发现、恢复、存储。
- glance-registry:存储、处理和恢复镜像的元数据,元数据包括项诸如大小和类型。
- 数据库:存放镜像元数据,用户是可以依据个人喜好选择数据库的,多数的部署使用MySQL或SQLite。
- 镜像文件的存储仓库:支持多种类型的仓库,它们有普通文件系统、对象存储、RADOS块设备、HTTP、以及亚马逊S3。记住,其中一些仓库仅支持只读方式使用。
- 元数据定义服务:通用的API,是用于为厂商,管理员,服务,以及用户自定义元数据。这种元数据可用于不同的资源,例如镜像,工件,卷,配额以及集合。一个定义包括了新属性的键,描述,约束以及可以与之关联的资源的类型。
- 警告:glance-registry是私有内部服务,用于服务OpenStack Image服务。不要向用户暴露该服务
- 二、安装和配置
准备工作:安装和配置镜像服务之前,你必须创建创建一个数据库、服务凭证和API端点
1、创建数据库并授权
[root@controller ~]# mysql -u root -p MariaDB [(none)]> CREATE DATABASE glance; MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';
2、创建 glance 用户,添加 admin 角色到 glance 用户和 service 项目上
[root@controller ~]# openstack user create --domain default --password GLANCE_PASS glance +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | 73e42b9fc6b64cfdb17940cdf0a0f692 | | enabled | True | | id | 7a6f6526409c459a980d9b441c6e3575 | | name | glance | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+ [root@controller ~]# openstack role add --project service --user glance admin
查看命令
[root@controller ~]# openstack project list
[root@controller ~]# openstack role assignment list
[root@controller ~]# openstack role list
[root@controller ~]# mysql keystone -e "show tables;" |grep role 过滤表,查看是否有个role表
3、在keystone上创建服务,并注册api
[root@controller ~]# openstack service create --name glance --description "OpenStack Image" image [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
4、安装相应的服务
[root@controller ~]# yum install openstack-glance -y
5、编辑文件 /etc/glance/glance-api.conf 并完成如下动作
cp /etc/glance/glance-api.conf{,.bak} grep '^[a-z[]' /etc/glance/glance-api.conf.bak >/etc/glance/glance-api.conf [database] 在 [database] 部分,配置数据库访问 ... connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance [keystone_authtoken] 在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问 ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = GLANCE_PASS 将 GLANCE_PASS 替换为你为认证服务中你为 glance 用户选择的密码。 [paste_deploy] ... flavor = keystone [glance_store] 在 [glance_store] 部分,配置本地文件系统存储和镜像文件位置 ... stores = file,http default_store = file filesystem_store_datadir = /var/lib/glance/images/
6、编辑文件 ``/etc/glance/glance-registry.conf``并完成如下动作
cp /etc/glance/glance-registry.conf{,.bak} 备份配置文件 grep '^[a-z[]' /etc/glance/glance-registry.conf.bak >/etc/glance/glance-registry.conf 过滤空格和注释行 [database] 在 [database] 部分,配置数据库访问 ... connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance [keystone_authtoken] 在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问 ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = GLANCE_PASS [paste_deploy] ... flavor = keystone
7、数据库同步
[root@controller ~]# su -s /bin/sh -c "glance-manage db_sync" glance [root@controller ~]# mysql glance -e "show tables;"
8、启动服务
systemctl enable openstack-glance-api.service openstack-glance-registry.service 加入自启动项
systemctl start openstack-glance-api.service openstack-glance-registry.service 批量启动服务
9、上传一个测试镜像验证服务
下载地址:http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
[root@controller opt]# openstack image create "cirros" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public
上传成功!!!
10、验证,查看镜像位置
11、查看相关信息
[root@controller ~]# openstack image list 查看镜像列表 +--------------------------------------+--------+--------+ | ID | Name | Status | +--------------------------------------+--------+--------+ | 6ee7c745-cad8-46a0-ba90-78bbaa3ba1e8 | cirros | active | +--------------------------------------+--------+--------+ [root@controller ~]# mysql glance -e "show tables;"|grep image 查看镜像存储的数据库表 image_locations image_members image_properties image_tags images [root@controller ~]#