3.3 Glance服务部署

摘要
Glance 服务主要负责虚拟机镜像的注册、发现和获取,相当于云平台里的“镜像仓库”。这篇手册会从创建底层数据库开始,一步步完成 Glance 相关凭证和服务实体的配置。

实验架构

Glance(镜像服务) 是 OpenStack 项目中负责镜像生命周期管理的核心组件。它在云平台中扮演着“数字资产仓库”的角色,不仅负责存储镜像文件,还负责维护镜像的详细描述信息。

它的核心职能包括:

  • 记录信息(元数据):记录镜像的名字、大小、格式(如 QCOW2)等。
  • 妥善存放:把镜像文件存放在服务器的硬盘上。
  • 快速分发:当你想创建云主机(虚拟机)时,Glance 会立刻把对应的镜像分发给计算节点,让云主机能顺利开机。

简而言之,Glance 解决了云平台中镜像“存在哪、怎么找、如何发”的问题,是实现自动化、规模化部署操作系统的基石。

在正式安装配置 Glance 服务之前,Glance 需要一个专门的数据库来存储镜像的元数据信息(比如镜像的名称、格式、大小等)。因此,我们需要先在 MariaDB 中为它建好“家”。

1、登录数据库服务器

首先,我们需要以 root 管理员身份登录到数据库。

bash

mysql -u root -p
提示
连接时需要输入在之前环境准备阶段设置的 MariaDB 密码(默认密码是 admin123)。注意在 Linux 终端输入密码时,密码是不可见的,输入完直接回车即可。

2、 创建 glance 数据库

登录成功后,创建一个名为 glance 的专属数据库。

sql

CREATE DATABASE glance;

3、 给 glance 数据库授权

为了让 Glance 服务能够正常读写这个数据库,我们需要给它分配足够的权限。执行下面的 SQL 语句,将 glance 数据库的所有权限授予本地的 glance 用户,并设置密码为 glance

sql

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance';
FLUSH PRIVILEGES;

dVh1x2

  1. 退出数据库

操作完成后,输入以下命令退出数据库控制台。

sql

exit

OpenStack 各个组件之间互相通信需要经过 Keystone(身份认证服务)的验证。因此,接下来要在 Keystone 中为 Glance 创建专属的用户、角色和服务实体,给它办理“通行证”。

1、获取管理员权限

在执行 OpenStack 命令之前,需要先加载管理员的环境变量脚本,以此获得操作权限。

bash

source admin-openstack.sh

2、创建 glance 用户

在身份服务中创建一个名为 glance 的用户。在命令执行过程中,系统会提示设置并确认密码,为了方便记忆,这里我们可以统一将其设置为 glance

bash

openstack user create --domain default --password-prompt glance

3、分配管理员角色

接下来,我们需要把刚才创建的 glance 用户加入到 service(服务)项目中,并且给它赋予 admin(管理员)角色。这样 Glance 就有权限进行系统级别的操作了。

bash

openstack role add --project service --user glance admin

4、创建 glance 服务实体

最后一步,在 Keystone 中注册 Glance 服务实体。这相当于在服务目录中给 Glance 挂个牌子,告诉其他组件:“我是负责镜像服务的 Glance”。

bash

openstack service create --name glance --description "OpenStack Image" image

5、 创建镜像服务的 API 端点

在 OpenStack 中,Endpoint(端点) 就像是服务的“门牌号”或“窗口地址”。其他组件如果想找 Glance 办事,就必须通过这些端点(通常是 URL)来访问。

OpenStack 的 Endpoint 通常分为三种类型:

  • public(公共):给普通用户或云平台外部使用的地址。
  • internal(内部):云平台内部各个服务(如 Nova、Cinder)之间互相沟通的地址。
  • admin(管理):专门给管理员进行维护和管理操作的地址。

在本次实验中,我们把这三种类型的地址都统一指向 http://controller:9292

a. 创建公共端点:

bash

openstack endpoint create --region RegionOne image public http://controller:9292
  • --region RegionOne:指定区域名称为 RegionOne。
  • image:指定这个端点属于镜像服务(Glance)。
  • public:指定端点类型为公共类型。
  • http://controller:9292:指定服务的实际访问地址。

