CentOS 7.x 部署 OpenStack 之镜像服务Glance (三)


一、基础理论篇

 

1. Glance的概述

Glance是为虚拟机的创建提供镜像的服务,我们基于Openstack是构建基本的IaaS平台对外提供虚拟机,而虚拟机在创建时必须为选择需要安装的操作系统,Glance服务就是为该选择提供不同的操作系统镜像。

 

2. Glance 主要组件

2.1 glance-api

  glance-api用于接收镜像API的调用,如镜像发现、恢复以及存储等。作为一个后

台进程, glance-apl对外提供 REST API接口,响应用户发起的镜像查询、获取和存储的

调用。

 

2.2 glance-registi

glance-registry用于存储、处理和恢复镜像的元数据,元数据包括镜像的大小和类型

等属性。 registry是一个内部服务接口,不建议暴露给普通用户

2.3 Database

 database用于存放镜像的元数据,可以根据需要选择数据库,MySQLSQLite等。

2.4  storage repository for image files

一般情况下, Glance并不需要存储仼何镜像,而是将镜像存储在后端仓库中。 Glance

支持多种 repository。主要包括对象存储Swit、块存储 CinderVMwareESX/ESXI

或者 vCenter、亚马逊的S3HTP可用服务器、Ceph

 

 

 

3. 镜像的格式

Glance支持多种镜像格式,包括磁盘格式和容器格式。 Open Stack中支持多种虚拟

化的技术,KVMXen ServerHyper-VMware等。用户在上传镜像时,需要指

定上传镜像文件的格式。除了磁盘格式,Glance中还有容器格式。一般在上传镜像时

只需指定容器格式为bare,即为空。因为 Glance中并没有真正使用到容器格式。容器格

式用来表示虚拟机镜像文件是否包含了元数据,例如OVF格式。下面列出了几种 Glance

中常用的镜像文件格式

3.1 RAW

RAW是一种没有格式或裸格式的磁盘文件类型。RAW对数据不做任何修饰和处理,

直接保存最原始的状态,所以在性能方面非常出色。由于RAW格式保存原始数据,

此更容易和其他镜像格式之间进行转换

3.2 QCOW2

QCOw2QCOW的升级版本,其主要特性是磁盘文件大小可以动态按需增长,

且不会占用所有的实际磁盘空间大小。例如创建了100GBQCOW2格式的磁盘,而实

际只保存了2GB数据,那么将只占用实际物理磁盘的2GB空间。与RAW相比,使用

QCOW2格式可以节省磁盘容量。

3.3 VHD

VHD是微软公司产品使用的磁盘格式。 Virtual Pc(微软早期虚拟化产品)Hyper-V

使用的就是VHD格式。 VirtualBox也提供了对vHD的支持。如需在 Open Stack上使用Hyper-V类型的虚拟化,就应上传VHD格式的镜像文件

 

3.4 VMDK

VMDKVMware公司产品使用的磁盘格式。目前也是一个开放的通用格式

除了VMware的产品外,QEMUⅤ irtualBox也提供了对VMDK格式的支持。

3.5 VDI

VDI Oracle 公司的VirtualBox虚拟机软件使用的格式。

3.6 ISO

ISO 是一种存档文件在光盘上的格式。

4.7 AKI ARIAMI

AKIARI、均为Amazon 公司的AWS 所用的镜像格式。




4.Glance的工作流程

Glance需要配置的服务:glance-apiglance-registry
Glance-api:接受云系统镜像的创建、删除、读取请求
Glance-registry:云系统镜像注册服务


 image.png


二、实践操作篇

 

1.环境说明

 

 

系统

主机名

IP地址

CentOS 7.7

controller

ens33:10.0.0.129

ens37:192.168.248.140

CentOS 7.7

compute

ens33:10.0.0.130

ens37:192.168.248.141

 

 

虚拟机网卡配置
ens33 VMnet1仅主机模式
ens37 VMnet8 Nat模式

 

 

2.  Glance的配置

 

Glance安装配置(此处将glance服务配置在控制节点上)

 

 

2.1 安装Glance相关软件包

[root@controller ~]# yum install -y openstack-glance

 

2.2创建Glance数据库

[root@controller ~]# mysql -uroot -p

MariaDB [(none)]> create database glance;

Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on glance.* to 'glance'@'localhost' identified by 'glance';

Query OK, 0 rows affected (0.11 sec)

MariaDB [(none)]> grant all privileges on glance.* to 'glance'@'%' identified by 'glance';

Query OK, 0 rows affected (0.00 sec)

image.png

2.3 修改配置文件,配置数据库连接

编辑文件 /etc/glance/glance-api.conf 

[database] 部分,配置数据库访问:

 

[database]

...

connection = mysql+pymysql://glance:glance@10.0.0.129/glance

