1. 需求说明

glance作为openstack中p_w_picpath服务,支持多种适配器,支持将p_w_picpath存放到本地文件系统,http服务器,ceph分布式文件系统,glusterfs和sleepdog等开源的分布式文件系统上,本文,通过将讲述glance如何和ceph结合。

目前glance采用的是本地filesystem的方式存储,存放在默认的路径/var/lib/glance/p_w_picpaths下,当把本地的文件系统修改为分布式的文件系统ceph之后,原本在系统中镜像将无法使用,所以建议当前的镜像删除,部署好ceph之后,再统一上传至ceph中存储。

2.原理解析

   使用ceph的rbd接口,需要通过libvirt,所以需要在客户端机器上安装libvirt和qemu,关于ceph和openstack结合的结构如下,同时,在openstack中,需要用到存储的地方有三个:1. glance的镜像,默认的本地存储,路径在/var/lib/glance/p_w_picpaths目录下,2. nova虚拟机存储,默认本地,路径位于/var/lib/nova/instances目录下,3. cinder存储,默认采用LVM的存储方式。

3. glance与ceph联动

1.创建资源池pool

1、ceph默认创建了一个pool:rbd
[root@controller_10_1_2_230 ~]# ceph osd lspools
0 rbd,[root@controller_10_1_2_230 ~]# ceph osd pool stats
pool rbd id 0nothing is going on2、创建一个pool,指定pg_num的大小为128
[root@controller_10_1_2_230 ~]# ceph osd pool create p_w_picpaths 128
pool 'p_w_picpaths' created3、查看pool的pg_num和pgp_num大小
[root@controller_10_1_2_230 ~]# ceph osd pool get p_w_picpaths pg_num
pg_num: 128
[root@controller_10_1_2_230 ~]# ceph osd pool get p_w_picpaths pgp_num
pgp_num: 1284、查看ceph中的pools
[root@controller_10_1_2_230 ~]# ceph osd lspools
0 rbd,1 p_w_picpaths,
[root@controller_10_1_2_230 ~]# ceph osd pool stats
pool rbd id 0nothing is going onpool p_w_picpaths id 1                #增加了一个pool,id号码是1nothing is going on

2.配置ceph客户端

1. glance作为ceph的客户端,即glance-api,需要有ceph的配置文件,从ceph的monitor节点复制一份配置文件过去即可,我所在环境中控制节点和ceph monitor为同一台机器,不需要操作#如果controller节点和ceph的monitor节点是分开,则需要复制
[root@controller_10_1_2_230 ~]# scp /etc/ceph/ceph.conf root@controller_10_1_2_230:/etc/ceph/
ceph.conf  2. 安装客户端rpm包[root@controller_10_1_2_230 ~]# yum install python-rbd -y

3.配置ceph认证

1. 添加认证的key
[root@controller_10_1_2_230 ~]# ceph auth get-or-create client.glance mon 'allow r' osd 'class-read object_prefix rbd_children,allow rwx pool=p_w_picpaths'
[client.glance]key = AQB526lWOOIQBxAA0ZSk30DBShtti3fKkm4aeA==2. 查看认证列表
[root@controller_10_1_2_230 ~]# ceph auth list
installed auth entries:osd.0key: AQDsx6lWYGehDxAAGwcYP9jDvH2Zaa8JlGwj1Q==caps: [mon] allow profile osdcaps: [osd] allow *
osd.1key: AQD1x6lWQCYBERAAjIKO1LVpj8FvVefDvNQZSA==caps: [mon] allow profile osdcaps: [osd] allow *
client.adminkey: AQCexqlWQL6OGBAA2v5LsYEB5VgLyq/K2huY3A==caps: [mds] allowcaps: [mon] allow *caps: [osd] allow *
client.bootstrap-mdskey: AQCexqlWUMNRMRAAZEp/UlhQuaixMcNy5d5pPw==caps: [mon] allow profile bootstrap-mds
client.bootstrap-osdkey: AQCexqlWQFfpJBAAfPCx4sTLNztBESyFKys9LQ==caps: [mon] allow profile bootstrap-osd
client.glance                                             #glance连接ceph的认证信息key: AQB526lWOOIQBxAA0ZSk30DBShtti3fKkm4aeA==caps: [mon] allow rcaps: [osd] class-read object_prefix rbd_children,allow rwx pool=p_w_picpaths 3. 将glance生成的key拷贝至
[root@controller_10_1_2_230 ~]# ceph auth get-or-create client.glance
[client.glance]key = AQB526lWOOIQBxAA0ZSk30DBShtti3fKkm4aeA==#将key导出到客户端
[root@controller_10_1_2_230 ~]# ceph auth get-or-create client.glance | tee /etc/ceph/ceph.client.glance.keyring
[client.glance]key = AQB526lWOOIQBxAA0ZSk30DBShtti3fKkm4aeA==
[root@controller_10_1_2_230 ~]# chown glance:glance /etc/ceph/ceph.client.glance.keyring
[root@controller_10_1_2_230 ~]# ll /etc/ceph/ceph.client.glance.keyring
-rw-r--r-- 1 glance glance 64 Jan 28 17:17 /etc/ceph/ceph.client.glance.keyring

