1.4 OpenStack镜像服务Glance

Glance概述

OpenStack中的Glance是镜像服务,能够提供发现、注册并查询虚拟机镜像,也是Openstack的一个组件或者说项目之一。镜像服务提供了一个Rest API的方式。 OpenStack的Glance镜像可以存放在本地文件系统,也可以存放在OpenStack的对象存储上。默认情况下是本地文件,存放在/var/lib/glance/images/目录下。 Glance还管理着快照,快照也是一种镜像,可以基于快照创建新的虚拟机。

Glance主要有两个组件

(图2.5.2)

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

  • glance-registry用于与MySQL数据库交互,用于存储或获取镜像的元数据(metadata);提供镜像元数据相关的REST接口,通过glance-registry,可以向数据库中写入或获取镜像的各种数据,glance-registry监听端口9191。Glance的数据库中有两张表,一张是image表,另一张是image property表。Image表保存了镜像格式、大小等信息;image property表则主要保存镜像的定制化信息。

  • database 用户存放镜像的元数据。

  • image store是一个存储的接口层,通过这个接口,glance可以获取镜像,image store支持的存储有Amazon的S3、OpenStack本身的Swift,还有诸如ceph,sheepdog,GlusterFS等分布式存储。 Image store是镜像保存与获取的接口,它仅仅是一个接口层,具体的实现需要外部的存储支持,

Glance部署

  1. 安装Glance

    [root@linux-node1 ~]# yum install -y openstack-glance
    
  2. 配置Glance

Glance的配置是通过修改两个组件的配置文件来完成。Glance使用了MySQL和Keystone。

  • Glance数据库配置
[root@linux-node1 ~]# vim /etc/glance/glance-api.conf 
[database]
connection= mysql+pymysql://glance:glance@192.168.56.11/glance
  • 设置Keystone

就像在Keystone章节提到了。OpenStack其它组件都需要和Keystone进行交互,来进行用户认证和服务目录的管理。对于Glance来说,Keystone的配置在glance-api.conf和glance-registry.conf都需要设置,而且配置相同。 glance-api.conf配置

[root@linux-node1 ~]# vim /etc/glance/glance-api.conf
[keystone_authtoken]
www_authenticate_uri  = http://192.168.56.11:5000
auth_url = http://192.168.56.11:5000
memcached_servers = 192.168.56.11:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = glance

[paste_deploy]
flavor=keystone
  • 设置Glance镜像存储
    [root@linux-node1 ~]# vim /etc/glance/glance-api.conf
    #默认的存储方式是文件,可以指定镜像存储的路径
    [glance_store]
    stores = file,http
    default_store=file
    filesystem_store_datadir=/var/lib/glance/images/
    #也就是说,我们后面上传的镜像都保存在/var/lib/glance/images目录下。
    
  1. 同步数据库

    [root@linux-node1 ~]# su -s /bin/sh -c "glance-manage db_sync" glance
    测试数据库同步情况
    [root@linux-node1 ~]# mysql -h 192.168.56.11 -uglance -pglance -e "use glance;show tables;"
    
  2. 启动Glance服务

[root@linux-node1 ~]# systemctl enable openstack-glance-api.service 
[root@linux-node1 ~]# systemctl start openstack-glance-api.service
  1. Glance服务注册

    想要让别的服务可以使用Glance,就需要在Keystone上完成服务的注册。注意需要先source一下admin的环境变量。

    [root@linux-node1 ~]# source /root/admin-openstack.sh
    # openstack service create --name glance --description "OpenStack Image" image
    # openstack endpoint create --region RegionOne image public http://192.168.56.11:9292
    # openstack endpoint create --region RegionOne image internal http://192.168.56.11:9292
    # openstack endpoint create --region RegionOne image admin http://192.168.56.11:9292
    

验证Glance安装

  1. 测试Glance状态

    我们可以直接使用glance命令列出现在的所有镜像,如果出现一个空列表,说明Glance启动并配置完成。

    [root@linux-node1 ~]# source /root/admin-openstack.sh 
    [root@linux-node1 ~]# openstack image list
    

    如果未出现报错,基本上可以确实部署没有问题,可以上传镜像进行测试。

  2. Glance镜像上传测试

在刚开始实施OpenStack平台阶段,如果没有制作镜像。可以使用一个实验的镜像进行测试,这是一个小的Linux系统。

[root@linux-node1 ~]# cd /usr/local/src
[root@linux-node1 src]# wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img

#上传并注册一个镜像。注意以后只要看到使用openstack命令,都需要保证,已经使用source命令导入了环境变量。因为这些操作都需要环境变量里面的账号进行认证授权。

[root@linux-node1 src]# openstack image create "cirros" --disk-format qcow2 \
--container-format bare --file cirros-0.4.0-x86_64-disk.img --public

上传完毕后可以通过openstack image list再次查看上传的镜像。默认情况下,Glance使用本地文件系统来保存上传的镜像。默认存放在/var/lib/glance/images/目录下,会将镜像以image id来进行命名。

[root@linux-node1 src]# openstack image list
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| cf154a84-a73a-451b-bcb3-83c98e7c0d3e | cirros | active |
+--------------------------------------+--------+--------+

同时,这个文件会被保存到配置文件设置的目录下,并以ID命名。

[root@linux-node1 ~]# ls -l /var/lib/glance/images/
total 12980
-rw-r----- 1 glance glance 13287936 Dec  1 14:11 65f9826a-5ccb-47d9-8a1a-75e31fb88a4a

Glance在OpenStack组件中,属于比较简单的一个。我建议读者如果一直跟着做实验的话,现在是时候停下来总结一下了。因为后面的服务的部署流程和glance都大同小异。

Copyright © 赵班长@新运维社区 2019 all right reserved,powered by Gitbook该文件修订时间: 2020-02-04 21:28:43

results matching ""

    No results matching ""