一、概述
Glance(OpenStack Image Service)是一个提供发现,注册,和下载镜像的服务。Glance 提供了虚拟机镜像的集中存储。通过 Glance 的 RESTful API,可以查询镜像元数据、下载镜像。虚拟机的镜像可以很方便的存储在各种地方,从简单的文件系统到对象存储系统(比如 OpenStack Swift)。
二、GLance功能
1.传统IT环境下,安装一个系统是从USB或CD上安装,要么用Ghost等克隆工具恢复。有以下几个问题:
1)安装的系统多了,效率就低了;
2)时间长,工作量大;
3)安装完还需要进行手动配置,比如设置IP和安装其他软件等;
4)备份和恢复系统不灵活;
2、在glance里image镜像被当做模板来存储;image是一个模块,包含了基本的操作系统和其他软件。
3、 GLance提供image Service服务,功能就是管理image,让用户能够发现、获取和保存image。(GLance是管理已安装的系统文件)
4、glance具体功能如下:
a、提供REST API让用户能够查询和获取image的元数据和image本身
b、支持多种方式存储image,包括普通的文件系统、Swift 、Amazon S3等
c、对Instance执行Snapshot创建新的image
注:GLance只查看镜像本身的数据,不关注镜像的其他情况,比如:镜像存储的路径,镜像是否存在等等
三、GLance架构
(1)glance-api
glance-api 是系统后台运行的服务进程。 对外提供 RESTFUL API,响应镜像查询、获取和存储的调用。glance-api 不会真正处理请求。
- 如果是与镜像 metadata(元数据)相关的操作,glance-api 会把请求转发给 glance-registry;
- 如果是与镜像自身存取相关的操作,glance-api 会把请求转发给该 image 的存储后端。
(2)glance-registry
glance-registry 是系统后台运行的服务进程。 负责处理和存取镜像的 metadata,例如镜像的大小和类型。
1、用户发送请求到glance,glance内部逻辑上通过REST API AuthZ 中间件 keystone进行身份验证——>中间件 keystore 进行身份验证
2、 keystone验证通过后,由Glance Domain Controller判
断:
1)如果是元数据相关的操作,将把请求转发给glance-registry
写和上传等对数据库有修改的请求都要经过Registry Layer,
只有符合其设置的条件的命令才能通过Database Abstraction
Layer 到达数据库,而对数据库的读操作则不用通过Registry
Layer ,直接到达数据
2)如果是镜像存储相关的,则转到Glance Store,由Glance Store Drives AuthN keystone验证 ,通过后到达后端存储
3、具体解释
1)A client:任何使用GLance服务器的应用程序;
2)REST API:GLance提供REST访问API;
3)Database Abstraction Layer(DAL)同一GLance和数据库之间
通信的应用程序编程接口(API)
4)GLance Domain Controller:域控制器,实现主要的中间件功能;比如授权,通知,策略,数据库连接;
5)Glance Store:用于组织Glance和各种数据存储之间的交互;
6)Registry Layer(注册表层):用于通过使用单独的服务来组织域和DAL之间的安全通信的可选层;
4、镜像磁盘文件格式
5.Database --image的metadata会保持到database中默认是 (在控制节点上可以查看Glance的database信息)
6.Store backend --Glance自己并不存储image,真正的image是存放在backend中的;
Glance支持的多种backend,包括:
*.A directory on啊localfile system(默认设置)
*.GridFS 使用MongoDB存储镜像。
*.Ceph RBD 使用Ceph的RBD接口存储到Ceph集群中
*.Amazon S3 亚马逊的S3
*.Sheepdog 专为QEMU/KVM提供的一个分布式存储系统
*.Openstack Block Storage(Cinder)
*.OpenStack Object Stortage(Swif)
*.VMware ESX
注:具体使用哪种backend,是在/etc/glance/glance-api.conf中配置的
四、镜像文件的访问权限
1.Public公用的:可被所有的Tenant使用
2.Private私有的/项目的:只能被image Owner所在的Tenan
使用
3.Shared共享的:一个非公共的image可以共享给指定的Tenant,通过member-*操作来实现。
4.Protected受保护的:Protected Image不能被删除
五、image的状态类型
1.Queued:没有上传image数据,只有SQL Database中存有该镜像的元数据(标识该镜像的ID)
2.Saving:标识镜像正在上传image
3.Active:正常状态,标识镜像在Glance中完全使用
4.Deleted/pending_delete:已删除/等待删除的image
5.Killed:标识镜像上传过程中出错,image元数据不正确,镜像完全不可用,等待被删除。
6.deleted:Glance已经保存了镜像的信息,但是无法继续使用。在此状态下的镜像稍后将会被自动清除。
7.pending_delete :类似于deleted,区别在于Glance还没有移除镜像数据。在此状态下的镜像是可以被恢复的。
六、创建images
有两种方法:Web UI(Horizon)和命令行CLI(推荐使用),API v1已经在Newton版本中被删除了。
*.Web UI的功能没有CLI全,有些操作只提供了CLI。即便是都有的功能,CLI可以使用的参数更多;
*.一般来说,CLI返回结果更快,操作起来更高效;
*.CLI可放在脚本中进行批处理;
*.有些耗时的操作CLI更合适,比如创建镜像;
注:glance image-creat -name cirros --file ~/cirros0.3.4-x86_64-disk.img --disk-fromat qcow2 --contatiner-format bare --progress
Linux Cloud images
CentOS: CentOS6 CentOS7
CirrOS:Download Test image qcow2 formation for QEMU and KVM (crrios cubswin
Debian:Download (debian)
Fedora:Download
Windows:Downloadruns on Hyper-V,KVM, and XenServer/XCP
七、实验
Base 节点上,创建glance数据库并设置数据库的访问权限即所有客户端都可以访问数据库
Ctrl节点上
初始化admin环境变量,以admin身份运行命令
创建glance用户
给project和glance用户指定角色admin
创建glance镜像服务
创建glance镜像服务组件的endpoint
yum install openstack-glance
编写配置文件 vim /etc/glance/glance-api.conf
[database] 配置数据库连接
connection = mysql+pymysql://glance:GLANCE_DBPASS@base.nba.com/glance
[keystone_authtoken] 配置keystone身份认证服务
auth_uri = http://ctrl.nba.com:5000
auth_url = http://ctrl.nba.com:35357
memcached_servers = base.nba.com: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/
openstack image create "cirros" \
--file cirros-0.3.5-x86_64-disk.img \
--disk-format qcow2 --container-format bare \
--public
初始化glance数据库
启动glance api
查验生成的21张表 在base节点上
启动glance-api和registry 服务
下载镜像
上传镜像,镜像磁盘格式为qcow2 访问权限为public
同时开启第二个窗口查验