Part 4 - 安装 Glance 镜像服务

2023-07-01
5分钟阅读时长

【版本】

当前版本号v20240310

版本修改说明
v20240310新增参考配置
v20230701文档基于 RockyLinux8 和 Openstack Yoga 开发

任务4 - 控制节点安装 Glance 镜像服务

【任务目的】

  • 掌握搭建 Openstack Glance 组件

【任务环境】

  • 内存:至少4G
  • 硬盘:至少空余40G
  • 操作系统: 64位 Windows系统。

【任务资源】

  • FinalShell
  • RockyLinux 8 系统镜像
  • VirtualBox

【任务步骤】

  1. 使用Root用户登录控制节点(Controller)。输出 Hostname ,确认所在节点是控制节点。
hostname

结果:

controller+你的学号后3位
注意以下步骤在控制节点(Controller)上执行!
  1. 使用 root 用户登录 MariaDB 数据库,密码为123456。创建 Glance 库,glance用户和授权。
mysql -u root -p
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
  IDENTIFIED BY 'GLANCE_DBPASS';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
  IDENTIFIED BY 'GLANCE_DBPASS';
exit;
  1. 在 Keystone 创建 Glance 用户及关联角色。
source /etc/keystone/admin-openrc
openstack user create --domain default --password GLANCE_PASS glance
openstack project create --domain default --description "Service Project" service
openstack role add --project service --user glance admin
openstack user create --domain default --password MY_PASSWORD MY_SERVICE
openstack role add --user MY_SERVICE --user-domain Default --system all reader
  1. 在 Keystone 上创建 Glance Service 和 endpoint。注意替换为你的学号
openstack service create --name glance \
  --description "OpenStack Image" image
openstack endpoint create --region RegionOne \
  image public http://controller+你学号后3位:9292
openstack endpoint create --region RegionOne \
  image internal http://controller+你学号后3位:9292
openstack endpoint create --region RegionOne \
  image admin http://controller+你学号后3位:9292

注意这里的 service 不能重复创建,运行命令openstack service list应该只能查看到1个 Glance 的 service,如果有多个可以用 openstack service delete '替换为service ID'命令删除

注意这里 endpoint 不能重复创建,运行命令openstack endpoint list应该只能查看到3个 Glance 的 endpoint,如果有多个可以用 openstack endpoint delete '替换为endpoint ID'命令删除

  1. 安装服务相应 Glance 软件包。
dnf install openstack-glance -y
  1. 备份 Glance API 配置文件。注意这个命令不要重复执行,否则会覆盖原有备份配置文件。
cp /etc/glance/glance-api.conf{,.bak}
  1. 清除配置文件注释
grep '^[a-Z\[]' /etc/glance/glance-api.conf.bak >/etc/glance/glance-api.conf
  1. 设置 API 配置项,注意替换为你的个人学号。
openstack-config --set /etc/glance/glance-api.conf  database  connection  mysql+pymysql://glance:GLANCE_DBPASS@controller+你的学号后3位/glance
openstack-config --set /etc/glance/glance-api.conf  glance_store stores  file,http
openstack-config --set /etc/glance/glance-api.conf  glance_store default_store  file
openstack-config --set /etc/glance/glance-api.conf  glance_store filesystem_store_datadir  /var/lib/glance/images/
openstack-config --set /etc/glance/glance-api.conf  keystone_authtoken auth_url  http://controller+你的学号后3位:5000
openstack-config --set /etc/glance/glance-api.conf  keystone_authtoken www_authenticate_uri http://controller+你的学号后3位:5000
openstack-config --set /etc/glance/glance-api.conf  keystone_authtoken memcached_servers  controller+你的学号后3位:11211
openstack-config --set /etc/glance/glance-api.conf  keystone_authtoken auth_type  password
openstack-config --set /etc/glance/glance-api.conf  keystone_authtoken project_domain_name  default
openstack-config --set /etc/glance/glance-api.conf  keystone_authtoken user_domain_name  default
openstack-config --set /etc/glance/glance-api.conf  keystone_authtoken project_name  service
openstack-config --set /etc/glance/glance-api.conf  keystone_authtoken username  glance
openstack-config --set /etc/glance/glance-api.conf  keystone_authtoken password  GLANCE_PASS
openstack-config --set /etc/glance/glance-api.conf  paste_deploy flavor  keystone
openstack-config --set /etc/glance/glance-api.conf  DEFAULT use_keystone_quotas True
openstack-config --set /etc/glance/glance-api.conf  oslo_limit auth_url  http://controller+你的学号后3位:5000
openstack-config --set /etc/glance/glance-api.conf  oslo_limit auth_type  password
openstack-config --set /etc/glance/glance-api.conf  oslo_limit user_domain_id  default
openstack-config --set /etc/glance/glance-api.conf  oslo_limit username  MY_SERVICE
openstack-config --set /etc/glance/glance-api.conf  oslo_limit system_scope  all
openstack-config --set /etc/glance/glance-api.conf  oslo_limit password  MY_PASSWORD
openstack-config --set /etc/glance/glance-api.conf  oslo_limit endpoint_id  ENDPOINT_ID
openstack-config --set /etc/glance/glance-api.conf  oslo_limit region_name  RegionOne

可以用vim 打开/etc/glance/glance-api.conf配置文件与/etc/glance/glance-api.conf 参考配置进行比对确认。

  1. 同步 glance 数据库
cd /etc/glance
su -s /bin/sh -c "glance-manage db_sync" glance

运行成功会显示Database is synced successfully.

  1. 进入 MariaDB 查看是否有表格出现。密码为GLANCE_DBPASS。如果有则表示数据库同步成功。
mysql -u glance -p
use glance;
show tables;
  1. 退出 MariaDB 。
exit
  1. 启动 Glance 服务
