查看原文
其他

OpenStack部署3.0——镜像服务(Glance)

李逸皓 运维book思议 2023-10-21

先放个链接,万一有人关注呢

优质文章推荐

↓ ↓ ↓ ↓ ↓

ESXi虚拟化系统创建与应用

Linux ps命令没想到还能这样用

Linux网卡配置文件详解

CentOS再见!拥抱Rocky or Alma

一文搞懂Linux下的神级编辑器:Vim



书接上回:OpenStack部署2.0——身份服务(Keystone)部署

概述
Glance是OpenStack提供的镜像服务,主要功能包括镜像发现、注册和检索。glance组件支持多种后端存储、镜像格式和镜像访问协议。
Glance的主要组件角色包括:
1、glance-api:提供REST API处理镜像相关操作请求。
2、glance-registry:负责存储镜像的元数据到数据库中。
3、glance-scrubber:定期清理过期或被删除的镜像文件。
4、存储后端:各种物理存储如文件系统、对象存储等。
Glance的主要功能有:
1、镜像发现:用户可以通过Glance查询可用镜像的属性和信息。
2、镜像注册:可上传镜像数据、设置属性,注册镜像到Glance。
3、镜像检索:根据用户请求,Glance可检索镜像数据发送给用户。
4、镜像管理:设置访问控制、成员等配置管理镜像。
Glance通过存储后端支持多种虚拟镜像格式,如qcow2、AMI、VHD、VMDK等。镜像可以加密、压缩。
Glance服务对OpenStack来说非常重要,提供了一个统一管理虚拟机镜像的平台。

创建数据库

进入控制节点的数据库中

mysql -uroot -p123

创建身份服务的数据库

CREATE DATABASE glance;

授权数据库

grant all privileges on glance.* to 'glance'@'localhost' identified by '123';grant all privileges on glance.* to 'glance'@'%' identified by '123';

退出数据库

创建服务凭证

获得admin凭证用于获取管理员权限

source admin-openrc

创建镜像用户

openstack user create --domain default --password-prompt glance
命令参数解释:
openstack user create - 使用openstack命令行创建用户
--domain default - 指定该用户属于default域
--password-prompt - 交互式输入该用户的密码
glance - 要创建的用户名
在OpenStack中,用户必须属于一个域。默认情况下,只有一个默认域default。
创建glance用户是因为OpenStack镜像服务(glance)需要使用独立的用户来运行服务。glance用户需要被赋予admin角色,才可以有管理镜像的权限。
一个典型的工作流是:
1、创建glance用户
2、赋予glance用户admin角色
3、配置glance服务使用glance用户启动
这样glance服务就可以通过该独立用户来访问镜像服务的各项功能了。

此命令将在默认域下创建用户glance,并提示输入该用户的登录密码。

输出两次密码,创建成功。输出如下

User Password:Repeat User Password:+---------------------+----------------------------------+| Field | Value |+---------------------+----------------------------------+| domain_id | default || enabled | True || id | 22d88f1944814c978c1a9a31b6e6d59a || name | glance || options | {} || password_expires_at | None |+---------------------+----------------------------------+

将admin角色添加到镜像用户和service项目中

openstack role add --project service --user glance admin
命令参数说明:
openstack role add - 为用户、组或项目添加角色
--project service - 指定项目名称service
--user glance - 指定用户名glance
admin - 要添加的角色是admin
在OpenStack中,一个用户拥有某个角色后才具有对应的访问权限。
这个命令就是将admin管理员角色赋予glance用户,这样glance用户在service项目中就拥有管理员权限。
glance用户是OpenStack镜像服务使用的账号。赋予glance用户admin角色后,glance服务才能有管理镜像的权限,如上传、删除镜像等操作。
service项目是一个管理类项目,glance需要在这个项目中有管理员权限。
所以这条命令将glance用户与service项目通过admin角色关联起来,完成赋予glance服务管理镜像的权限。

创建镜像服务实体

openstack service create --name glance --description "OpenStack Image" image
命令参数解释:
openstack service create - 创建一个服务
--name glance - 服务的名称,这里是glance
--description "OpenStack Image" - 对服务的描述,这里是"OpenStack Image"
image - 服务的类型,这里是image(镜像服务)
在OpenStack中,各种服务如计算、网络、镜像等需要在身份认证服务Keystone中进行注册,生成对应的Endpoint,这样其他服务才能发现和访问它们。
这个命令就是向Keystone中注册了一个glance镜像服务,名称、描述都是glance相关的。类型指定为image。
这样Keystone中就有一个glance服务的注册信息。后续需要创建这个glance服务对应的Endpoint,以提供访问接口。
通过使用openstack client,可以避免手动修改配置文件来注册服务。

