1 2 3 4 5 6 7 作者:李晓辉 联系方式: 微信:Lxh_Chat 邮箱:939958092@qq.com
前言 在云计算环境中,镜像管理是确保虚拟机快速部署和高效运行的关键环节。OpenStack作为一个强大的开源云平台,提供了灵活的资源管理和高效的虚拟化能力。而Glance服务作为OpenStack的镜像管理核心组件,负责存储、管理和分发虚拟机镜像,确保用户能够快速创建和启动虚拟机实例。本文将详细介绍如何在OpenStack环境中安装和配置Glance服务,帮你顺利搭建一个功能完善的云平台。
Glance服务概述 Glance的作用 Glance是OpenStack的镜像管理服务,它在OpenStack架构中扮演着至关重要的角色。以下是Glance的主要功能:
镜像存储 :Glance负责存储虚拟机镜像,支持多种存储后端,如本地文件系统、Swift对象存储等。用户可以上传自定义镜像,也可以使用预定义的镜像。
镜像发现 :Glance维护一个镜像目录,供用户发现和使用镜像。用户可以通过Glance API或命令行工具查询可用的镜像。
镜像格式支持 :Glance支持多种镜像格式,包括RAW、QCOW2、VMDK等,这使得用户可以灵活选择适合的镜像格式。
镜像元数据管理 :Glance不仅存储镜像本身,还管理镜像的元数据,如镜像名称、描述、大小等,方便用户管理和查询。
Glance的架构 Glance服务由以下几个主要组件构成:
glance-api :这是Glance的核心服务,负责处理镜像的上传、下载和查询请求。它提供RESTful API接口,供其他OpenStack服务和客户端调用。
glance-registry :这个组件负责管理镜像的元数据。在较新的版本中,glance-registry
的功能已经集成到glance-api
中,但在某些部署中仍然可以看到它的存在。
存储后端 :Glance支持多种存储后端,包括本地文件系统、Swift对象存储、Ceph等。用户可以根据实际需求选择合适的存储后端。
配置文件 :Glance的主要配置文件是glance-api.conf
,其中包含了数据库连接信息、存储后端配置、消息队列配置等。
工作原理 Glance的工作原理可以概括为以下几个步骤:
镜像上传 :用户通过客户端(如OpenStack命令行工具)将镜像上传到Glance服务。Glance将镜像存储在配置的存储后端中,并将镜像的元数据存储在数据库中。
镜像查询 :用户可以通过Glance API或命令行工具查询可用的镜像。Glance从数据库中检索镜像的元数据,并返回给用户。
镜像下载 :用户可以通过Glance API或命令行工具下载所需的镜像。Glance从存储后端中检索镜像,并将其返回给用户。
镜像删除 :用户可以通过Glance API或命令行工具删除不再需要的镜像。Glance从存储后端中删除镜像,并从数据库中删除镜像的元数据。
通过以上机制,Glance确保了镜像管理的高效性和灵活性。接下来我将详细介绍如何安装和配置Glance服务,以确保你的OpenStack环境能够高效地管理虚拟机镜像。
准备glance数据库 创建Glance用户并分配密码和权限,以便Glance服务可以访问数据库。
1 mysql -u root -pLiXiaohui
1 2 3 4 CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance' @'localhost' IDENTIFIED BY 'LiXiaohui' ; GRANT ALL PRIVILEGES ON glance.* TO 'glance' @'%' IDENTIFIED BY 'LiXiaohui' ; exit
加载管理员环境变量文件,以便使用OpenStack命令行工具。
创建glance服务的用户和角色 创建出glance用户并添加为管理员角色,这个用户将用于查询、上传、下载、删除等镜像操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [root@controller ~]# openstack user create --domain default --password LiXiaohui glance +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | 34b86e5097f24acfaa9fd185f601a482 | | name | glance | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+ [root@controller ~]# openstack role add --project service --user glance admin
创建glance服务和endpoint 创建glance服务 创建Glance服务,并为其定义描述信息。
1 2 3 4 5 6 7 8 9 10 [root@controller ~]# openstack service create --name glance --description "OpenStack Image" image +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Image | | enabled | True | | id | b17d10f67e354756aa14adc895c45039 | | name | glance | | type | image | +-------------+----------------------------------+
创建endpoint 为Glance服务创建公共、内部和管理端点。
1. 公共端点(Public Endpoint)
公共端点是供外部用户访问的服务接口。它允许用户从外部网络访问Glance服务,例如上传和下载镜像。公共端点通常会暴露在互联网上,或者在私有云环境中暴露在外部网络中,以便用户可以通过外部网络访问镜像服务。
2. 内部端点(Internal Endpoint)
内部端点是供OpenStack内部服务之间通信的接口。它允许OpenStack的其他服务(如Nova、Neutron等)在内部网络中访问Glance服务。内部端点通常部署在管理网络上,确保服务之间的通信安全且高效。
3. 管理端点(Admin Endpoint)
管理端点是供管理员访问的服务接口。它提供了对Glance服务的高级管理功能,例如管理镜像的元数据、执行维护操作等。管理端点通常具有更高的权限,因此需要严格控制访问权限。
通过将公共、内部和管理功能分离到不同的端点,可以提高系统的安全性和隔离性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 [root@controller ~]# openstack endpoint create --region RegionOne image public http://controller:9292 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 84f29dc346be4d0cb1dd014017ecee4e | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | b17d10f67e354756aa14adc895c45039 | | service_name | glance | | service_type | image | | url | http://controller:9292 | +--------------+----------------------------------+ [root@controller ~]# openstack endpoint create --region RegionOne image internal http://controller:9292 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | f2f8e0708ade4b6d86fcb566b40e9878 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | b17d10f67e354756aa14adc895c45039 | | service_name | glance | | service_type | image | | url | http://controller:9292 | +--------------+----------------------------------+ [root@controller ~]# openstack endpoint create --region RegionOne image admin http://controller:9292 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 3cfbe27dbecb4f3fbe686f17d8d5ebf2 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | b17d10f67e354756aa14adc895c45039 | | service_name | glance | | service_type | image | | url | http://controller:9292 | +--------------+----------------------------------+
安装和配置glance组件 安装glance组件 1 yum install openstack-glance -y
准备配置文件 /etc/glance/glance-api.conf
是Glance服务的主要配置文件,用于定义Glance的各种运行参数,包括数据库连接、身份认证、存储后端等。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 crudini --set /etc/glance/glance-api.conf DEFAULT enabled_backends fs:file crudini --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:LiXiaohui@controller/glance crudini --set /etc/glance/glance-api.conf keystone_authtoken www_authenticate_uri http://controller:5000 crudini --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://controller:5000 crudini --set /etc/glance/glance-api.conf keystone_authtoken auth_uri http://controller:5000 crudini --set /etc/glance/glance-api.conf keystone_authtoken memcached_servers controller:11211 crudini --set /etc/glance/glance-api.conf keystone_authtoken auth_type password crudini --set /etc/glance/glance-api.conf keystone_authtoken project_domain_name Default crudini --set /etc/glance/glance-api.conf keystone_authtoken user_domain_name Default crudini --set /etc/glance/glance-api.conf keystone_authtoken project_name service crudini --set /etc/glance/glance-api.conf keystone_authtoken username glance crudini --set /etc/glance/glance-api.conf keystone_authtoken password LiXiaohui crudini --set /etc/glance/glance-api.conf glance_store default_backend fs crudini --set /etc/glance/glance-api.conf fs filesystem_store_datadir /var/lib/glance/images/ crudini --set /etc/glance/glance-api.conf oslo_limit auth_url http://controller:5000 crudini --set /etc/glance/glance-api.conf oslo_limit auth_type password crudini --set /etc/glance/glance-api.conf oslo_limit user_domain_id default crudini --set /etc/glance/glance-api.conf oslo_limit username glance crudini --set /etc/glance/glance-api.conf oslo_limit system_scope all crudini --set /etc/glance/glance-api.conf oslo_limit password LiXiaohui crudini --set /etc/glance/glance-api.conf oslo_limit endpoint_id 84f29dc346be4d0cb1dd014017ecee4e crudini --set /etc/glance/glance-api.conf oslo_limit region_name RegionOne crudini --set /etc/glance/glance-api.conf paste_deploy flavor keystone
或者
Glance支持多种存储后端,如本地文件系统、Swift对象存储等。这里我们使用本地文件系统作为存储后端。
1 2 3 4 [DEFAULT] ... enabled_backends = fs:file
Glance使用关系型数据库(如MariaDB)存储镜像的元数据。需要配置数据库连接信息。
1 2 3 [database] ... connection = mysql+pymysql://glance:LiXiaohui@controller/glance
Glance服务需要与Keystone服务进行身份认证,以确保只有经过授权的用户可以访问镜像服务。
1 2 3 4 5 6 7 8 9 10 11 [keystone_authtoken] www_authenticate_uri = http://controller:5000 auth_uri = http://controller:5000 auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = passwordproject_domain_name = Defaultuser_domain_name = Defaultproject_name = serviceusername = glancepassword = LiXiaohui
www_authenticate_uri
:指定身份认证服务的公共URL。
auth_url
:指定身份认证服务的API端点。
auth_uri
:指定身份认证服务的URL。
memcached_servers
:指定Memcached服务器地址,用于缓存身份认证信息。
auth_type
:指定身份认证类型,这里使用password
。
project_domain_name
和 user_domain_name
:指定项目和用户的域名。
project_name
和 username
:指定服务项目和用户名称。
password
:指定用户密码。
指定Glance的存储后端为本地文件系统,并设置存储路径。
1 2 3 4 5 6 [glance_store] ... default_backend = fs[fs] filesystem_store_datadir = /var/lib/glance/images/
Glance支持配额管理,可以通过以下配置启用配额功能。
1 2 3 4 5 6 7 8 9 [oslo_limit] auth_url = http://controller:5000 auth_type = passworduser_domain_id = defaultusername = glancesystem_scope = allpassword = LiXiaohuiendpoint_id = 84 f29dc346be4d0cb1dd014017ecee4e region_name = RegionOne
配置Paste Deploy以启用Keystone身份认证。
1 2 [paste_deploy] flavor = keystone
确保Glance用户对系统范围内有读权限,以便可以访问和管理镜像。
1 [root@controller ~]# openstack role add --user glance --user-domain Default --system all reader
填充glance服务数据库 在完成Glance服务的配置后,需要同步数据库,以确保Glance服务能够正确使用配置的数据库。这一步会创建所有必要的表和初始数据结构。
1 su -s /bin/sh -c "glance-manage db_sync" glance
启动glance服务 在数据库同步完成后,需要启动Glance服务,以确保服务正常运行。
1 systemctl enable openstack-glance-api.service --now