4. 配置glance使用ceph做为后端存储

1、备份glance-api的配置文件,以便于恢复
[root@controller_10_1_2_230 ~]# cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.orig2、修改glance配置文件,连接至ceph
[root@controller_10_1_2_230 ~]# vim /etc/glance/glance-api.conf
[DEFAULT]
notification_driver = messaging
rabbit_hosts = 10.1.2.230:5672
rabbit_retry_interval = 1
rabbit_retry_backoff = 2
rabbit_max_retries = 0
rabbit_ha_queues = True
rabbit_durable_queues = False
rabbit_userid = glance
rabbit_password = GLANCE_MQPASS
rabbit_virtual_host = /glancedefault_store=rbd             #glance使用的后端存储
known_stores=glance.store.rbd.Store      #配置rbd的驱动rbd_store_ceph_conf=/etc/ceph/ceph.conf    #ceph的配置文件,包含有monitor的地址,通过查找monitor,可以获取认证信息
rbd_store_user=glance                      #认证用户,即是刚创建的用户
rbd_store_pool=p_w_picpaths                      #连接的存储池
rbd_store_chunk_size=8                     #设置chunk size,即切割的大小3. 重启glance服务
[root@controller_10_1_2_230 ~]# /etc/init.d/openstack-glance-api restart
Stopping openstack-glance-api:                             [  OK  ]
Starting openstack-glance-api:                             [  OK  ]
[root@controller_10_1_2_230 ~]# /etc/init.d/openstack-glance-registry restart
Stopping openstack-glance-registry:                        [  OK  ]
Starting openstack-glance-registry:                        [  OK  ]
[root@controller_10_1_2_230 ~]# tail -2 /etc/glance/glance-api.conf
# location strategy defined by the 'location_strategy' config option.
#store_type_preference =
[root@controller_10_1_2_230 ~]# tail -2 /var/log/glance/registry.log
2016-01-28 18:40:25.231 21890 INFO glance.wsgi.server [-] Started child 21896
2016-01-28 18:40:25.232 21896 INFO glance.wsgi.server [-] (21896) wsgi starting up on http://0.0.0.0:9191/

5. 测试glance和ceph联动情况

