glance
一.glance
1.概述
- glance:镜像服务(Openstack中的项目)
- 镜像:一系列文件,磁盘驱动器精确副本(复用)
- 镜像文件:类似于压缩包,按照格式制作成单一文件
- 镜像功能:创建操作系统
资源的集合,副本,提供单一的文件格式(镜像格式)给用户使用
2.镜像服务
1)概述
镜像服务:管理镜像的,发现、获取和保存镜像
发现:看到和识别
获取:能识别,有控制和使用权限
2)主要功能
1.查询和获取镜像元数据和镜像本身
2.注册和上传虚拟机镜像
3.维护镜像信息(元数据和镜像本身)
4.支持多种方式存储镜像(普通文件系统,swift,Amazon s3)
5.对虚拟机实例创建快照命令来创建新的镜像,备份虚拟机的状态(对于镜像的管理)
- 元数据:表述镜像的本身属性
3)Images API版本
glance提供的RESTful APl目前有两个版本
- API v1
- API v2
v1:只提供基础镜像和成员的操作功能
v2:在v1的基础上增加了镜像位置的添加、删除、元数据的名称空间操作
3.镜像格式
虚拟机镜像文件磁盘格式
raw:无结构的磁盘格式
磁盘镜像实列,二进制形存储的方式
- 优点:访问速度非常块
- 缺点:不支持动态扩容,前期消耗多
qcow2:由Qemu仿真支持,可动态扩展,支持写时复制的磁盘格式
QEMU:虚拟化的重要组件之一
4.镜像文件容器格式
bare:没有容器或元素据"信封"的镜像
Docker:在glance中存储的的容器文件系统的Dockerd的tar档案
- 如果不能确定选择哪种容器格式,那么简单地容器格式指定为bare
5.镜像的状态
状态1
- 1.初始化状态(queued):镜像文件刚被创建,glance数据库中只有元数据
镜像数据还没有上传到数据库中 - 2.正在上传镜像(saving):原数据在上传到数据库中的一种过度状态
- 3.uploading:已经进行导入数据提交调用
- 4.importing:已经完成调用,还没有准备好使用
状态2
- active:镜像数据成功上传完毕
- deactivated:只有管理原可以操作(维护)
- killed:镜像上传过程中发生错误,镜像不可读
- deleted:镜像将在不久后被自动删除,该镜像不可再用,glance仍然保存相关数据和原始数据
- pending_delete:与deletce类似,状态不可以恢复
6.权限访问
- public公共的:可以被所有项目的访问
- private私有的:只有内部可以使用
- shared共享:可由内部成员使用
- protected受保护的:这种镜像不能被删除
二.架构
- 1.client:相对于glance的外部,请求体
- 2.api:核心服务的交互的接口,接受请求,响应镜像查询,获取和存储的调用
- 3.glance-registry:私有仓库,glance注册服务进程,处理原数据相关的请求
包括元数据镜像大小
架构图:glance的DB模块,存储的是镜像的元数据,
镜像的元数据通过glance-registry存放在数据库中
镜像本身(chunk数据)是通过glance存储驱动存放到各种存储后端中
存储后端:store Backend:支持本地存储、对象存储、RBD块设备、
sheepdong分布式存储、cinder块存储、VMware数据存储
1.glance工作流程
流程:
Openstack操作要经过keystone进行身份认证,glance是一个c/s架构,提供REST API
用户通过REST API 来执行镜像各种操作,glance是一个主要的中间件,相当于调度器
1.client:到keystone 进行认证,keystone提供API 认证入口
2.keystone认证的URL:http//ct:5000/v3
3.keystone 返回给令牌, 持有令牌,返回到glance的API上
4.再次向keystone进行认证一次
5.确认后,处理请求,把任务交给glance Domain Controller(默认控制器)进行处理
6.glance Domain Controller(默认控制器)把任务操作分发给各个功能层
总结:
client客户端自己认证一个权限,获取令牌,获取glance后端位置
镜像请求,API向keystone进行认证,成功之后,交给controller处理
controller根据规则,把任务分别交给对应的组件进行处理
镜像本身的数据交给 glance store drivers
元数据信息交给registry layer来处理
他们会执行自己的职能,调取元数据,调取镜像本身,
通过controller返回给API,最后API返回请求给客户端
操作流程
1.创建数据库,授权
2.修改配置文件
对接mysql
对接keystone
初始化数据库
3.创建用户、授权、创建service、创建url(让open stack可以识别、管理内部组件)
其他的配置,都是该组件的一些功能性配置
三.glance组件部署
- 配置接:keystone部署之后keysone部署
为openstack安装glance的组件,全部在控制节点上操作
CT VM:192.168.153.10 NAT:192.168.133.70
1.创建数据库实例和数据库用户
mysql -u root -p
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';
flush privileges;
exit
2.创建用户、修改配置文件
1)创建OpenStack的Glance用户
- 创建用户前,需要首先执行管理员环境变量脚本(此处已经在~/.bashrc 中定义过了)
#创建glance用户
openstack user create --domain default --password GLANCE_PASS glance
#将glance用户添加到service项目中,并且针对这个项目拥有admin权限;注册glance的API,需要对service项目有admin权限
openstack role add --project service --user glance admin
#创建一个service服务,service名称为glance,类型为image;创建完成后可以通过 openstack service list 查看
openstack service create --name glance --description "OpenStack Image" image
2)创建镜像服务 API 端点,OpenStack使用三种API端点代表三种服务:admin、internal、public
openstack endpoint create --region RegionOne image public http://ct:9292
openstack endpoint create --region RegionOne image internal http://ct:9292
openstack endpoint create --region RegionOne image admin http://ct:9292
3)安装 openstack-glance 软件包
yum -y install openstack-glance
4)修改glance配置文件,
glance有两个配置文件:/etc/glance/glance-api.conf
/etc/glance/glance-registry.conf
cp -a /etc/glance/glance-api.conf{,.bak}
grep -Ev '^$|#' /etc/glance/glance-api.conf.bak > /etc/glance/glance-api.conf
5)添加glance-api.conf配置—传参
openstack-config --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@ct/glance
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken www_authenticate_uri http://ct:5000
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://ct:5000
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken memcached_servers ct:11211
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_type password
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_domain_name Default
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken user_domain_name Default
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_name service
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken username glance
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password GLANCE_PASS
openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
openstack-config --set /etc/glance/glance-api.conf glance_store stores file,http
openstack-config --set /etc/glance/glance-api.conf glance_store default_store file
openstack-config --set /etc/glance/glance-api.conf glance_store filesystem_store_datadir /var/lib/glance/images/
我们刚才传参的内容在文件中得到体现,当然,直接在配置文件里添加、修改参数也是可以的。
6)修改glance-registry.conf 配置文件
cp -a /etc/glance/glance-registry.conf{,.bak}
grep -Ev '^$|#' /etc/glance/glance-registry.conf.bak > /etc/glance/glance-registry.conf
7)添加glance-registry.conf 配置
openstack-config --set /etc/glance/glance-registry.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@ct/glance
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken www_authenticate_uri http://ct:5000
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_url http://ct:5000
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken memcached_servers ct:11211
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_type password
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_domain_name Default
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken user_domain_name Default
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_name service
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken username glance
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken password GLANCE_PASS
openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone
8)初始化glance数据库,生成相关表结构;(不管有多少个controler,只需要初始化一次即可)
su -s /bin/sh -c "glance-manage db_sync" glance
9)开启glance服务(此处开启之后会生成存放镜像的目录/var/lib/glance/image)
systemctl enable openstack-glance-api.service
systemctl start openstack-glance-api.service
10)查看端口
netstat -natp | grep 9292
#或(lsof需要安装)
yum -y install lsof
lsof -i:9292
11)赋予openstack-glance-api.service服务对存储设备的可写权限(-h:值对符号连接/软链接的文件修改)
chown -hR glance:glance /var/lib/glance/
3.测试是否部署成功
-
需要镜像:cirros-0.3.5-x86_64-disk.img
-
镜像导入
先上传cirros镜像到控制节点的/root,然后导入glance,最后查看是否创建成功
openstack image create --file cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --public cirros
查看镜像的两种方式:
openstack image list
或
glance image-list
总结:
-
glance:镜像服务
镜像服务:管理镜像,发现、获取保存镜像 -
功能
1.查询和获取镜像元数据和镜像本身
2.注册和上传虚拟机镜像
3.维护镜像信息(元数据和镜像本身)
4.支持多种方式存储镜像(普通文件系统,seift,Amazon s3)
5.对虚拟机实例创建快照命令来创建新的镜像,备份虚拟机的状态
(对于镜像的管理) -
操作流程:
1.创建数据库,授权
2.修改配置文件
对接mysql
对接keystone
初始化数据库
3.创建用户、授权、创建service、创建url(让open stack可以识别、管理内部组件)
其他的配置,都是该组件的一些功能性配置
- 架构工作流程
client客户端自己认证一个权限,获取令牌,获取glance后端位置
镜像请求,API向keystone进行认证,成功之后,交给controller处理
controller根据规则,把任务分别交给对应的组件进行处理
镜像本身的数据交给 glance store drivers
元数据信息交给registry layer来处理
他们会执行自己的职能,调取元数据,调取镜像本身,
通过controller返回给API,最后API返回请求给客户端