systemctl enable openstack-glance-api
systemctl start openstack-glance-api
  1. 查看 Glance 服务是否active。
systemctl status openstack-glance-api
  1. 上传镜像文件 cirros-0.4.0-x86_64-disk.img 和 cirros-0.6.2-x86_64-disk.img 到/opt目录。

Cirros 是一个迷你的 Linux 发行版系统,它启动速度快,通常用作测试云虚拟机。

  1. 使用上传的镜像文件,创建一个名为cirros,磁盘格式为qcow2的镜像。正常创建会返回类似以下的表格内容。
source /etc/keystone/admin-openrc
openstack image create "cirros4" \
  --file /opt/cirros-0.4.0-x86_64-disk.img \
  --disk-format qcow2 --container-format bare \
  --public
openstack image create "cirros62" \
  --file /opt/cirros-0.6.2-x86_64-disk.img \
  --disk-format qcow2 --container-format bare \
  --public

类似结果:

+------------------+------------------------------------------------------+
| Field            | Value                                                |
+------------------+------------------------------------------------------+
| checksum         | 443b7623e27ecf03dc9e01ee93f67afe                     |
| container_format | bare                                                 |
| created_at       | 2021-03-02T16:49:35Z                                 |
| disk_format      | qcow2                                                |
| file             | /v2/images/6e9145fd-ab25-417b-8edc-61703fce43da/file |
| id               | 6e9145fd-ab25-417b-8edc-61703fce43da                 |
| min_disk         | 0                                                    |
| min_ram          | 0                                                    |
| name             | cirros                                               |
| owner            | 70667e2a19c640b796c9e2de6571a33c                     |
| protected        | False                                                |
| schema           | /v2/schemas/image                                    |
| size             | 12716032                                             |
| status           | active                                               |
| tags             |                                                      |
| updated_at       | 2021-03-02T16:49:36Z                                 |
| virtual_size     | None                                                 |
| visibility       | public                                               |
+------------------+------------------------------------------------------+

【控制节点验证步骤】

  1. 查询 glance service,表里应该只有一行记录。
source /etc/keystone/admin-openrc
openstack service list |grep -E "ID|glance"

类似结果:

| ID                               | Name     | Type     |
| 6a7ef1241c29489db2bd45ed1db14bab | glance   | image    |
  1. 查询 glance endpoint,表里应该有3行记录。
source /etc/keystone/admin-openrc
openstack endpoint list |grep -E "ID|glance"

类似结果:

| ID                               | Region    | Service Name | Service Type | Enabled | Interface | URL                                           |
| 2417b5505981478a9c0c09018bd92c10 | RegionOne | glance       | image        | True    | public    | http://controller999:9292                    |
| 736f1c1cad03429e86462492ffa97dd9 | RegionOne | glance       | image        | True    | admin     | http://controller999:9292                    |
| caaa3d7556bb46ab8548f1768801817e | RegionOne | glance       | image        | True    | internal  | http://controller999:9292                    |

  1. 查询 glance user,表里应该有1行记录。
source /etc/keystone/admin-openrc
openstack user list |grep -E "ID|glance"

类似结果:

| ID                               | Name    |
| c5a480d3f8ba41458926135609074b3c | glance  |
  1. 进入数据库查询 Glance 库,查看images表的镜像信息是否和上面结果一致。
mysql -u glance -p
MariaDB [(none)]>use glance;
MariaDB [glance]> select name,status,disk_format,created_at from images;
  1. 镜像信息也可以使用 openstack 客户端命令进行查询。
source /etc/keystone/admin-openrc
openstack image list --property name=cirros
  1. 查看 OpenStack 相关服务是否是 active 的状态。正常应该出现7个服务 active。
opst-proc-show.sh
  • 正常应该返回以下类似结果,状态应该都是active
  UNIT                        LOAD        ACTIVE   SUB       DESCRIPTION                                                                  
  chronyd.service             loaded      active   running   NTP client/server                                                            
  etcd.service                loaded      active   running   Etcd Server                                                                  
  httpd.service               loaded      active   running   The Apache HTTP Server                                                       
  mariadb.service             loaded      active   running   MariaDB 10.3 database server                                                 
  memcached.service           loaded      active   running   memcached daemon                                                             
  rabbitmq-server.service     loaded      active   running   RabbitMQ broker              
  1. 如果 Glance 出现问题,可以点击下载此 /etc/glance/glance-api.conf 参考配置 进行对比。

【常见问题FAQ】

常见问题FAQ

【后台进程(服务)说明】

如果某个后台进程(服务)无法启动,需要查看日志,可以使用以下命令,日志文件路径在下表有描述。

tail -100 日志文件
服务名称日志目录/路径说明
chronyd/var/log/chronychrony是网络时间协议(NTP)的实现。它可以替代ntpd,实现服务器
rabbitmq-server/var/log/rabbitmqRabbitMQ 是高级消息队列协议(AMQP)开放标准的实现,常用于服务器之间的消息通讯,Openstack 使用 RabbitMQ 作为底层组件来实现不同模块之间的远程调用(RPC)。
mariadb/var/log/mariadbMariaDB 是非常流行的开源关系型数据库,它能够兼容MySQL
memcached/var/log/messagesMemcached 是一个基于内存的,开源的分布式对象缓存系统。 Openstack 会使用 Memcached 存储一些短期的对象,例如令牌等。
httpd/var/log/httpdApache Web 服务器,对外提供 HTTP 等协议的 Web 访问服务
openstack-glance-api/var/log/glance/api.log提供Glance API调用服务,对应配置文件/etc/glance/glance-api.conf,进程端口9292

【思考和探索】

  1. Linux 命令中|有什么作用?

  2. openstack-config --set命令后面的参数分别表示什么意思?

扫码或长按识别访问