3.3 Glance服务部署

实验架构

Glance 组件简介
Glance(镜像服务) 是 OpenStack 项目中负责镜像生命周期管理的核心组件。它在云平台中扮演着“数字资产仓库”的角色,不仅负责存储镜像文件,还负责维护镜像的详细描述信息。
它的核心职能包括:
- 记录信息(元数据):记录镜像的名字、大小、格式(如 QCOW2)等。
- 妥善存放:把镜像文件存放在服务器的硬盘上。
- 快速分发:当你想创建云主机(虚拟机)时,Glance 会立刻把对应的镜像分发给计算节点,让云主机能顺利开机。
简而言之,Glance 解决了云平台中镜像“存在哪、怎么找、如何发”的问题,是实现自动化、规模化部署操作系统的基石。
部署过程
一、创建与授权数据库
在正式安装配置 Glance 服务之前,Glance 需要一个专门的数据库来存储镜像的元数据信息(比如镜像的名称、格式、大小等)。因此,我们需要先在 MariaDB 中为它建好“家”。
1、登录数据库服务器
首先,我们需要以 root 管理员身份登录到数据库。
mysql -u root -p
admin123)。注意在 Linux 终端输入密码时,密码是不可见的,输入完直接回车即可。
2、 创建 glance 数据库
登录成功后,创建一个名为 glance 的专属数据库。
CREATE DATABASE glance;

3、 给 glance 数据库授权
为了让 Glance 服务能够正常读写这个数据库,我们需要给它分配足够的权限。执行下面的 SQL 语句,将 glance 数据库的所有权限授予本地的 glance 用户,并设置密码为 glance。
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance';
FLUSH PRIVILEGES;

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

二、创建 Glance 服务的凭证
OpenStack 各个组件之间互相通信需要经过 Keystone(身份认证服务)的验证。因此,接下来要在 Keystone 中为 Glance 创建专属的用户、角色和服务实体,给它办理“通行证”。
1、获取管理员权限
在执行 OpenStack 命令之前,需要先加载管理员的环境变量脚本,以此获得操作权限。
source admin-openstack.sh
2、创建 glance 用户
在身份服务中创建一个名为 glance 的用户。在命令执行过程中,系统会提示设置并确认密码,为了方便记忆,这里我们可以统一将其设置为 glance。
openstack user create --domain default --password-prompt glance

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

4、创建 glance 服务实体
最后一步,在 Keystone 中注册 Glance 服务实体。这相当于在服务目录中给 Glance 挂个牌子,告诉其他组件:“我是负责镜像服务的 Glance”。
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. 创建公共端点:
openstack endpoint create --region RegionOne image public http://controller:9292
--region RegionOne:指定区域名称为 RegionOne。image:指定这个端点属于镜像服务(Glance)。public:指定端点类型为公共类型。http://controller:9292:指定服务的实际访问地址。

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

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

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

三、安装并配置 Glance 组件
1、 安装 glance 软件包
在控制节点上安装负责镜像处理的核心软件包。
软件包名:openstack-glance
2、 配置 glance-api
编辑 /etc/glance/glance-api.conf 配置文件。这个文件决定了 Glance 如何连接数据库、如何进行身份认证以及镜像存放在哪里。
a. 配置数据库访问: 找到 [database] 部分。
[database]
# 这里的 glance:glance 表示:用户名:密码
connection = mysql+pymysql://glance:glance@controller/glance

b. 配置身份认证: 找到 [keystone_authtoken] 和 [paste_deploy] 部分。
[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] 部分,设置将镜像保存在本地文件系统中。
[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] 部分。
[database]
connection = mysql+pymysql://glance:glance@controller/glance
b. 配置身份认证: 同样找到 [keystone_authtoken] 和 [paste_deploy] 部分,配置内容与 api 配置文件一致。
[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 数据库中。
su -s /bin/sh -c "glance-manage db_sync" glance
su -s /bin/sh:切换 Shell 环境执行命令。-c "glance-manage db_sync":执行具体的数据库同步指令。glance:以glance用户的身份来运行这条命令。
验证数据库表
同步完成后,进数据库看看表是不是已经创建成功了。如果看到一长串以 images 开头的表名,就说明成功了。
mysql -uglance -pglance -e "use glance; show tables;"

6、 启动服务并设置自启动
最后,让 Glance 的两个核心服务运行起来。
# 重新加载系统服务配置
systemctl daemon-reload
# 启动服务并设置为开机自动启动
# 自己写出2条命令
五、验证 Glance 服务
1、 加载管理员环境
在进行操作前,确保已经加载了 admin 的环境变量,这样你才有权限上传镜像。
source ./admin-openstack.sh
2、 获取测试镜像
由于我们现在还没镜像,可以先从网上下载一个非常小巧的 Linux 镜像(CirrOS)来做测试。
wget http://192.168.192.205/cirros-0.4.0-x86_64-disk.img
下载完成后,可以用 ls -lh 命令确认一下文件是否完整。

3、 将镜像上传到云平台
使用下面的命令将下载好的镜像文件正式上传到 Glance 服务中。
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:设置为公共可见,这样所有租户都能用这个镜像。


4、 查看镜像列表
确认镜像是否成功“落户”到 Glance 中,并且状态为 active(激活状态)。
openstack image list

检查完成情况
curl -s http://192.168.192.205/scripts/3.3.sh | bash
