05-glance组件

2019-12-25 16:12:56 浏览数 (1)

一、glance

1.为什么要glance?

现在自己电脑出了问题,要重装系统,会有以下步骤

1.制作一个PE启动盘

2.进行PE,选择(ISO/GHO)镜像开始安装

3.进行系统后,设置网络,安装常用软件

如果现在要为一个机房的电脑去装系统,那么会出现

  • 数量太多,花费时间长,工作量大
  • 安装好以后还要逐个配置
  • 如果出了问题,备份和恢复不灵活

如果在云环境中有成千上万的主机需要安装系统,那太慢了,怎么办呢?

  • Glance组件就可以解决这个问题

有一个CTF比赛环境需要为每台靶机都配置Centos7系统,并行里面集成了各种漏洞测试环境、各种渗透测试工具

在OpenStack中做法如下

  1. 先在虚拟机中自己手工安装好Centos7环境
  2. 然后把比赛要用到中各种的工具都放里面
  3. 然后把虚拟机导出成qcow2格式,做成一个模板,上传到OpenStack里去
  4. 下次再建立虚拟机的时候,可以直接使用这个模板来创建虚拟机
  5. 如果还有什么新的测试工具或者新的漏洞测试环境,可以直接加上模块虚拟机中,做一个快照
  6. 下次想里面新东西时,可以基于快照创建虚拟机

上面的这些功能都是由glance完成的

2.理解glance

glance的功能是,通过glance-api接收用户对镜像的增、删、查、改的请求,并管理镜像的元数据,使用后端的储存系统,来保存镜像。

3.glance架构功能

glance构架图glance构架图

Glance-api

  • 接收REST API的请求,然后通过其他模块(glance-registry及image store)来完成对镜像的上传、查找、获取、删除等操作,默认监听端口9292。

Glance-registry

  • 用于与MariaDB数据库交互,用于存储或获取镜像的元数据(metadata);
  • 通过glance-registry,可以向数据库中写入或获取镜像的各种数据,glance-registry监听端口9191。

Store Adapter

  • 是一个后端存储系统的接口,通过这个接口,glance在这时可以对镜像进行储取
  • image store支持的存储有ceph、Swift,本地文件储存,其他分布式文件存储。

4.Glance几个重要概念

镜像状态(image status)

Queued

初始化镜像状态,在镜像文件刚刚被创建,在glance数据库中已经保存了镜像标示符,但还没有上传至后端储存中

Saving

镜像的原始数据在上传中的一种过度状态,它产生在镜像数据上传至glance的过程中

Active

当镜像成功上传完毕以后的一种状态,它表明glance中可用的镜像。

Killed

出现在镜像上传失败或者镜像文件不可读的情况下,glance将镜像状态设置成Killed。

Deleted

表明一个镜像文件马上会被删除,只是当前glance这种仍然保留该镜像文件的相关信息和原始镜像数据。

Pending_delete

类似于deleted,虽然此时的镜像文件没有删除,但镜像文件不能恢复的。

磁盘格式(Disk Forma)

格式类型

格式描述

raw

非结构化的镜像格式

vhd

一种通用的虚拟机磁盘格式, 可用于Vmware、Xen、Microsoft Virtual PC/Virtual Server/Hyper-V、VirtualBox等。

vmdk

Vmware的虚拟机磁盘格式, 同样也支持多种Hypervisor

vdi

VirtualBox、QEMU等支持的虚拟机磁盘格式

iso

光盘存档格式

qcow2

一种支持QEMU并且可以动态扩展的磁盘格式

aki

Amazon Kernel 镜像

ari

Amazon Ramdisk 镜像

ami

Amazon 虚拟机镜像

容器格式(Container Format)

格式类型

格式描述

bare

没有容器的一种镜像元数据格式

ovf

开放虚拟化格式 (Open Virtualization Format)

ova

开放虚拟化设备(Open Virtualization Appliance)

5.glance组件的工作过程

glance工作流程glance工作流程

6.Glance配置文件

api

/etc/glance/glance-api.conf

glance-API服务ip端口、安装调度、镜像后端存储、身份验证、日志位置

registry

/etc/glance/glance-registry.conf

Registry服务的网络地址、监听的端口号、glance与Registry间通信的协议、数据库连接、消息队列rabbitmq连接信息

log

/var/log/glance/registry.log

/var/log/glance/api.log

实验

使用swift作为glance的存储方式

K版

编辑配置文件
代码语言:txt复制
[root@controller glance]# vim /etc/glance/glance-api.conf 

#修改默认存储方式为swift,之前报错的原因就是这里没改成swift
default_store=swift

#把前面的注释打开,中间用了一个逗号隔开表示它们是stores的同一条配置项
stores=glance.store.swift.Store,
         glance.store.http.Store

#swift存储认证地址,填控制节点的keystone的地址
swift_store_auth_address=192.168.150.10:5000/v2.0/

#存储用户名,填写项目名称:用户名称
swift_store_user=service:swift

