概览

OpenStack 镜像服务 Glance 是 IaaS(Infrastructure as a Service,基础设施即服务)的核心服务。允许用户发现、注册和获取虚拟机镜像。它提供了一个 Rest API,允许您查询虚拟机镜像的元数据,并获取镜像。您可以将镜像存储在任何位置,比如文件系统、对象存储,我们采用Ceph集群进行存储。

Glance包括以下组件:

  • glance-api:接收API调用,实现镜像发现、恢复、存储等功能。
  • glance-registry:存储、处理和恢复镜像的元数据,元数据包括诸如大小和类型。Glance-registry 是私有内部服务,用于服务OpenStack Image 服务,不要向公网暴露该服务。
  • 数据库:存放镜像元数据,用户是可以依据个人喜好选择数据库的,此处使用 MariaDB。
  • 镜像文件和存储仓库:包括普通文件系统、对象存储、RADOS 块设备、HTTP、S3 等。
  • 元数据定义服务:通用的 API,是用于为厂商,管理员,服务,以及用户自定义元数据。这种元数据可用于不同的资源,例如镜像,卷,配额以及集合。一个定义包括了属性的键,描述,约束以及可以与之关联的资源的类型。

安装和配置

如何在控制节点上安装Glance? 先决条件:

  1. 创建数据库:
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';
MariaDB [(none)]> flush privileges;
  1. 获得admin凭证来获取只有管理员才能执行的命令的访问权限:
[root@ct1 ~]# . admin-openrc
  1. 创建服务证书:
#创建 glance用户:
[root@ct1 ~]# openstack user create --domain default --password-prompt glance
#添加admin角色到glance用户和service项目上:
[root@ct1 ~]# openstack role add --project service --user glance admin
#创建glance服务实体:
[root@ct1 ~]# openstack service create --name glance --description "OpenStack Image" image
  1. 创建镜像服务的API端点:
[root@ct1 ~]# openstack endpoint create --region RegionOne image public http://ct1.vtlab.io:9292
[root@ct1 ~]# openstack endpoint create --region RegionOne image internal http://ct1.vtlab.io:9292
[root@ct1 ~]# openstack endpoint create --region RegionOne image admin http://ct1.vtlab.io:9292

安装并配置glance组件

  1. 安装软件包:
[root@ct1 ~]#yum -y install openstack-glance
  1. 修改 glance-api 配置文件
[root@ct1 ~]# vim /etc/glance/glance-api.conf
[databases] 
connection = mysql+pymysql://glance:GLANCE_DBPASS@ct1.vtlab.io/glance
[keystone_authtoken] #配置认证服务:
auth_uri = http://ct1.vtlab.io:5000
auth_url = http://ct1.vtlab.io:35357
memcached_servers = ct1.vtlab.io:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = GLANCE_PASS
[paste_deploy]
flavor = keystone
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
3.	编辑 glance-registry 配置文件
``` shell
[root@ct1 ~]# vim /etc/glance/glance-registry.conf
[database] 
connection = mysql+pymysql://glance:GLANCE_DBPASS@ct1.vtlab.io/glance
[keystone_authtoken] 配置认证服务:
auth_uri = http://ct1.vtlab.io:5000
auth_url = http://ct1.vtlab.io:35357
memcached_servers = ct1.vtlab.io:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = GLANCE_PASS
[paste_deploy]
flavor = keystone
4.	写入镜像服务数据库
[root@ct1 ~]# su -s /bin/sh -c "glance-manage db_sync" glance
5.	启动服务,并设置开机自启动
[root@ct1 ~]# systemctl start openstack-glance-api.service openstack-glance-registry.service
[root@ct1 ~]# systemctl enable openstack-glance-api.service openstack-glance-registry.service

#### 验证操作
对glance服务进行验证
1.	获得admin凭证来获取只有管理员才能执行的命令的访问权限:
[root@ct1 ~]# . admin-openrc
2.	下载源镜像:
[root@ct1 ~]# wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
3.	使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它:
[root@ct1 ~]# openstack image create "cirros" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public
4.	确认镜像的上传并验证属性:
[root@ct1 ~]# openstack image list