[root@controller_10_1_2_230 ~]# glance --debug p_w_picpath-create --name glance_ceph_test --disk-format qcow2  --container-format bare  --file  cirros-0.3.3-x86_64-disk.img
curl -i -X POST -H 'x-p_w_picpath-meta-container_format: bare' -H 'Transfer-Encoding: chunked' -H 'User-Agent: python-glanceclient' -H 'x-p_w_picpath-meta-size: 13200896' -H 'x-p_w_picpath-meta-is_public: False' -H 'X-Auth-Token: 062af9027a85487997d176c9f1e963f2' -H 'Content-Type: application/octet-stream' -H 'x-p_w_picpath-meta-disk_format: qcow2' -H 'x-p_w_picpath-meta-name: glance_ceph_test' -d '<open file u'cirros-0.3.3-x86_64-disk.img', mode 'rb' at 0x1ba24b0>' http://controller:9292/v1/p_w_picpathsHTTP/1.1 201 Created
content-length: 489
etag: 133eae9fb1c98f45894a4e60d8736619
location: http://controller:9292/v1/p_w_picpaths/348a90e8-3631-4a66-a45d-590ec6413e7d
date: Thu, 28 Jan 2016 10:42:06 GMT
content-type: application/json
x-openstack-request-id: req-b993bc0b-447e-49b4-a8ce-bd7765199d5a{"p_w_picpath": {"status": "active", "deleted": false, "container_format": "bare", "min_ram": 0, "updated_at": "2016-01-28T10:42:06", "owner": "ef4b83a909dc4689b663ff2c70022478", "min_disk": 0, "is_public": false, "deleted_at": null, "id": "348a90e8-3631-4a66-a45d-590ec6413e7d", "size": 13200896, "virtual_size": null, "name": "glance_ceph_test", "checksum": "133eae9fb1c98f45894a4e60d8736619", "created_at": "2016-01-28T10:42:04", "disk_format": "qcow2", "properties": {}, "protected": false}}+------------------+--------------------------------------+
| Property         | Value                                |
+------------------+--------------------------------------+
| checksum         | 133eae9fb1c98f45894a4e60d8736619     |
| container_format | bare                                 |
| created_at       | 2016-01-28T10:42:04                  |
| deleted          | False                                |
| deleted_at       | None                                 |
| disk_format      | qcow2                                |
| id               | 348a90e8-3631-4a66-a45d-590ec6413e7d |
| is_public        | False                                |
| min_disk         | 0                                    |
| min_ram          | 0                                    |
| name             | glance_ceph_test                     |
| owner            | ef4b83a909dc4689b663ff2c70022478     |
| protected        | False                                |
| size             | 13200896                             |
| status           | active                               |
| updated_at       | 2016-01-28T10:42:06                  |
| virtual_size     | None                                 |
+------------------+--------------------------------------+[root@controller_10_1_2_230 ~]# glance p_w_picpath-list
+--------------------------------------+---------------------+-------------+------------------+----------+--------+
| ID                                   | Name                | Disk Format | Container Format | Size     | Status |
+--------------------------------------+---------------------+-------------+------------------+----------+--------+
| 56e96957-1308-45c7-9c66-1afff680b217 | cirros-0.3.3-x86_64 | qcow2       | bare             | 13200896 | active |
| 348a90e8-3631-4a66-a45d-590ec6413e7d | glance_ceph_test    | qcow2       | bare             | 13200896 | active |    #上传成功
+--------------------------------------+---------------------+-------------+------------------+----------+--------+

6.查看ceph池的数据

[root@controller_10_1_2_230 ~]# rados -p p_w_picpaths ls
rbd_directory
rbd_header.10d7caaf292
rbd_data.10dd1fd73446.0000000000000001
rbd_id.348a90e8-3631-4a66-a45d-590ec6413e7d
rbd_header.10dd1fd73446
rbd_data.10d7caaf292.0000000000000000
rbd_data.10dd1fd73446.0000000000000000
rbd_id.8a09b280-5916-44c6-9ce8-33bb57a09dad    @@@glance中的数据存储到了ceph文件系统中@@@

4. 总结

将openstack的glance的数据存储到ceph中是一种非常好的解决方案,既能够保障p_w_picpath数据的安全性,同时glance和nova在同个存储池中,能够基于copy-on-write的方式快速创建虚拟机,能够在秒级为单位实现vm的创建。

转载于:https://blog.51cto.com/happylab/1739642

