Part 4 - 安装 Glance 镜像服务

2021-03-02
5分钟阅读时长

【版本】

当前版本号v20230313

版本修改说明
v20230313增加后台进程(服务)说明
v20230207修正部分命令拼写错误
v20220309增加提醒service和endpoint不能重复创建
v20220208修正相关步骤
v20210324增加验证步骤
v20210303-3memcached_servers配置的地址需要加学号后3位
v20210303-2步骤3增加project service创建
v20210303运行openstack镜像命令前先设置环境变量
v20210302初始化版本

【实验名称】

云计算部署实战 Part 4 - 安装 Glance 镜像服务

【实验目的】

  • 掌握搭建 Openstack Glance 组件

【实验环境】

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

【实验资源】

  • FinalShell
  • CentOS 7 系统镜像
  • VirtualBox
  • Openstack 源
  • CirrOS 镜像

【实验步骤】

  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
  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. 安装服务相应软件包
yum 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_uri  http://controller+你的学号后3位:5000
openstack-config --set /etc/glance/glance-api.conf  keystone_authtoken auth_url  http://controller+你的学号后3位:35357
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
  1. 备份 Glance Registry 配置
cp /etc/glance/glance-registry.conf{,.bak}
  1. 清除配置文件注释
grep '^[a-Z\[]' /etc/glance/glance-registry.conf.bak > /etc/glance/glance-registry.conf
  1. 设置 Registry 配置项,注意替换为你的个人学号。
openstack-config --set /etc/glance/glance-registry.conf  database  connection  mysql+pymysql://glance:GLANCE_DBPASS@controller+你的学号后3位/glance
openstack-config --set /etc/glance/glance-registry.conf  keystone_authtoken auth_uri  http://controller+你的学号后3位:5000
openstack-config --set /etc/glance/glance-registry.conf  keystone_authtoken auth_url  http://controller+你的学号后3位:35357
openstack-config --set /etc/glance/glance-registry.conf  keystone_authtoken memcached_servers  controller+你的学号后3位:11211
openstack-config --set /etc/glance/glance-registry.conf  keystone_authtoken auth_type  password
openstack-config --set /etc/glance/glance-registry.conf  keystone_authtoken project_domain_name  default
openstack-config --set /etc/glance/glance-registry.conf  keystone_authtoken user_domain_name  default
openstack-config --set /etc/glance/glance-registry.conf  keystone_authtoken project_name  service
openstack-config --set /etc/glance/glance-registry.conf  keystone_authtoken username  glance
openstack-config --set /etc/glance/glance-registry.conf  keystone_authtoken password  GLANCE_PASS
openstack-config --set /etc/glance/glance-registry.conf  paste_deploy flavor  keystone
  1. 同步 glance 数据库
cd /etc/glance
su -s /bin/sh -c "glance-manage db_sync" glance
  1. 进入 MariaDB 查看是否有表格出现。密码为GLANCE_DBPASS。如果有则表示数据库同步成功。
mysql -u glance -p
use glance;
show tables;
  1. 退出 MariaDB 。
exit
  1. 启动 Glance 服务
systemctl enable openstack-glance-api.service  openstack-glance-registry.service
systemctl start openstack-glance-api.service openstack-glance-registry.service
  1. 上传镜像文件 cirros-0.4.0-x86_64-disk.img 到/opt目录。Cirros 是一个迷你的 Linux 发行版系统。

  2. 使用上传的镜像文件,创建一个名为cirros,磁盘格式为qcow2的镜像。正常创建会返回类似以下的表格内容。

source /etc/keystone/admin-openrc
openstack image create "cirros" \
  --file /opt/cirros-0.4.0-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. 验证glance-api.confglance-registry.conf配置文件里面 controller 出现的次数。注意替换为你的个人学号。
grep -o controller+你学号后3位 /etc/glance/glance-api.conf|wc -l

验证结果:

4
grep -o controller+你学号后3位 /etc/glance/glance-registry.conf|wc -l

验证结果:

4
  1. 查看以下服务是否是 active 的状态。正常应该出现7个服务 active。
systemctl -a |grep -E "UNIT|chronyd|memcached|rabbitmq|mariadb|glance|httpd"

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

服务名称日志目录/路径说明
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
openstack-glance-registry/var/log/glance/registry.log提供镜像(images)注册等服务,对应配置文件 /etc/glance/glance-registry.conf,进程端口9191

【思考和探索】

  1. 步骤23中的grep命令和wc命令分别有什么作用?

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

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