同步修改/etc/glance/glance-registry.conf

 

[database] 部分,配置数据库访问:

 

[database]

...

connection = mysql+pymysql://glance:glance@10.0.0.129/glance

 

2.4 然后初始化glance数据库

[root@controller ~]# su -s /bin/sh -c "glance-manage db_sync" glance

 检查数据表是否生成成功

[root@controller ~]# mysql -h 10.0.0.129 -uglance -pglance -e "use glance;show tables;"

image.png

2.5 创建service项目

 

服务之间交互就需要用到keystone认证,用到认证就需要用户,用户必须属于一个项目当中,我们将这一些组件的用户都放入到service项目中,便于管理
在执行命令之前记得先运行如下命令:
[root@controller ~]# source admin-openstack.sh

 

[root@controller ~]# openstack project create --domain default --description "Service Project" service


image.png

2.6 创建glance用户

[root@controller ~]# openstack user create --domain default --password-prompt glance


image.png

这个glance用户主要是用于glance组件认证用的

 

2.7 赋予glance用户admin角色

 

keystone篇章已经创建admin角色

 

[root@controller ~]# openstack role add --project service --user glance admin

 

2.8 创建glance实体和endpoint端点信息

 

 

OpenStack里的每一个组件都需要在keystone里面创建对应的服务实体以及端点信息,这样才能够为外部访问用户提供访问路径

 

创建glance服务实体

[root@controller ~]# openstack service create --name glance --description "Openstack Image" image

image.png

创建Glance服务的三个API端点(公有、私有、admin)

 

 公有端点的创建

 

[root@controller ~]#openstack endpoint create --region RegionOne image public http://controller:9292

image.png


创建私有端点信息

 [root@controller ~]# openstack endpoint create --region RegionOne image internal

http://controller:9292



image.png


创建admin管理员端点

[root@controller ~]# openstack endpoint create --region RegionOne image admin http://controller:9292

image.png


以上创建都只存在一个端口信息,因为Glance只有一个端口是对外暴露的,就是Glance-api 的9292端口

 

3.配置镜像服务

 

3.1 修改Glance-Api的配置文件

 

[root@controller ~]# vi /etc/glance/glance-api.conf

[keystone_authtoken]

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 #glance用户

password = 123456 #glance用户的密码

......

 

[paste_deploy]

flavor = keystone

......

 

配置上传镜像存放的路径

 

[glance_store] 

stores = file,http

default_store = file

filesystem_store_datadir = /var/lib/glance/images

....

 

3.2 修改Glance-Registry的配置文件

 

[keystone_authtoken] 

 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 = 123456

 

......

 

 

[paste_deploy] 

flavor = keystone

......

这个文件就只修改以上这一些即可

 

 

3.3启动相应服务即可

 

[root@controller ~]# systemctl start openstack-glance-api

 [root@controller ~]# systemctl enable openstack-glance-api 

[root@controller ~]# systemctl start openstack-glance-registry 

[root@controller ~]# systemctl enable openstack-glance-registry

查询对应端口是否运行

[root@controller ~]# ss -tan | grep 9191

 LISTEN 0 128 *:9191 *:* 

[root@controller ~]# ss -tan | grep 9292

 LISTEN 0 128 *:9292 *:*


image.png

3.4验证测试glance服务是否搭建成功

 

 

[root@controller ~]# openstack image list //使用这一个命令可以查询glance的镜像列表 当前为空  

也可以使用如下命令进行查询

[root@controller ~]# glance image-list

 

image.png


4. 上传镜像

 

4.1  下载cirros镜像用于测试

[root@controller ~]# wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

 

4.2 然后上传到glance镜像服务

 

 

命令格式:

openstack image create 名称 --file 指定镜像所在的路径 --disk-format 指定磁盘的类型为qcow2 --container-format 指定容器的格式为bare --public 代表公共资源,谁都可以访问

[root@controller ~]# openstack image create "cirros" --file /root/cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public

image.png


注:除了以上的方法,还有一种方法也可以实现操作:

glance image-create --name 指定名称  --file 指定文件所在的路径 --disk-format 指定磁盘格式 --container-format 指定容器格式

4.3查看上传的效果

[root@controller ~]# glance image-list 

image.png


也可以使用:openstakc image list 来查看也可以

查看对应目录是否生成有镜像:

# ls /var/lib/glance/images/d20c35e5-ffa8-4d57-babc-9f1bf56a850d

 

/var/lib/glance/images/d20c35e5-ffa8-4d57-babc-9f1bf56a850d


标签: 云计算

作者头像
南宫俊逸创始人

君子好学,自强不息~

上一篇:CentOS 7.x 部署OpenStack 之 认证服务 Keystone (二)
下一篇:文件误删,用 Windows File Recovery 工具秒恢复。

发表评论

阿里云2021年 618 年中钜惠活动