输出如下

+-------------+----------------------------------+| Field | Value |+-------------+----------------------------------+| description | OpenStack Image || enabled | True || id | acc1dfe088e547d1bc889fcc0f005ad6 || name | glance || type | image |+-------------+----------------------------------+
创建镜像服务API端点public
openstack endpoint create --region RegionOne image public http://controller:9292
命令参数解析:
openstack endpoint create - 创建一个Endpoint
--region RegionOne - 指定区域为RegionOne
image - Endpoint对应的服务类型,这里是image服务
public - Endpoint的访问类型,这里是public,表示公网访问
http://controller:9292 - Endpoint的URL,这里是http://controller:9292
在OpenStack中,服务需要在身份服务Keystone中注册Endpoint,这样其他服务才能找到该服务的访问地址。
这条命令为image服务创建了一个区域为RegionOne,类型为public的Endpoint,地址是http://controller:9292。
glance镜像服务需要创建公网或内网Endpoint,用于其他服务访问glance的API接口。
该命令就是创建一个glance的公网Endpoint,将请求转发到controller节点的9292端口。
这样就可以通过公网URL http://controller:9292 访问到glance服务的API接口了。

输出如下

+--------------+----------------------------------+| Field | Value |+--------------+----------------------------------+| enabled | True || id | 9dedb8b277f64080b4e85e6c9e3acea6 || interface | public || region | RegionOne || region_id | RegionOne || service_id | acc1dfe088e547d1bc889fcc0f005ad6 || service_name | glance || service_type | image || url | http://controller:9292 |+--------------+----------------------------------+
创建镜像服务API端点internal
openstack endpoint create --region RegionOne image internal http://controller:9292
命令参数解释:
openstack endpoint create - 创建一个Endpoint
--region RegionOne - 指定所在区域是RegionOne
image - 对应的服务类型为image
internal - Endpoint的访问类型为internal,表示内网可访问
http://controller:9292 - Endpoint的地址,指向controller节点的9292端口
在OpenStack中,一个服务可以创建多个Endpoint,以区分内外网络的访问。
这条命令为glance镜像服务创建了一个内网访问的Endpoint,在RegionOne区域,地址指向controller节点的9292端口。
这样,OpenStack系统内部的其他服务就可以通过内网地址http://controller:9292 来访问glance服务的API。
glance需要创建公网和内网两个Endpoint,分别对应外部和内部的访问。
该命令创建了一个internal的glance Endpoint,完成了glance服务内网访问的配置。
结合外网的Endpoint,就可以从两种网络来访问glance的镜像管理API了。

输出如下

+--------------+----------------------------------+| Field | Value |+--------------+----------------------------------+| enabled | True || id | 42845ceb250e4c3490970f46b63022f4 || interface | internal || region | RegionOne || region_id | RegionOne || service_id | acc1dfe088e547d1bc889fcc0f005ad6 || service_name | glance || service_type | image || url | http://controller:9292 |+--------------+----------------------------------+
创建镜像服务API端点admin
openstack endpoint create --region RegionOne image admin http://controller:929
命令参数解释:
openstack endpoint create - 创建一个Endpoint
--region RegionOne - 指定区域名称为RegionOne
image - Endpoint所属的服务类型为image
admin - Endpoint的访问类型为admin
http://controller:9292 - Endpoint的URL地址
在OpenStack里,一个服务可以创建不同类型的Endpoint,比如公网(public)、内网(internal)、管理(admin)等。
该命令为glance服务创建了一个访问类型为admin的Endpoint,地址指向http://controller:9292。
glance的admin Endpoint提供相对非安全的API访问,主要面向管理员用户。
当管理员需要直接访问glance服务进行维护时,可以使用这个admin Endpoint,而避免通过网络或身份服务。
所以这条命令创建了一个glance服务的admin管理Endpoint,主要由管理员使用,完成glance各类Endpoint的部署。

输出如下

+--------------+----------------------------------+| Field | Value |+--------------+----------------------------------+| enabled | True || id | 7b20b121a0f54606ab0172ca11da356f || interface | admin || region | RegionOne || region_id | RegionOne || service_id | acc1dfe088e547d1bc889fcc0f005ad6 || service_name | glance || service_type | image || url | http://controller:9292 |+--------------+----------------------------------+

安装与配置镜像服务

安装镜像服务软件包

yum install openstack-glance -y

编辑glance-api组件的配置文件