openstack运维实战系列(十七)之glance与ceph结合相关推荐

  1. openstack运维实战系列(十)之nova指定compute节点和IP地址

    1. 背景需求 在openstack中,nova负责openstack虚拟机的生命周期的管理,neutron则负责虚拟机的网络管理工作,默认情况下,创建一台虚拟机,nova会根据nova-schedu ...

  2. openstack运维实战系列(一)之keystone用户建立

    1. 前言 在生产环境中,使用openstack已经有1年多的时间了,苦于一直没有时间,加上工作带来的懒惰,一直迟迟没有对openstack方面的知识做个总结,趁着年底,把过去一年多在生产环境中所遇到 ...

  3. 大数据运维实战第十七课 日志收集、分析过滤工具 Logstash应用实战

    本课时主要讲解"日志收集.分析过滤工具 Logstash 应用实战". Logstash 介绍与安装 Logstash 是一款轻量级的.开源的日志收集处理框架,它可以方便地把分散的 ...

  4. Hadoop运维记录系列(十七)

    上个月通过email,帮朋友的朋友解决了一个Cloudera的Spark-SQL无法访问HBase做数据分析的问题,记录一下. 首先,对方已经做好了Hive访问HBase,所以spark-sql原则上 ...

  5. MySQL运维实战系列:MySQL5.7 Group By 问题

    一.环境 MySQL版本:MySQL5.7.22表结构:CREATE TABLE `crm_report_accounting_income` (`id` int(10) NOT NULL AUTO_ ...

  6. 《VMware vSphere企业运维实战》——2.6 使用vCenter Converter迁移物理机到虚拟机

    本节书摘来自异步社区<VMware vSphere企业运维实战>一书中的第2章,第2.6节,作者:王春海著,更多章节内容可以访问云栖社区"异步社区"公众号查看 2.6 ...

  7. OpenStack运维面试(1)

    确实有很久都没写博客了,这篇题目笔记是自己经历的,也有自己思考的,已经有很长时间才算写完这30道.说说自己的状况吧,首先说为什么是OpenStack运维面试呢,因为之前在一家OpenStack云计算公 ...

  8. 《VMware vSphere 6.5企业运维实战》已经出版

    <VMware vSphere 6.5企业运维实战>已经由人民邮电出版社出版,购买链接: https://item.jd.com/26391828617.html 本书以vSphere 6 ...

  9. 云计算学习7——云计算OpenStack运维基础

    声明:原创作品,严禁用于商业目的. 如有任何技术问题,欢迎和我交流:408797506(微信同号). 文章目录 1. 完成新建主机nova的流程操作 2. nova管理 3.Cinder存储 4. s ...

最新文章

  1. 有道精品课python-Python:7行代码爬取有道词典
  2. 删除文件夹右键下的部分目录
  3. 点积的那个公式:a dot b =||a||*||b||CosX.
  4. server安装 sql 发生mof语法错误_WIN7系统无法安装server2008R2,提示语法MOF错误
  5. JavaScript跨域脚本调用(iframe方式)
  6. IOMMU 虚拟IO地址和物理地址相关联
  7. fork、vfork、clone 三者的区别
  8. 使用Sublime Text 2 编辑Markdown
  9. 为什么房价不能跌,房租必须涨
  10. centos 下载文件很慢_百度云盘上传文件和下载文件慢的解决办法
  11. google语音搜索识别API【转载】
  12. 傅里叶变化(一)—— 复数
  13. Java 左移运算符注意事项
  14. 机器人开发--常用仿真软件工具
  15. usb接上计算机没反应怎么办,usb硬盘插上电脑没反应怎么办,小编教你怎么解决...
  16. #单片机# ------ stc89c52引脚说明
  17. 椭圆机的正确使用方法,你学会了吗?
  18. flutter播放上一首和下一首,自动播放下一首
  19. 弯道超车!阿里P5~P8学习路线终发布,程序员进阶的关键所在
  20. 软件测试修炼之路必读书单

热门文章

  1. 移动语义(move semantic)和完美转发(perfect forward)
  2. java注释模板_Java注释模板设置
  3. 多级队列调度算法可视化界面_冷月手撕408之操作系统(8)-处理机调度
  4. 不满俄欧“北溪-2”项目 美驻德大使威胁制裁德国企业
  5. svn commit --cl app 时手动输入提交的注释,而不是在 -m 'comments here'这里输入
  6. 解决IE浏览器登陆失败异常!
  7. 字王谈M1字形与个人云字库
  8. Android通过onDraw实现在View中绘图操作
  9. Adobe Acrobat XI反色保护色
  10. flink代码出现no instance(s) of type variable(s) T0, T1, T2 exist