文档章节

使用Ceph作为OpenStack的后端存储

Jerry_Baby
 Jerry_Baby
发布于 2015/02/09 22:43
字数 889
阅读 12826
收藏 63

概述

        libvirt配置了librbdQEMU接口,通过它可以在OpenStack中使用Ceph块存储。Ceph块存储是集群对象,这意味着它比独立的服务器有更好的性能。
        在OpenStack中使用Ceph块设备,必须首先安装QEMUlibvirtOpenStack,下图描述了 OpenStackCeph技术层次结构:


http://my.oschina.net/JerryBaby/blog/376580 我翻译的官方文档,仅供参考 ^ ^

系统规划

OpenStack集群:
         控制节点:openstackcontroller192.168.1.131
         计算节点:compute                      192.168.1.132
         存储节点:storage                        192.168.1.133

Ceph集群:
       monitormdsosd0 节点:openstackcontroller192.168.1.131
       osd1compute       192.168.1.132
       osd2storage         192.168.1.133

系统架构:


配置过程

Important:由于这里将两套集群服务部署在了同一组节点上,所以配置过程中省略了一些关于Ceph集群的配置。

创建存储池

# ceph osd pool create volumes 128
# ceph osd pool create images 128
# ceph osd pool create vms 128

设置Ceph客户端认证

OpenStack节点执行如下命令:

# ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images'
# ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'

client.cinderclient.glance添加密钥文件来访问节点并改变属主:

# ceph auth get-or-create client.glance | ssh openstack sudo tee /etc/ceph/ceph.client.glance.keyring
# ssh openstack sudo chown glance:glance /etc/ceph/ceph.client.glance.keyring
# ceph auth get-or-create client.glance | ssh compute sudo tee /etc/ceph/ceph.client.glance.keyring
# ssh compute sudo chown nova:nova /etc/ceph/ceph.client.glance.keyring
# ceph auth get-or-create client.cinder | ssh compute sudo tee /etc/ceph/ceph.client.cinder.keyring
# ssh compute sudo chown nova:nova /etc/ceph/ceph.client.cinder.keyring
# ceph auth get-or-create client.cinder | ssh storage sudo tee /etc/ceph/ceph.client.cinde.keyring
# ssh storage sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring

运行nova-compute的节点nova-compute进程需要密钥文件。它们也存储client.cinder用户的密钥在libvirtlibvirt进程在Cinder中绑定块设备时需要用到它来访问集群。
nova-compute节点创建一个临时的密钥副本:

# uuidgen
457eb676-33da-42ec-9a8c-9293d545c337

# cat > secret.xml <<EOF
<secret ephemeral='no' private='no'>
  <uuid>457eb676-33da-42ec-9a8c-9293d545c337</uuid>
  <usage type='ceph'>
    <name>client.cinder secret</name>
  </usage>
</secret>
EOF
# sudo virsh secret-define --file secret.xml 
# sudo virsh secret-set-value --secret 457eb676-33da-42ec-9a8c-9293d545c337 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml

配置Glance

编辑 /etc/glance/glance-api.conf并添加如下内容:

[DEFAULT]
default_store = rbd
...
[glance_store]
stores = rbd
rbd_store_pool = images
rbd_store_user = glance
rbd_store_ceph_conf = /etc/ceph/ceph.conf
rbd_store_chunk_size = 8

如果要启动镜像的写时复制功能,添加下面的 [DEFAULT] 部分:

show_image_direct_url = True

配置Cinder

openstack节点和storage节点编辑 /etc/cinder/cinder.conf配置文件并添加如下内容:

volume_driver = cinder.volume.drivers.rbd.RBDDriver
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
glance_api_version = 2

如果使用cephx验证,需要配置useruuid

rbd_user = cinder
rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337

配置Nova

为了挂载Cinder设备(普通设备或可引导卷),必须指明使用的用户及UUIDlibvirt将使用期在Ceph集群中进行连接和验证:

rbd_user = cinder
rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337

编辑 /etc/nova/nova.conf并添加如下内容:

[libvirt]
images_type = rbd
images_rbd_pool = vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_user = cinder
rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337
libvirt_live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST"

禁用文件注入。当启动一个实例的时候,nova通常会尝试打开rootfs。这时,nova注入一些数据,如密码、ssh 密钥,配置文件等到文件系统中。然而,这最好依靠元数据服务和cloud-init来完成。

