OpenStack集成ceph
openstack组件集成ceph
OpenStack集成ceph详细过程可以查看ceph官方文档:ceph document
OpenStack Queens版本,1台控制节点controller,1台计算节点compute;
1. 创建存储池
Glance:Glance可以把镜像存储在Ceph上;
Cinder:Cinder负责管理volume,把volume挂载给instance使用或者直接从volume启动instance。集成Ceph后可以让Cinder在Ceph上创建volume;
Nova:在OpenStack Havana版本开始,Nova可以直接把instance的disk存放在Ceph上。
在Ceph集群上总共创建3个存储池,分别给Glance,Cinder和Nova使用;
- backups: 存放备份文件

2. 配置OpenStack的ceph客户端
2.1. 拷贝ceph.conf
把Ceph的配置文件/etc/ceph/ceph.conf拷贝到2台OpenStack节点上,控制节点和计算节点都需要,因为他们都要跟Ceph通信。
ssh {your-openstack-server} sudo tee /etc/ceph/ceph.conf </etc/ceph/ceph.conf
注意:
运行着 glance-api 、 cinder-volume 、 nova-compute 或 cinder-backup 的主机被当作 Ceph 客户端,它们都需要 ceph.conf 文件。
2.2. 安装软件包
在控制节点安装python-rbd和ceph软件包:
[root@controller ~]# yum install -y python-rbd ceph
在计算节点安装ceph:
[root@compute ~]# yum install -y ceph
注意: 如果不安装ceph,OpenStack在使用Ceph时会报找不到ceph命令。
2.3. 配置cephx认证
创建client.cinder用户给Cinder和Nova使用,cinder用户有存储池volumes、vms、images的所有权限
[root@ceph1 ~]# 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'
创建client.glance用户给Glance使用,glance用户有存储池images的所有权限
[root@ceph1 ~]# ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
生成2个用户的密钥文件,
[root@ceph1 ~]# ceph auth get-or-create client.cinder > /etc/ceph/ceph.client.cinder.keyring
[root@ceph1 ~]# ceph auth get-or-create client.glance > /etc/ceph/ceph.client.glance.keyring
然后把/etc/ceph/ceph.client.cinder.keyring和/etc/ceph/ceph.client.glance.keyring拷到controller的/etc/ceph下,并且修改文件权限:
[root@controller ~]# chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
[root@controller ~]# chown glance:glance /etc/ceph/ceph.client.glance.keyring
把/etc/ceph/ceph.client.cinder.keyring拷到compute的/etc/ceph下,并且修改文件权限:
[root@compute ~]# chown nova:nova /etc/ceph/ceph.client.cinder.keyring
2.4. 配置compute节点的libvirt
在ceph上获取client.cinder的key
[root@ceph1 ~]# ceph auth get-key client.cinder > client.cinder.key
把client.cinder.key拷到compute节点的/etc/ceph下,在compute节点上执行以下步骤:
[root@compute ~]# cat > secret.xml <<EOF
<secret ephemeral='no' private='no'> <uuid>e21a123a-31f8-425a-86db-7204c33a6161</uuid> <usage type='ceph'> <name>client.cinder secret</name> </usage> </secret>
EOF
[root@compute ~]# virsh secret-define --file secret.xml
[root@compute ~]# virsh secret-set-value --secret e21a123a-31f8-425a-86db-7204c33a6161 --base64 $(cat /etc/ceph/client.cinder.key) && rm client.cinder.key secret.xml
3. 配置Glance
修改glance-api.conf,
[DEFAULT]
......
default_store = rbd
[glance_store]
stores = rbd
rbd_store_chunk_size = 8
rbd_store_pool = images
rbd_store_user = glance
rbd_store_ceph_conf = /etc/ceph/ceph.conf
重启Glance服务,
[root@controller ~]# systemctl restart openstack-glance-api openstack-glance-registry
4. 配置Cinder
修改cinder.conf
[DEFAULT]
......
enabled_backends = ceph
[ceph]
rbd_pool = volumes
rbd_user = cinder
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_secret_uuid = e21a123a-31f8-425a-86db-7204c33a6161
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
volume_driver = cinder.volume.drivers.rbd.RBDDriver
volume_backend_name = ceph
重启Cinder服务,
[root@controller ~]# systemctl restart openstack-cinder-api openstack-cinder-volume
5. 配置Nova
修改compute节点的nova.conf,
[libvirt]
virt_type=kvm
inject_password=false
inject_key=false
inject_partition=-2
disk_cachemodes = "network=writeback"
images_type=rbd
images_rbd_pool=vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
hw_disk_discard=unmap
rbd_user=cinder
rbd_secret_uuid=e21a123a-31f8-425a-86db-7204c33a6161
重启nova-compute服务,
[root@compute ~]# systemctl restart openstack-nova-compute
6. 验证
创建测试镜像
[root@controller ~]# wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
#Glance以Ceph RBD为后端存储时只支持raw格式,不是raw格式创建实例时会出错
[root@controller ~]# qemu-img convert -f qcow2 -O raw cirros-0.4.0-x86_64-disk.img cirros-0.4.0-x86_64-disk.raw
[root@controller ~]# openstack image create "cirros" --file cirros-0.4.0-x86_64-disk.raw --disk-format raw --container-format bare --public
有两种在Ceph上启动实例的方式:
以镜像为基础创建可启动的卷,然后启动实例时选择boot-from-volume,选择此卷;
直接使用镜像创建实例,这种用法是Havana版本后才支持的。
创建实例
测试
7. 总结
OpenStack集成ceph,作为cinder、nova、glance的后端存储,整体过程:
(1)搭建ceph集群,在Ceph集群上总共创建4个存储池,分别给Glance,Cinder,Nova和backup使用
(2)将Ceph的配置文件/etc/ceph/ceph.conf拷贝到2台OpenStack节点,以便节点可以和ceph集群进行通信,运行着 glance-api 、 cinder-volume 、 nova-compute 或 cinder-backup 的主机被当作 Ceph 客户端,它们都需要 ceph.conf 文件。
(3)在OpenStack中配置ceph客户端
(4)修改Glance的配置文件,支持ceph后端存储
(5)修改Cinder的配置文件,支持ceph后端存储
(6)修改Nova的配置文件,支持ceph后端存储
上述过程完成后,即可将OpenStack的所有存储工作交给ceph来管理,在OpenStack数据的容灾备份方面即有ceph来接管。
具体实现OpenStack数据容灾备份备份,可参考博文:ceph中rbd的备份和恢复
文章参考:OpenStack集成ceph
OpenStack集成ceph的更多相关文章
- 高可用OpenStack(Queen版)集群-14.Openstack集成Ceph准备
参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:http ...
- openstack高可用集群17-openstack集成Ceph准备
Openstack集成Ceph准备 Openstack环境中,数据存储可分为临时性存储与永久性存储. 临时性存储:主要由本地文件系统提供,并主要用于nova虚拟机的本地系统与临时数据盘,以及存储gla ...
- 理解 OpenStack + Ceph (5):OpenStack 与 Ceph 之间的集成 [OpenStack Integration with Ceph]
理解 OpenStack + Ceph 系列文章: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 (5)Ceph 与 OpenS ...
- 高可用OpenStack(Queen版)集群-16.Nova集成Ceph
参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:http ...
- 高可用OpenStack(Queen版)集群-15.Glance&Cinder集成Ceph
参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:http ...
- OpenStack 对接 Ceph
[TOC] 1. Openstack 与 Ceph 1.1. Ceph 简介 Ceph 是当前非常流行的开源分布式存储系统,具有高扩展性.高性能.高可靠性等优点,同时提供块存储服务(RBD).对象 ...
- OpenStack 对接 Ceph 环境可以创建卷但不能挂载卷的问题
问题 环境:Nova.Cinder.Glance 都对接了 Ceph RBD 后端存储. 以往的操作包括上传镜像.创建卷.挂载卷都是一切正常的,但突然出现了无法挂载卷的问题,而且还是因为 Ceph 客 ...
- OpenStack集成Docker
声明:绝对原创,欢迎转载,但请标明出处,谢谢! 最近在做openstack与Docker的集成工作,走了不少弯路,遇到不少问题,不过最终搭建成功了.现在将过程分享出来,以供参考. 一.环境介绍 1.软 ...
- 分布式存储ceph——(2)openstack对接ceph存储后端
ceph对接openstack环境 一.使用rbd方式提供存储如下数据: (1)image:保存glanc中的image: (2)volume存储:保存cinder的volume:保存创建虚拟机时选择 ...
随机推荐
- HTTP协议与使用Python获取数据并写入MySQL
一.Http协议 二.Https协议 三.使用Python获取数据 (1)urlib (2)GET请求 (3)POST请求 四.爬取豆瓣电影实战 1.思路 (1)在浏览器中输入https://movi ...
- Java基础(三十三)JDBC(3)操作数据库
一.添加数据 在SQL语句中,一条INSERT语句只能添加一条记录,因此分为几种情况进行添加数据操作. 1.添加一条记录 (1)如果只需要添加一条记录,通常情况下通过Statament实例完成. tr ...
- django-MVT设计模式
MVT:Models.Views.Templates Model:封装数据库,对数据库进行访问,对数据进行增删查改等. View:业务逻辑的一些操作. Templates:展示. 而MVC主要的流程如 ...
- 小白 Python 爬虫部署 Linux
前言 前面国庆节的时候写过一个简易的爬虫. <Python 简易爬虫实战> 还没看过的同学可以先看一下,这只爬虫主要用来爬取各个博客平台的阅读量等数据,一直以来都是每天晚上我自己手动在本地 ...
- Swift UIViewController中的delegate方式传值
ios swift开发中有几种方式传值,看到简书上一篇不错的文章. 链接:http://www.jianshu.com/p/3e1173652996 一.通过segue进行传值 二.通过delegat ...
- POI 生成 word 文档 简单版(包括文字、表格、图片、字体样式设置等)
POI 生成word 文档 一般有两种方法: ① word模板 生成word 文档 : ② 写代码直接生成 word 文档: 我这里演示的是第二种方法,即写代码生成 word文档,不多说废话,直接 ...
- Linux基本指令与作用
在Linux操作系统中,有不同于windows的操作,可以用指令来进行操作. 指令 ls:查看文件 ls -a:查看隐藏文件 cd:移动到某个路径之中 clear:清屏rm:删除touch:创建mv: ...
- Jsp的四大域对象
Jsp Jsp的四大域对象 作用范围 特殊之处 pageContext 当前jsp页面,当转发就失效 可以获取其他域对象中的值 request 一次请求,转发公用request,重 ...
- Java 导出数据库表信息生成Word文档
一.前言 最近看见朋友写了一个导出数据库生成word文档的业务,感觉很有意思,研究了一下,这里也拿出来与大家分享一波~ 先来看看生成的word文档效果吧 下面我们也来一起简单的实现吧 二.Java 导 ...
- SpringBoot系列:Spring Boot定时任务Spring Schedule
Spring Schedule是Spring提供的定时任务框架,相较于Quartz,Schedule更加简单易用,在中小型应用中,对于大部分需求,Schedule都可以胜任. 一.Spring Sch ...