辛子龙 梁栋茂 马睿 邹劢豪 张继鹏
摘 要:近两年,IT领域中,云计算和大数据是非常热门的研究方向,OpenStack是云计算IaaS(基础设施即服务)中重要的开源的云计算管理平台,主要由Dashboard(控制台)、Nova(计算)、Neutron(网络)、Swift(对象存储)、Cinder(块存储)、Glance(镜像)、Keystone(认证)等服务组成。本文重点介绍OpenStack中的Glance服务,描述Glance服务在OpenStack平台的地位和与其他服务的关联,分别对Glance组件的服务架构、镜像格式、镜像状态、镜像制作进行简要说明,提出一种适合实验室或中小企业的基于OpenStack的私有云构建方案,并阐述了安装步骤流程。
关键词:OpenStack;Glance;镜像服务;镜像管理
中图分类号:TP311.52文献标识码:A文章编号:1003-5168(2020)23-0033-03
Abstract: In the past two years, cloud computing and big data have been very popular research directions in the IT field, OpenStack is an important open source cloud computing management platform in cloud computing IaaS (infrastructure as a service), which is mainly composed of Dashboard (console), Nova (computing), Neutron (network), Swift (object storage), Cinder (block storage), Glance (mirror), Keystone (authentication) and other services. This paper focused on the Glance service in OpenStack, and described the position of the Glance service in the OpenStack platform and its association with other services, and briefly described the service architecture, image format, image status and image production of Glance components, and proposed an OpenStack-based private cloud construction plan suitable for laboratories or small and medium-sized enterprises, and explained the installation process.
Keywords: OpenStack;Glance;image service;image management
隨着云计算时代的到来,基于IaaS层(基础设施即服务)的云计算管理平台不断涌现,如AbiCloud、Hadoop、Eucalyptus、MongoDB、OpenStack等平台。作为开源云管理平台,OpenStack得到越来越多科研人员和企业的青睐[1-3]。Glance服务作为OpebStack平台中Nova服务中独立的服务,不仅大大减小了Nova服务的冗余,还提升了镜像的储存和管理能力[4-5]。
1 Glance服务在OpenStack框架中的位置和任务
OpenStack为一个开源的云计算解决方案,它主要利用Python语言进行编写,主要通过命令行(ACL)、程序接口(API)和Web界面(GUI)实现对底层计算、存储、网络等资源的控制。它的功能是由多个子项目协同实现的,分别是Swift、Nova、Keystone、Glance、Neutron及Horizon等。其中,Glance是OpenStack重要的镜像查询、管理、注册、传输组件,云主机的创建、启动、快照等服务都需要调动Glance组件。
OpenStack由多个单元组成。其中,Heat单元的作用是编排云;Horizon组件为其他云服务提供一个基于Web的操作界面;Ceilometer负责监视其他模块,其他模块通过Keystone进行身份认证;虚拟机(VM)是实现云计算的核心,Nova负责创建VM;Glance提供镜像给虚拟机;Cinder提供快存储服务给虚拟机;Neutron提供虚拟机的网络活动及服务;Swift负责OpenStack的对象的存储,可保存Glance的镜像文件和Cinder的备份卷。
Glance组件的主要任务是为OpenStack提供镜像服务,它提供了虚拟镜像的查询、注册和传输等服务。Glance本身并不能实现对镜像的存储功能。Glance只是一个代理,它充当了镜像存储服务与OpenStack的其他组件之间的纽带。Glance共支持两种镜像存储机制,即简单文件系统和Swift服务存储镜像机制。简单文件系统是指将镜像保存在Glance节点的文件系统中。这种机制相对比较简单,但是存在不足。比如,由于没有备份机制,一旦文件系统受到损伤,将导致所有镜像不可用。Swift服务存储镜像机制,是指将镜像以对象的形式保存在Swift对象存储服务器中,Swift具有非常强大的备份还原机制,因此可以减少因为文件系统损伤而造成的镜像不可用情况。
2 Glance服务的服务架构
2.1 服务架构组成
Glance镜像服务使用了C/S(客户端/服务器)架构,Glance主要包括REST API、数据库抽象层、后端存储、域控制器、注册层,使用Glance DB数据库在各组件中共享数据。
REST API是Glance服务的程序接口。
数据库抽象层是Glance服务与数据库的程序接口。对于后端存储,镜像实际存储位置可以接入简单文件系统,如Swift(块存储)和Ceph(分布式文件系统)等,其也可以存储在Openatack控制节点的/var/lib/Glance/images中。
域控制器是实现Glance的认证、策略、通知和数据链路信息交换的中间件。
注册层用于域控制器和数据库DAL层之间的安全通息。
Glance DB用于存储镜像的元数据。
2.2 配置文件
Glance服务拥有两个配置文件,分别为Glance-api.conf与Glance-registry.conf。
Glance-api.conf配置数控链接字符串、Rabbitmq服务器、Keystone认证和日志文件,
Glance-registry.conf配置数控链接字符串、keystone认证和日志文件。
3 Glance镜像文件格式
虚拟机镜像需要指定磁盘格式。常见的镜像格式有RAW、QCOW2、AMI、UEC tarball、VHD、VDI、VMDK和OVF,OpenStack默认启动KVM虚拟机的格式为QCOW2,是一个支持可动态扩展、复制的磁盘格式。RAM是一个裸格式的磁盘格式,它拥有便携的文件读取和下载功能,没有做任何修饰,拥有良好的性能表现,可以与其他格式的镜像快速互换。
4 Glance服务中images状态
OpenStack中镜像系统较大,从镜像开始上传到镜像完成上传需要较长的时间,其在Glance中通过异步任务的方式一步步完成,包括以下状态:排队(Queued)、保存中(Saving)、有效(Active)、无效(Deactivated)、错误(Killed)、被删除(Deleted)和等待删除(Pending_delete)。
5 Glance服務的部署
准备Centos7.4基本环境,配置yum源,关闭必要防火墙,多节点网络互通。
修改Glance配置文件
修改配置文件glance-api.conf
[root@controller ~]#openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_uri http://controller:5000
[root@controller ~]#openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_host controller
[root@controller ~]#openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_port 35357
[root@controller ~]#openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_protocol http
[root@controller ~]#openstack-config --set /etc/glance/glance-api.conf keystone_authtoken admin_tenant_name service
[root@controller ~]#openstack-config --set /etc/glance/glance-api.conf keystone_authtoken admin_user glance
[root@controller ~]#openstack-config --set /etc/glance/glance-api.conf keystone_authtoken admin_password 000000
[root@controller ~]#openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
修改配置文件glance-registry.conf
[root@controller ~]#openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_uri http://controller:5000
[root@controller ~]#openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_host controller
[root@controller ~]#openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_port 35357
[root@controller ~]#openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_protocol http
[root@controller ~]#openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken admin_tenant_name service
[root@controller ~]#openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken admin_user glance
[root@controller ~]#openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken admin_password 000000
[root@controller ~]#openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone
6 结语
本文对OpenStack中核心组件Glance进行全面的分析和安装,对其工作原理进行详细阐述,这对更好地理解和使用Glance具有重要的意义。当前,人们可以利用开源的OpenStack组件快速构建一个Glance镜像存储系统,为科研工作或企业用户提供更好的镜像存储服务,并通过OpenStack完成云主机的部署。
参考文献:
[1]李知杰,赵健飞.OpenStack开源云计算平台[J].软件导刊,2012(12):10-12.
[2]Vinoski S.Advanced Message Queuing Protocol[J].IEEE Internet Computing,2006(6):87-89.
[3]沈建國,陈勇.OpenStack云平台基础架构平台[M].北京:人民邮电出版社,2017.
[4]刘玮玮.基于OpenStack+Swift的企业云盘设计与实现[J].电子测试,2018(24):77-78.
[5]毛军礼.OpenStack之Nova服务[J].计算机与网络,2018(3):60-63.