在每个计算节点,编辑 /etc/nova/nova.conf [libvirt] 标签添加:

libvirt_inject_password = false
libvirt_inject_key = false
libvirt_inject_partition = -2

重启服务

# sudo glance-control api restart
# sudo service nova-compute restart
# sudo service cinder-volume restart
# sudo service cinder-backup restar

从块设备引导

Ceph后端存储状况:

Ceph不支持从qcow2格式的镜像引导,所以创建一个raw格式的镜像:

创建一个可引导卷:


从可引导卷创建一个实例:

查看Ceph存储状况:

© 著作权归作者所有

共有 人打赏支持
Jerry_Baby
粉丝 24
博文 33
码字总数 35098
作品 0
海淀
系统管理员
加载中

评论(3)

g
geek666
hao0
天空冰雨
天空冰雨

引用来自“霡霂”的评论

@红薯 咩,你们的ceph的架构是机密咩?
貌似他们已经没用ceph了,已经迁移了。
霡霂
霡霂
@红薯 咩,你们的ceph的架构是机密咩?
译:块设备和 OpenStack

libvirt 配置了 librbd 的 QEMU 接口,通过它可以在 OpenStack 中使用 Ceph 块设备镜像。Ceph 块设备镜像被当作集群对象,这意味着它比独立的服务器有更好的性能。 在 OpenStack 中使用 Ceph...

Jerry_Baby
2015/02/09
0
0
OpenStack centos版安装(二)

在OpenStack第一天文档翻译后,丁丁努力坚持每晚抽时间翻译OpenStack官方网站提供的安装与部署指南,本文翻译自官方安装与部署指南的前四章内容,前四章内容主要是对OpenStack整体安装步骤以...

蓝狐乐队
2014/04/18
0
0
Openstack 之使用外部ceph存储

上面左边是我的个人微信,如需进一步沟通,请加微信。 右边是我的公众号“Openstack私有云”,如有兴趣,请关注。 继上篇《Ceph 之 块设备、文件系统、对象存储的使用》,可以独立于opensta...

余伟兵
06/05
0
0
Mirantis OpenStack fuel 物理机部署

理机上使用fuel 5.1部署openstack HA 存储使用ceph 2014年12月5日 15:58 新浪博客 How to Install Mirantis Fuel 5.1 Openstack wihceph 作者:@法不荣情 本人刚开始接触openstack,对一切还...

剑气满天
2015/08/18
0
3
red hat openstack 12配置要求

安装 openstack 之前,一般要规划整个系统中,到底要多少台机器来参与openstack, 根据rhosp12的官方文档: 最低要求是3台物理机,1台作为director,一台作为 controller ,一台作为computer....

tututu_jiang
06/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

[MicroPython]STM32F407开发板驱动OLED液晶屏

1.实验目的 1.学习在PC机系统中扩展简单I/O 接口的方法。 2.进一步学习编制数据输出程序的设计方法。 3.学习 F407 Micropython开发板控制OLED显示字符。 2.所需元器件 F407 Micropython开发板...

bodasisiter
22分钟前
0
0
php require和include 相对路径一个有趣的坑

以前总是被教育,不要使用相对路径,这样性能比较差,但是相对路径的问题不仅仅是性能哦,看下面这里例子 这是项目结构 .├── main.php├── t│ ├── t1.php│ └── t2.php└─...

anoty
22分钟前
13
0
x64技术之SSDT_Hook

测试环境: 虚拟机: Windows 7 64bit 过PG工具 驱动加载工具 PCHunter64 系统自带的计算器和任务管理器等 实现思路: 实际思路与win32的思路一样.都是替换SSDT表里边的函数地址.不过微软被搞怕...

simpower
24分钟前
0
0
TreeMap源码分析,看了都说好

一、简介 TreeMap最早出现在JDK 1.2中,是 Java 集合框架中比较重要一个的实现。TreeMap 底层基于红黑树实现,可保证在log(n)时间复杂度内完成 containsKey、get、put 和 remove 操作,效率很...

Java小铺
34分钟前
0
0
协变、逆变

概念 假设 A、B表示类型 ≤ 表示继承关系 f<⋅>表示类型转换 若A ≤ B,则 A是B的子类,B是A的超类 协变、逆变 什么是型变?型变(type variance)允许对类型进行子类型转换。 为了下面讲解先...

obaniu
40分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部