第二步:安装openstack-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(新版本的openstack中,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。

虚拟机镜像就是已经装好虚拟机系统的磁盘文件;
镜像的元数据,如镜像名称、大小和id等都是存放到mysql中的;

在controller节点安装glance服务

https://docs.openstack.org/glance/train/install/install-rdo.html #安装文档

glance可以单独安装在一台服务器上,也可以和controler安装在同一台服务器上

1、source admin-openrc.sh     #让admin用户的认证信息生效,这样才可以在openstack中执行后续操作

2、openstack user create --domain default --password-prompt glance  
#在openstack中创建glance用户

3、openstack role add --project service --user glance admin
#将glance用户添加到service项目中,并且针对这个项目拥有admin权限;注册glance的API,需要对service项目有admin权限

4、openstack service create --name glance --description "OpenStack Image" image
#创建一个service服务,service名称为glance,类型为image;创建完成后可以通过 openstack service list 查看

5、openstack endpoint create --region RegionOne image public http://openstack-vip.linux.local:9292
openstack endpoint create --region RegionOne image internal http://openstack-vip.linux.local:9292
openstack endpoint create --region RegionOne image admin http://openstack-vip.linux.local:9292  #创建glance service的endpoint

#将glance的API注册到glance的service中;service是包含API的,所以需要把glance的API注册到glance的service中;openstack中的endpoint相当于k8s中的service,即openstack中的service是用于注册后端服务器;
当访问glance service的9292端口,就转发到endpoint的地址处理;endpoint相当于是给service创建了一个端口,也不完全等同于k8s中的service,k8s中的service是有端口的,但是openstack中的service是没有端口的,需要通过endpoint注册

6、yum install openstack-glance -y

7、vim /etc/glance/glance-api.conf  #glance有两个配置文件,还有一个glance-registry.conf
[database]
connection = mysql+pymysql://glance:glance123@openstack-vip.linux.local/glance

[keystone_authtoken]
www_authenticate_uri  = http://openstack-vip.linux.local:5000  #指定认证的keystone的URL
auth_url = http://openstack-vip.linux.local:5000
memcached_servers = openstack-vip.linux.local:11211  #指定memcached的地址
auth_type = password    #认证方式采用密码
project_domain_name = Default
user_domain_name = Default
project_name = service   #glance用户针对service项目拥有admin权限
username = glance        #指定glance用户
password = glance        #密码为glance

[paste_deploy]
flavor = keystone     #指定提供认证的服务器为keystone

[glance_store]
stores = file   #指定存储类型为文件存储;还有http类型,基于api调用方式,把镜像放到其他存储上
default_store = file
filesystem_store_datadir = /var/lib/glance/images/  #指定镜像存放的本地目录

注意:
整个openstack的各个服务的配置文件中,不能有中文,包括注释,如果有中文,会直接导致python解析配置文件失败而报错

8、su -s /bin/sh -c "glance-manage db_sync" glance  
#初始化glance数据库,生成相关表结构;不管有多少个controler,只需要初始化一次即可

9、systemctl start openstack-glance-api.service

10、systemctl enable openstack-glance-api.service

11、systemctl stop openstack-glance-api.service   #之前glance启动服务是为了生成存放镜像的目录

12、mount -t nfs 172.31.7.105:/data/glance/ /var/lib/glance/images/
#将nfs挂载到存放镜像的目录下的

13、id glance

14、chown 161.161 /var/lib/glance/images -R
#指定所有者及所属组时必须指定的是glance用户的uid及gid,这样nfs共享出来的目录的所有者及所属组也会变为161

15、systemctl start openstack-glance-api.service

16、vim /etc/fstab       #存放到fstab文件中,开机自动挂载
172.31.7.105:/data/glance/ /var/lib/glance/images/ nfs defaults,_netdev 0 0

17、tail -f /var/log/glance/api.log  #通过日志查看glance是否启动


###测试验证
1、wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img  #下载镜像

2、glance image-create --name "cirros-0.4.0"   #创建镜像,指定镜像名称
  --file cirros-0.4.0-x86_64-disk.img   #指定源镜像文件,如果不在当前目录下,需要指定绝对路径
  --disk-format qcow2 --container-format bare   #指定磁盘文件格式qcow2,磁盘格式为裸磁盘
  --visibility public    #在当前openstack中,此镜像是共享的,不需要登录就可以下载
#此步骤是上传所下载的镜像到存储中 、

3、openstack image list     #列出openstack中的所有镜像
   glance image-list   #此命令也可以查看镜像
   
4、glance image-delete 镜像ID   #删除指定镜像,存储中的镜像也会被删除

https://docs.openstack.org/glance/train/install/verify.html #验证参考文档

mysql服务器配置

1、CREATE DATABASE glance;   #创建数据库,用于存储镜像的元数据

2、GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance123';

haproxy配置

1、vim /etc/haproxy/haproxy.cfg
listen openstack-glance-9292
 mode tcp
 bind 172.31.7.248:9292
 server 172.31.7.101 172.31.7.101:9292 check inter 3s fall 3 rise 5
 
2、systemctl restart haproxy.service 

准备NFS服务器

镜像是放在controler节点本地磁盘上的,所以其他controler节点是无法查看存放镜像的controler节点上的所有镜像,所以一般镜像存放到NAS存储上,方便所有controler节点都可以查看到镜像;

1、yum install nfs-utils -y

2、mkdir /data/glance -p

3、vim /etc/exports
/data/glance *(rw,no_root_squash)

4、systemctl restart nfs

5、systemctl enable nfs


###管理端验证
1、yum install nfs-utils -y

2、showmount -e 172.31.7.105
原文地址:https://www.cnblogs.com/dongzhanyi123/p/13299841.html