【版本】
当前版本号v20240310
| 版本 | 修改说明 | 
|---|---|
| v20240310 | 新增参考配置 | 
| v20230701 | 文档基于 RockyLinux8 和 Openstack Yoga 开发 | 
任务4 - 控制节点安装 Glance 镜像服务
【任务目的】
- 掌握搭建 Openstack Glance 组件
 
【任务环境】
- 内存:至少4G
 - 硬盘:至少空余40G
 - 操作系统: 64位 Windows系统。
 
【任务资源】
- FinalShell
 - RockyLinux 8 系统镜像
 - VirtualBox
 
【任务步骤】
- 使用Root用户登录控制节点(Controller)。输出 Hostname ,确认所在节点是控制节点。
 
hostname
结果:
controller+你的学号后3位
注意以下步骤在控制节点(Controller)上执行!
- 使用 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;
- 在 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
- 在 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'命令删除
- 安装服务相应 Glance 软件包。
 
dnf install openstack-glance -y
- 备份 Glance API 配置文件。注意这个命令不要重复执行,否则会覆盖原有备份配置文件。
 
cp /etc/glance/glance-api.conf{,.bak}
- 清除配置文件注释
 
grep '^[a-Z\[]' /etc/glance/glance-api.conf.bak >/etc/glance/glance-api.conf
- 设置 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 参考配置进行比对确认。
- 同步 glance 数据库
 
cd /etc/glance
su -s /bin/sh -c "glance-manage db_sync" glance
运行成功会显示
Database is synced successfully.
- 进入 MariaDB 查看是否有表格出现。密码为
GLANCE_DBPASS。如果有则表示数据库同步成功。 
mysql -u glance -p
use glance;
show tables;
- 退出 MariaDB 。
 
exit
- 启动 Glance 服务
 
systemctl enable openstack-glance-api
systemctl start openstack-glance-api
- 查看 Glance 服务是否active。
 
systemctl status openstack-glance-api
- 上传镜像文件 cirros-0.4.0-x86_64-disk.img 和 cirros-0.6.2-x86_64-disk.img 到
/opt目录。 
Cirros 是一个迷你的 Linux 发行版系统,它启动速度快,通常用作测试云虚拟机。
- 使用上传的镜像文件,创建一个名为
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                                               |
+------------------+------------------------------------------------------+
【控制节点验证步骤】
- 查询 glance service,表里应该只有一行记录。
 
source /etc/keystone/admin-openrc
openstack service list |grep -E "ID|glance"
类似结果:
| ID                               | Name     | Type     |
| 6a7ef1241c29489db2bd45ed1db14bab | glance   | image    |
- 查询 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                    |
- 查询 glance user,表里应该有1行记录。
 
source /etc/keystone/admin-openrc
openstack user list |grep -E "ID|glance"
类似结果:
| ID                               | Name    |
| c5a480d3f8ba41458926135609074b3c | glance  |
- 进入数据库查询 Glance 库,查看images表的镜像信息是否和上面结果一致。
 
mysql -u glance -p
MariaDB [(none)]>use glance;
MariaDB [glance]> select name,status,disk_format,created_at from images;
- 镜像信息也可以使用 openstack 客户端命令进行查询。
 
source /etc/keystone/admin-openrc
openstack image list --property name=cirros
- 查看 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              
- 如果 Glance 出现问题,可以点击下载此 /etc/glance/glance-api.conf 参考配置 进行对比。
 
【常见问题FAQ】
【后台进程(服务)说明】
如果某个后台进程(服务)无法启动,需要查看日志,可以使用以下命令,日志文件路径在下表有描述。
tail -100 日志文件
| 服务名称 | 日志目录/路径 | 说明 | 
|---|---|---|
| chronyd | /var/log/chrony | chrony是网络时间协议(NTP)的实现。它可以替代ntpd,实现服务器 | 
| rabbitmq-server | /var/log/rabbitmq | RabbitMQ 是高级消息队列协议(AMQP)开放标准的实现,常用于服务器之间的消息通讯,Openstack 使用 RabbitMQ 作为底层组件来实现不同模块之间的远程调用(RPC)。 | 
| mariadb | /var/log/mariadb | MariaDB 是非常流行的开源关系型数据库,它能够兼容MySQL | 
| memcached | /var/log/messages | Memcached 是一个基于内存的,开源的分布式对象缓存系统。 Openstack 会使用 Memcached 存储一些短期的对象,例如令牌等。 | 
| httpd | /var/log/httpd | Apache Web 服务器,对外提供 HTTP 等协议的 Web 访问服务 | 
| openstack-glance-api | /var/log/glance/api.log | 提供Glance API调用服务,对应配置文件/etc/glance/glance-api.conf,进程端口9292 | 
【思考和探索】
Linux 命令中
|有什么作用?openstack-config --set命令后面的参数分别表示什么意思?