vi /etc/glance/glance-api.conf

配置数据库访问

[database]# ...connection = mysql+pymysql://glance:123@controller/glance

在keystone_authtoken和paste_deploy模块,配置身份认证服务访问

[keystone_authtoken]# ...www_authenticate_uri = http://controller:5000auth_url = http://controller:5000memcached_servers = controller:11211auth_type = passwordproject_domain_name = Defaultuser_domain_name = Defaultproject_name = serviceusername = glancepassword = GLANCE_PASS
[paste_deploy]# ...flavor = keystone

注意:keystone_authtoken模块下的其他选项都要进行注释或删除

解释:
paste deploy是OpenStack广泛使用的一种WSGI服务器和应用部署方式。WSGI应用程序需要打包成paste deploy格式,然后由兼容其规范的WSGI服务器加载运行。
flavor指的是paste部署的策略或方式,不同的flavor会改变应用的加载、运行等行为。
keystone是一个这样的flavor,它实现了一些keystone专用的功能:
1、加载keystone的一些特定配置
2、初始化keystone数据库连接
3、添加keystone特有的request processing
所以,该配置的作用就是指定使用keystone flavor来部署glance-api应用。使用这个flavor,可以引入一些keystone集成所需要的逻辑。
这样glance-api启动时就会以keystone mode来运行,可以和keystone服务进行集成,实现认证、授权等功能。

配置本地文件系统存储和图像文件的位置

[glance_store]# ...stores = file,httpdefault_store = filefilesystem_store_datadir = /var/lib/glance/images/
解释:
[glance_store] 表示这是glance存储相关的配置段。
stores = file,http
指定glance支持的存储后端类型,这里配置了文件系统(file)和HTTP两种。
default_store = file
设置默认的存储后端是文件系统,即file。
filesystem_store_datadir = /var/lib/glance/images/
指定文件系统后端存储镜像的目录为/var/lib/glance/images/。
Glance支持多种存储后端来保存镜像文件,如文件系统、对象存储、HTTP等。
该配置设置了两个存储后端:
1、file系统后端,用于本地保存镜像文件。
2、HTTP后端,可以远程加载镜像文件。
并且指定了默认的后端是文件系统,即镜像默认保存到本地/var/lib/glance/images目录。
这样glance服务在收到上传镜像请求时,就知道支持文件和HTTP两种存储方式,默认将镜像保存在本地文件系统上,目录在/var/lib/glance/images。

将镜像信息同步到数据库

su -s /bin/sh -c "glance-manage db_sync" glance

启动服务

systemctl enable openstack-glance-api.servicesystemctl start openstack-glance-api.service

验证操作

获取管理员权限

source admin-openrc

下载源镜像

wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img

上传镜像到镜像服务中

glance image-create --name "cirros" --file cirros-0.4.0-x86_64-disk.img --disk-format qcow2 --container-format bare --visibility public

--disk-format指定镜像磁盘格式,--container-format指定镜像容器格式,--visibility指定镜像的使用权限。

输出如下

+------------------+----------------------------------------------------------------------------------+| Property | Value |+------------------+----------------------------------------------------------------------------------+| checksum | 443b7623e27ecf03dc9e01ee93f67afe || container_format | bare || created_at | 2021-09-02T09:23:52Z || disk_format | qcow2 || id | e25a455c-cada-4887-86f4-80f102b5efe9 || min_disk | 0 || min_ram | 0 || name | cirros || os_hash_algo | sha512 || os_hash_value | 6513f21e44aa3da349f248188a44bc304a3653a04122d8fb4535423c8e1d14cd6a153f735bb0982e || | 2161b5b5186106570c17a9e58b64dd39390617cd5a350f78 || os_hidden | False || owner | 4c1c66c3a11947bab644b3e7d4abfb01 || protected | False || size | 12716032 || status | active || tags | [] || updated_at | 2021-09-02T09:23:53Z || virtual_size | Not available || visibility | public |+------------------+----------------------------------------------------------------------------------+

查看已上传的镜像

glance image-list

输出如下

+--------------------------------------+--------+| ID | Name |+--------------------------------------+--------+| e25a455c-cada-4887-86f4-80f102b5efe9 | cirros |+--------------------------------------+--------+
未完待续。。。。

来不及解释了,快上车!(进群看公告)

欢迎新的小伙伴加入!在这里,我们鼓励大家积极参与群内讨论和交流,分享自己的见解和经验,一起学习和成长。同时,也欢迎大家提出问题和建议,让我们不断改进和完善这个平台。

              ↓↓↓ 点个在看,你最好看!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存