lAYapL

b. 创建内部端点:

bash

openstack endpoint create --region RegionOne image internal http://controller:9292
  • internal:指定端点类型为内部类型,供云平台内部服务通讯使用。

5VKbic

c. 创建管理端点:

bash

openstack endpoint create --region RegionOne image admin http://controller:9292
  • admin:指定端点类型为管理类型,供管理员维护使用。

ZFeOCE

验证端点列表:

创建完成后,可以查看当前所有的服务端点,确认 Glance(image)的相关记录已经存在。

bash

openstack endpoint list

OQQw4V

1、 安装 glance 软件包

在控制节点上安装负责镜像处理的核心软件包。

text

软件包名:openstack-glance

2、 配置 glance-api

编辑 /etc/glance/glance-api.conf 配置文件。这个文件决定了 Glance 如何连接数据库、如何进行身份认证以及镜像存放在哪里。

a. 配置数据库访问: 找到 [database] 部分。

ini

[database]
# 这里的 glance:glance 表示:用户名:密码
connection = mysql+pymysql://glance:glance@controller/glance

NkCRja

b. 配置身份认证: 找到 [keystone_authtoken][paste_deploy] 部分。

ini

[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000 
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = glance

[paste_deploy]
flavor = keystone
注意
[keystone_authtoken] 部分,请仔细检查 auth_url 不要写错。

c. 配置镜像存储方式: 找到 [glance_store] 部分,设置将镜像保存在本地文件系统中。

ini

[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

3、 配置 glance-registry

接下来编辑另一个配置文件 /etc/glance/glance-registry.conf

a. 配置数据库访问: 同样找到 [database] 部分。

ini

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

b. 配置身份认证: 同样找到 [keystone_authtoken][paste_deploy] 部分,配置内容与 api 配置文件一致。

ini

[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = glance

[paste_deploy]
flavor = keystone

配置完成后,我们需要把 Glance 所需的数据表结构导入到刚才在 MariaDB 中创建的 glance 数据库中。

bash

su -s /bin/sh -c "glance-manage db_sync" glance
  • su -s /bin/sh:切换 Shell 环境执行命令。
  • -c "glance-manage db_sync":执行具体的数据库同步指令。
  • glance:以 glance 用户的身份来运行这条命令。

验证数据库表

同步完成后,进数据库看看表是不是已经创建成功了。如果看到一长串以 images 开头的表名,就说明成功了。

bash

mysql -uglance -pglance -e "use glance; show tables;"

rxeEF6

6、 启动服务并设置自启动

最后,让 Glance 的两个核心服务运行起来。

bash

# 重新加载系统服务配置
systemctl daemon-reload

# 启动服务并设置为开机自动启动
# 自己写出2条命令

1、 加载管理员环境

在进行操作前,确保已经加载了 admin 的环境变量,这样你才有权限上传镜像。

bash

source ./admin-openstack.sh

2、 获取测试镜像

由于我们现在还没镜像,可以先从网上下载一个非常小巧的 Linux 镜像(CirrOS)来做测试。

bash

wget http://192.168.192.205/cirros-0.4.0-x86_64-disk.img

下载完成后,可以用 ls -lh 命令确认一下文件是否完整。

XvWjSy

3、 将镜像上传到云平台

使用下面的命令将下载好的镜像文件正式上传到 Glance 服务中。

bash

openstack image create "cirros" \
  --file cirros-0.4.0-x86_64-disk.img \
  --disk-format qcow2 \
  --container-format bare \
  --public
  • --disk-format qcow2:指定磁盘格式为 QCOW2(OpenStack 常用的格式)。
  • --container-format bare:指定容器格式为 bare(裸格式)。
  • --public:设置为公共可见,这样所有租户都能用这个镜像。

OpenStack镜像格式

ZXZdLs

4、 查看镜像列表

确认镜像是否成功“落户”到 Glance 中,并且状态为 active(激活状态)。

bash

openstack image list

JNXL4S

bash

curl -s http://192.168.192.205/scripts/3.3.sh | bash

检查完成情况