#用户密码,在安装openstack应答的ans.txt文件中去搜SWIFT相关的内容
swift_store_key=a55532c6cdd941ca

#使用那个swift的容器,名字可以自己取
swift_store_container=myimages

#如果容器不存在则自动创建
swift_store_create_container_on_put=True

#单个文件的最大大小,单位MB
swift_store_large_object_size=10240

RDO版

编辑配置文件
代码语言:txt复制
#设置默认存储
default_store=swift

#存储类型
stores=file,http,swift

#存储容器,自动创建,注意大小写
swift_store_create_container_on_put=true
swift_store_container=myimages

#单个文件大小
swift_store_large_object_size=10240

#注意这里版本是3,不是2,可以参照/root/keystonerc_admin文件内容
swift_store_auth_version=3
swift_store_auth_address=http://192.168.150.10:5000/v3

#项目名称和密码
swift_store_user=services:swift
swift_store_key=560699fead294ca5

重启服务

代码语言:txt复制
systemctl restart openstack-glance-api.service

上传镜像

  • 在admin里面上传镜像测试,为了保证权限充足,admin组中加入glance和swift用户
代码语言:txt复制
[root@controller glance]# tailf /var/log/glance/api.log 
#没找到myimages容器
2019-12-11 11:09:55.155 28432 TRACE swiftclient   File "/usr/lib/python2.7/site-packages/swiftclient/client.py", line 685, in head_container
2019-12-11 11:09:55.155 28432 TRACE swiftclient     http_response_content=body)
2019-12-11 11:09:55.155 28432 TRACE swiftclient ClientException: Container HEAD failed: http://192.168.150.10:8080/v1/AUTH_2ba3cf54d30c4055a901e5b6ded2c96e/myimages 404 Not Found
2019-12-11 11:09:55.155 28432 TRACE swiftclient 
2019-12-11 11:09:55.156 28432 INFO glance_store._drivers.swift.store [381a6450-8096-4192-8a0f-b7a44bc8241a 
------------------------------------------------------------------------------------------------------------------------
#自动创建myimages容器
5a5306abff4c4db19fe935b27cfbc29d 2ba3cf54d30c4055a901e5b6ded2c96e - - -] Creating swift container myimages
2019-12-11 11:09:57.825 28432 INFO glance.wsgi.server [381a6450-8096-4192-8a0f-b7a44bc8241a 5a5306abff4c4db19fe935b27cfbc29d 2ba3cf54d30c4055a901e5b6ded2c96e - - -] 192.168.150.10 - - [11/Dec/2019 11:09:57] "HEAD /v1/images/c269c908-85c8-496e-be79-cf446c32d5dc HTTP/1.1" 200 724 0.025709
------------------------------------------------------------------------------------------------------------------------
#上传镜像成功
2019-12-11 11:10:04.619 28432 INFO glance.api.v1.images [381a6450-8096-4192-8a0f-b7a44bc8241a 5a5306abff4c4db19fe935b27cfbc29d 2ba3cf54d30c4055a901e5b6ded2c96e - - -] Uploaded data of image c269c908-85c8-496e-be79-cf446c32d5dc from request payload successfully.
  • 查看对象存储数据的位置
代码语言:txt复制
[root@controller objects]# df
文件系统          1K-块    已用     可用 已用% 挂载点
/dev/sda2      41153760 4694324 34345900   13% /
devtmpfs        2966508       0  2966508    0% /dev
tmpfs           2976304      84  2976220    1% /dev/shm
tmpfs           2976304   17420  2958884    1% /run
tmpfs           2976304       0  2976304    0% /sys/fs/cgroup
/dev/sda1        487634   85777   372161   19% /boot
tmpfs           2976304   17420  2958884    1% /run/netns
/dev/loop0      1900368  610740  1168388   35% /srv/node/swiftloopback
#就是在/srv/node/swiftloopback下面了
  • 去到对象存储文件夹,查看数据结构
代码语言:txt复制
[root@controller /]# cd /srv/node/swiftloopback/objects
[root@controller objects]# tree 19787/
19787/
├── cf3
│   └── 1352f04d2e39df25a08b0e87298b5cf3
│       └── 1576033795.21699.data
└── hashes.pkl

2 directories, 2 files
  • 查看具体文件大小信息
代码语言:txt复制
[root@controller objects]# ls -lhR 19787/
19787/:
总用量 8.0K
drwxr-xr-x 3 swift swift 4.0K 12月 11 11:10 cf3
-rw------- 1 swift swift   48 12月 11 11:10 hashes.pkl

19787/cf3:
总用量 4.0K
drwxr-xr-x 2 swift swift 4.0K 12月 11 11:10 1352f04d2e39df25a08b0e87298b5cf3

19787/cf3/1352f04d2e39df25a08b0e87298b5cf3:
总用量 591M
-rw------- 1 swift swift 591M 12月 11 11:10 1576033795.21699.data

0 人点赞