OpenStack入门篇(八)之镜像服务Glance
一、Glance的概述
Glance是为虚拟机的创建提供镜像的服务,我们基于Openstack是构建基本的IaaS平台对外提供虚拟机,而虚拟机在创建时必须为选择需要安装的操作系统,Glance服务就是为该选择提供不同的操作系统镜像。
二、Glance的组件
- Glance-API
主要用来响应各种REST请求然后通过其它模块(主要是glance-registry组件和后端存储接口)完成镜像的上传、删除、查询等操作。可以简单的再分为两部分:一层中间件,它主要是做一些对请求的解析工作(如分析出版本号), 另外一部分提供实际的服务(如与镜像上传下载的后端存储接口交互)。默认绑定端口是9292。
- Glance-Registry
镜像注册服务用于提供镜像元数据的REST接口。主要工作是存储或者获取镜像的元数据,与MySQL数据库进行交互。也可以简单的再细分为两部分,API和具体的Server。元数据是指镜像相关的一些信息(如id,size, status,location,checksum,min_disk,min_ram,owner等)真正的镜像数据保存在实际所使用的后端存储里(如Swift,S3,Filesystem等)。默认绑定的端口是9191。
- Image Store
严格来说Image Store不属于Glance的组件,这里把它单独分出来只是为了方便理解,它只是一个接口层,提供镜像存储和查询的接口。具体的实现则需要外部存储(Swift,S3)的支持。
三、Glance的工作流程
Glance需要配置的服务:glance-api、glance-registry
Glance-api:接受云系统镜像的创建、删除、读取请求
Glance-registry:云系统镜像注册服务
①Glance-api接收REST API的请求,类似nova-api
②Glance-api在功能上与nova-api十分类似,都是接收REST API请求,然后通过其他模块(glance-registry及Image Store)来完成诸如镜像的查找、‘获取、上传、删除等操作,api默认的监听端口为9292
③Glance-registry用于与MySQL数据库交互,用于存储或获取镜像的元数据(metadata);提供镜像元数据相关的REST接口,通过glance-registry,可以向数据库写入或获取镜像的各种数据,glance-registry的监听端口为9191。glance的数据库中有两张表,一张是image表,另一张是imgage propetry表。image表保存了镜像的格式、大小等信息;而image propetry表则主要保存镜像的定制化信息。可以通过:mysql -h 192.168.56.11 -uglance -pglance -e "use glance;show tables;"查看表信息
④image store是一个存储的接口层,通过这个接口,glance可以获取镜像,image store支持有Amazon的S3,OpenStack本身的swift,还有诸如ceph,GlusterFS等分布式存储。Image Store仅仅是一个接口处,具体的实现需要外部的存储支持。
总结:
glance-api 是系统后台运行的服务进程。
对外提供 REST API,响应 image 查询、获取和存储的调用。
glance-api 不会真正处理请求。
如果是与 image metadata(元数据)相关的操作,glance-api 会把请求转发给 glance-registry;
如果是与 image 自身存取相关的操作,glance-api 会把请求转发给该 image 的 store 。
四、Glance安装配置(此处将glance服务配置在控制节点上)
(1)创建“glance”服务实体
[root@linux-node1 ~]# openstack service create --name glance \
> --description "OpenStack Image" image
(2)创建镜像服务的 API 端点:
[root@linux-node1 ~]# openstack endpoint create --region RegionOne image public http://192.168.56.11:9292
[root@linux-node1 ~]# openstack endpoint create --region RegionOne image internal http://192.168.56.11:9292
[root@linux-node1 ~]# openstack endpoint create --region RegionOne image admin http://192.168.56.11:9292
(3)编辑文件 /etc/glance/glance-api.conf 并完成如下动作:
在 [database] 部分,配置数据库访问: [database]
...
connection = mysql+pymysql://glance:glance@192.168.56.11/glance
同步修改/etc/glance/glance-registry.conf 在 [database] 部分,配置数据库访问: [database]
...
connection = mysql+pymysql://glance:glance@192.168.56.11/glance
(4)同步镜像服务数据库并查看创建是否成功(此处有WARNING可以忽略):
[root@linux-node1 ~]# su -s /bin/sh -c "glance-manage db_sync" glance
Option "verbose" from group "DEFAULT" is deprecated for removal. Its value may be silently ignored in the future.
/usr/lib/python2./site-packages/oslo_db/sqlalchemy/enginefacade.py:: OsloDBDeprecationWarning: EngineFacade is deprecated; please use oslo_db.sqlalchemy.enginefacade
expire_on_commit=expire_on_commit, _conf=conf)
/usr/lib/python2./site-packages/pymysql/cursors.py:: Warning: (, u"Duplicate index 'ix_image_properties_image_id_name' defined on the table 'glance.image_properties'. This is deprecated and will be disallowed in a future release.")
result = self._query(query) [root@linux-node1 ~]# mysql -h 192.168.56.11 -uglance -pglance -e "use glance;show tables;"
(5)编辑文件 /etc/glance/glance-api.conf 并完成如下动作:
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问: [keystone_authtoken]
...
auth_uri = http://192.168.56.11:5000
auth_url = http://192.168.56.11:35357
memcached_servers = 192.168.56.11:
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance [paste_deploy]
...
flavor = keystone
同步修改/etc/glance/glance-registry.conf 在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问: [keystone_authtoken]
...
auth_uri = http://192.168.56.11:5000
auth_url = http://192.168.56.11:35357
memcached_servers = 192.168.56.11:
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance [paste_deploy]
...
flavor = keystone
(6)编辑文件 /etc/glance/glance-api.conf 并完成如下动作:
在 [glance_store] 部分,配置本地文件系统存储和镜像文件位置:只需要打开注释 [glance_store]
...
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
到此,glance-api和glance-registry都已经配置完毕
查看glance-api和registry的所有配置
[root@linux-node1 ~]# grep "^[a-z]" /etc/glance/glance-api.conf
connection = mysql+pymysql://glance:glance@192.168.56.11/glance
stores = file,http \# 配置本地文件系统和镜像存储位置
default_store = file \#默认存储文件类型
filesystem_store_datadir = /var/lib/glance/images \#默认镜像存储位置
auth_uri = http://192.168.56.11:5000
auth_url = http://192.168.56.11:35357
memcached_servers = 192.168.56.11:
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance
flavor = keystone \#配置认证服务访问 [root@linux-node1 ~]# grep "^[a-z]" /etc/glance/glance-registry.conf
connection = mysql+pymysql://glance:glance@192.168.56.11/glance
auth_uri = http://192.168.56.11:5000
auth_url = http://192.168.56.11:35357
memcached_servers = 192.168.56.11:
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance
flavor = keystone
(7)完成安装和配置,启动glance服务
[root@linux-node1 ~]# systemctl enable openstack-glance-api.service openstack-glance-registry.service
[root@linux-node1 ~]# systemctl start openstack-glance-api.service openstack-glance-registry.service
(8)验证操作
①获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
[root@linux-node1 ~]# source admin-openstack
②下载源镜像
[root@linux-node1 ~]# wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
③使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它:
注: 把镜像放到任意目录下,执行以下命令,进入那个目录,否则要加绝对路径
[root@linux-node1 ~]# openstack image create "cirros" --file cirros-0.3.-x86_64-disk.img --disk-format qcow2 --container-format bare --public
检查上传结果:
[root@linux-node1 ~]# openstack image list
五、Glance配置总结
①glance服务需要使用数据库,需要在配置文件中配置数据库连接;
②glance服务使用需要在keystone上进行注册认证,需要在配置文件中配置keystone的验证参数和方式,以及token的存储指定在memcache服务器上;
③glance服务的镜像需要配置存储的类型以及路径。
OpenStack入门篇(八)之镜像服务Glance的更多相关文章
- [ Openstack ] OpenStack-Mitaka 高可用之 镜像服务(glance)
目录 Openstack-Mitaka 高可用之 概述 Openstack-Mitaka 高可用之 环境初始化 Openstack-Mitaka 高可用之 Mariadb-Galera集群 ...
- 探索 OpenStack 之(10):深入镜像服务Glance
本篇博文来探讨下镜像服务Glance. 0. 基本概念 0.1 基本功能 Glance提供REST API来支持以下镜像操作: 查询 注册 上传 获取 删除 访问权限管理 0.2 Glance RE ...
- Centos7 install Openstack - (第三节)添加镜像服务(Glance)
Centos7 install Openstack - (第三节)添加镜像服务(Glance) 我的blog地址:http://www.cnblogs.com/caoguo 该文根据openstack ...
- 【openstack N版】——镜像服务glance
一.openstack镜像服务glance 1.1 glance介绍 glance主要是由三部分组成 glance-api:接收云系统镜像的创建,删除,读取请求,类似nova-api,通过其他模块(g ...
- OpenStack实践系列③镜像服务Glance
OpenStack实践系列③镜像服务Glance 3.5 Glance部署 修改glance-api和glance-registry的配置文件,同步数据库 [root@node1 ~]# vim /e ...
- 云计算管理平台之OpenStack镜像服务glance
一.glance简介 openstack中的glance服务是用来存储在openstack上启动虚拟机所需镜像:它主要用于发现.注册及检索虚拟机镜像:它通过提供RESTful风格的api对外提供服务: ...
- OpenStack入门篇(六)之OpenStack环境准备
一.Openstack的概述 Openstack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目. Openstack是一 ...
- Openstack(八)部署镜像服务glance
8.1glance镜像服务介绍 Glance是OpenStack镜像服务组件,glance服务默认监听在9292端口,其接收REST API请求,然后通过其他模块(glance-registry及im ...
- OpenStack 镜像服务 Glance部署(六)
Glance介绍 创建虚拟机我们需要有glance的支持,因为glance是提供镜像的服务. Glance有两个比较重要的服务: Glance-api:接受云系统镜像的构建.删除.读取请求 Glanc ...
随机推荐
- 【[HAOI2011]向量】
靠瞎猜的数学题 首先我们先对这些向量进行一顿组合,会发现\((a,b)(a,-b)\)可以组合成\((2a,0)\),\((b,-a)(b,a)\)可以组合成\((2b,0)\),同理\((0,2a) ...
- Kali-linux使用假冒令牌
使用假冒令牌可以假冒一个网络中的另一个用户进行各种操作,如提升用户权限.创建用户和组等.令牌包括登录会话的安全信息,如用户身份识别.用户组和用户权限.当一个用户登录Windows系统时,它被给定一个访 ...
- jmeter接口测试3-正则表达式提取器的使用
正则表达式的用处很多,最基础的用法 1,断言 2,传参(关联) 例子 1.http请求 2正则表达式提取,想要提取列表列中id,一遍打开列表页 如果是1,每次就会取相同的值!匹配数字的权限高于模板$0 ...
- Redis(三)内存模型
本文转载自编程迷思,原文链接 深入学习Redis(1):Redis内存模型 前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可 ...
- Dubbo实践(十七)telnet
telnet的介绍可以参看<java网络编程3>中有一段介绍telnet,我们可以理解为,telnet命令是通过socket协议与服务器端通信.Dubbo提供了telnet命令去查看服务功 ...
- 什么是工厂函数?Python 中工厂函数怎么理解?(转)
所谓工厂函数就是指这些内建函数都是类对象(实际上是类), 当你调用它们时,实际上是创建了一个类实例. type():查看类型
- lwip IP address handling 关于 IP 地址的 操作 API接口
lwip 2.0.3 IP address handling /** * @file * IP address API (common IPv4 and IPv6) */ 1.u32_t ipadd ...
- svn 提交报错post-commit hook failed (exit code 23) with output
svn 提交文件,hook同步更新报权限错误 排查后可能原因是被同步的服务器 selinux 已开启. 查看状态命令:/usr/sbin/sestatus -v #如果SELinux status参 ...
- Java中23种设计模式(附代码样例)
一.设计模式分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式.结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组 ...
- Angular7教程-04-Angular常用操作(下)
6. 数据双向绑定 视图和数据,只要一方发生变化,另一方跟着变化. 好处是不需要在代码中手动更新视图,简化开发,增加代码内聚性,代码可读性更强. 缺点是当绑定的数据层次深.数据量大时,会影响性能. 双 ...