4.镜像服务glance
部署镜像服务 glance:
Glance 是 OpenStack 镜像服务组件, glance 服务默认监听在 9292 端口,其接收 REST API 请
求,然后通过其他模块(glance-registry 及 image store)来完成诸如镜像的获取、上传、删除
等操作, Glance 提供 restful API 可以查询虚拟机镜像的 metadata,并且可以获得镜像,通过
Glance,虚拟机镜像可以被存储到多种存储上,比如简单的文件存储或者对象存储(比如
OpenStack 中 swift 项目)是在创建虚拟机的时候,需要先把镜像上传到 glance,对镜像的列
出镜像、删除镜像和上传镜像都是通过 glance 进行理, glance 有两个主要的服务,一个是
glace-api 接收镜像的删除上传和读取,一个是 glance-Registry。
glance-registry 负责与 mysql 数据交互,用于存储或获取镜像的元数据(metadata),提供镜
像元数据相关的 REST 接口,通过 glance-registry 可以向数据库中写入或获取镜像的各种数
据, glance-registyr 监听的端口是 9191, glance 数据库中有两张表,一张是 glance 表,一张
是 imane property 表, image 表保存了镜像格式、大小等信息, image property 表保存了镜像
的定制化信息。
image store 是一个存储的接口层,通过这个接口 glance 可以获取镜像, image store 支持的
存储有 Amazon 的 S3、 openstack 本身的 swift、还有 ceph、 glusterFS、 sheepdog 等分布式存
储, image store 是镜像保存与读取的接口,但是它只是一个接口,具体的实现需要外部的支
持, glance 不需要配置消息队列,但是需要配置数据库和 keystone。
官方部署文档: https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/glance.html
https://docs.openstack.org/glance/stein/install/install-rdo.html
设置权限
[root@mysql ~]# chown 161.161 -R /data/openstack/image/
[root@controller1 ~]# openstack project list
Internal Server Error (HTTP 500)
安装haproxy解决域名问题
[root@controller1 ~]# yum install haproxy -y
listen mysql
bind 192.168.200.101:3306
mode tcp
server mysql1 192.168.200.105:3306 check
listen memcached
bind 192.168.200.101:11211
mode tcp
server mysql1 192.168.200.105:11211 check
做个转发保证mysql和keysten都可以用
[root@controller1 ~]# systemctl start haproxy
可以访问
[root@controller1 ~]# openstack project list
+----------------------------------+---------+
| ID | Name |
+----------------------------------+---------+
| 9d039098dc4743899e030b15e649e420 | demo |
| c7478f76b624458993cfb98de35e9220 | service |
| db01fb9905504e4ca93f5a9ccde1500e | admin |
+----------------------------------+---------+
本节介绍如何在控制器节点上安装和配置代号为glance的Image服务。为简单起见,此配置将图像存储在本地文件系统上。
## 前提条件
在安装和配置Image服务之前,必须创建数据库,服务凭证和API端点。
1. 要创建数据库,请完成以下步骤:
使用数据库访问客户端以`root`用户身份连接到数据库服务器:
创建glance数据库:
MariaDB [keystone]> CREATE DATABASE glance;
授予对glance数据库的适当访问权限:
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance123';
控制端测试连接
[root@controller1 ~]# mysql -uglance -h192.168.200.105 -pglance123
查看数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| glance |
| information_schema |
+--------------------+
2 rows in set (0.001 sec)
管理端导入环境变量
来源admin凭据来访问仅管理员CLI命令:
[root@controller1 ~]# source scripts/admin-stein.sh
要创建服务凭证,请完成以下步骤:
创建glance用户:
[root@controller1 ~]# openstack user create --domain default --password-prompt glance
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | c12058276278430fbf36271c39c4e356 |
| enabled | True |
| id | 0f01655eb13c49ac867f25c34c4bdaff |
| name | glance |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
将admin角色添加到glance用户和 service项目:
[root@controller1 ~]# openstack role add --project service --user glance admin
创建glance服务实体
[root@controller1 ~]# openstack service create --name glance --description "OpenStack Image" image
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Image |
| enabled | True |
| id | 35eea3eb3f674fadb4811d3f6b8f4d33 |
| name | glance |
| type | image |
+-------------+----------------------------------+
创建图像服务API端点:
[root@controller1 ~]# openstack endpoint create --region RegionOne image public http://openstack-vip.wyh.net:9292
[root@controller1 ~]# openstack endpoint create --region RegionOne image internal http://openstack-vip.wyh.net:9292
[root@controller1 ~]#openstack endpoint create --region RegionOne image admin http://openstack-vip.wyh.net:9292
安装软件包:
[root@controller1 ~]# yum install openstack-glance -y
安装nfs服务
[root@mysql ~]# yum install nfs-utils -y
[root@controller1 ~]# yum install nfs-utils -y
创建放镜像的文件夹
[root@mysql ~]# mkdir /data/openstack/image -p
[root@mysql ~]# cat /etc/exports
/data/openstack/image *(rw,no_root_squash)
[root@mysql ~]# systemctl start nfs
[root@mysql ~]# systemctl enable nfs
查看挂载信息
[root@controller1 ~]# showmount -e 192.168.200.105
Export list for 192.168.200.105:
/data/openstack/image *
编辑/etc/glance/glance-api.conf文件并完成以下操作:
[root@controller1 ~]# vim /etc/glance/glance-api.conf
在该[database]部分中,配置数据库访问:
[database]
connection = mysql+pymysql://glance:glance123@openstack-vip.wyh.net/glance
在[keystone_authtoken]和[paste_deploy]部分中,配置身份服务访问:
www_authenticate_uri = http://openstack-vip.wyh.net:5000
auth_url = http://openstack-vip.wyh.net:5000
memcached_servers = openstack-vip.wyh.net:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = glance
[paste_deploy]
flavor = keystone
在该[glance_store]部分中,配置本地文件系统存储和图像文件的位置:
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
编辑/etc/glance/glance-registry.conf文件并完成以下操作:
在该[database]部分中,配置数据库访问
[database]
connection = mysql+pymysql://glance:glance123@openstack-vip.wyh.net/glance
在[keystone_authtoken]和[paste_deploy]部分中,配置身份服务访问:
[keystone_authtoken]
www_authenticate_uri = http://openstack-vip.wyh.net:5000
auth_url = http://openstack-vip.wyh.net:5000
memcached_servers = openstack-vip.wyh.net:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = glance
[paste_deploy]
flavor = keystone
初始化数据库
[root@controller1 ~]# su -s /bin/sh -c "glance-manage db_sync" glance
启动映像服务,并将其配置为在系统引导时启动:
# systemctl enable openstack-glance-api.service \
openstack-glance-registry.service
# systemctl start openstack-glance-api.service \
openstack-glance-registry.service
挂载
[root@controller1 ~]# mount -t nfs 192.168.200.105:/data/openstack/image /var/lib/glance/images
[root@controller1 ~]# systemctl restart openstack-glance-api.service \
> openstack-glance-registry.service
[root@controller1 ~]# vim /etc/fstab 设置开机自动挂载
192.168.200.105:/data/openstack/image /var/lib/glance/images nfs defaults,_netdev
测试挂载没有问题
查看日志的信息(查看有没有erro信息)
[root@controller1 ~]# tail -f /var/log/glance/*.log
2019-12-16 13:31:12.672 25886 INFO eventlet.wsgi.server [-] (25886) wsgi starting up on http://0.0.0.0:9191
查看验证讯息
[https://docs.openstack.org/glance/stein/install/](https://docs.openstack.org/glance/stein/install/)
[https://docs.openstack.org/glance/stein/install/verify.html](https://docs.openstack.org/glance/stein/install/verify.html)
下载源图像:
[root@controller1 ~]# wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
创建镜像
[root@controller1 ~]# openstack image create "cirros" --file cirros-0.4.0-x86_64-disk.img --disk-format qcow2 --container-format bare --public
确认上传镜像并验证属性:
[root@controller1 ~]# openstack image list
+--------------------------------------+--------+--------+
| ID | Name | Status |
+--------------------------------------+--------+--------+
| aaea9d72-7913-413d-842a-518cbc0e82ef | cirros | active |
+--------------------------------------+--------+--------+