配置Ceph集群为OpenStack后端存储
配置Ceph存储为OpenStack的后端存储
1 前期配置
Ceph官网提供的配置Ceph块存储为OpenStack后端存储的文档说明链接地址:http://docs.ceph.com/docs/master/rbd/rbd-openstack/
1.1 注意点
(1)OpenStack的节点使用的Ceph客户端的版本应该跟Ceph节点使用的Ceph版本一致,不然可能会出现类似Functional not supported的问题,这里我使用的Ceph版本是0.94.10版本的。
(2)OpenStack节点的Ceph客户端访问集群的网络配置应该跟Ceph集群的前端网络在同一个网段。
(3)OpenStack节点和Ceph节点都先关闭掉防火墙,以免出现不可思议的问题。
(4)OpenStack节点和Ceph节点的时间都应该准确,尽可能时间同步。
1.2 创建存储池
ceph osd pool create volumes 128
ceph osd pool create images 128
ceph osd pool create backups 128
ceph osd pool create vms 128
1.3 安装Ceph客户端包
在运行着glance-api、cinder-volume、nova-compute或cinder-backup的主机上进行安装:
最好别使用 yum -y install python-rbd ceph这种方式,因为这种方式取得的都是最新版本的发布包,可能跟你ceph集群的ceph服务版本不一致,可以使用命令ceph --version查看ceph的版本。
OpenStack节点和Ceph节点安装的Ceph包都是使用我自己之前编译好的rpm包进行安装的,所以版本肯定是一致的。
<3>生成配置文件
在Ceph存储的管理节点上(有mon的其中一个节点即可,这里我们是使用compute1节点),将配置文件同步到OpenStack节点上。
ssh {your-openstack-server} sudo tee /etc/ceph/ceph.conf </etc/ceph/ceph.conf
1.4 配置ceph客户端认证
如果ceph启用了客户端认证,则需要为Nova、Cinder和Glance创建新用户:
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'
ceph auth get-or-create client.cinder-backup mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=backups'
把client.cinder、client.glance和client.cinder-backup的密钥环复制到适当的节点,并更改所有权:
ceph auth get-or-create client.glance | ssh {your-glance-api-server} sudo tee /etc/ceph/ceph.client.glance.keyring
ssh {your-glance-api-server} sudo chown glance:glance /etc/ceph/ceph.client.glance.keyring
ceph auth get-or-create client.cinder | ssh {your-volume-server} sudo tee /etc/ceph/ceph.client.cinder.keyring
ssh {your-cinder-volume-server} sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
ceph auth get-or-create client.cinder-backup | ssh {your-cinder-backup-server} sudo tee /etc/ceph/ceph.client.cinder-backup.keyring
ssh {your-cinder-backup-server} sudo chown cinder:cinder /etc/ceph/ceph.client.cinder-backup.keyring
运行nova-compute的节点,其进程需要密钥环文件:
ceph auth get-or-create client.cinder | ssh {your-nova-compute-server} sudo tee /etc/ceph/ceph.client.cinder.keyring
还得把client.cinder用户的密钥存进libvirt。
libvirt进程在Cinder挂载设备时要用它访问集群。
在运行nova-compute的节点上创建一个密钥的临时副本:
ceph auth get-key client.cinder | ssh {your-compute-node} tee client.cinder.key
然后在计算节点上把密钥加进libvirt:
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
Secret 457eb676-33da-42ec-9a8c-9293d545c337 created
sudo virsh secret-set-value --secret 457eb676-33da-42ec-9a8c-9293d545c337 --base64 $(cat client.cinder.key)
保留密钥的 uuid ,稍后配置 nova-compute 时要用。
2 配置Ceph为glance镜像的后端存储
编辑/etc/glance/glance-api.conf
[glance_store]
stores = rbd
default_store = rbd
rbd_store_pool = images
rbd_store_user = glance
rbd_store_ceph_conf = /etc/ceph/ceph.conf
rbd_store_chunk_size = 8
如果你想允许用image的写时复制克隆,再添加下列内容到[DEFAULT]段下:
show_image_direct_url = True
建议把如下属性也加上,加到[default]下:
hw_scsi_model=virtio-scsi #添加 virtio-scsi 控制器以获得更好的性能、并支持 discard 操作
hw_disk_bus=scsi #把所有 cinder 块设备都连到这个控制器;
hw_qemu_guest_agent=yes #启用 QEMU guest agent (访客代理)
os_require_quiesce=yes #通过 QEMU guest agent 发送fs-freeze/thaw调用
重启glance API服务:
systemctl restart openstack-glance-api.service openstack-glance-registry.service
测试下上传镜像:
如果镜像cirros-0.3.5-x86_64-disk.img是qcow2格式的,可以先将它转换成raw格式的,因为如果要使用ceph作为后端存储,就应该将它的镜像格式转为raw:
可以使用命令qemu-img info cirros-0.3.5-x86_64-disk.img查看它是什么格式的,使用命令将它从qcow2格式转换成raw格式并保存成另外一个镜像文件:
qemu-img convert -f qcow2 -O raw cirros-0.3.5-x86_64-disk.img image.img
以下进行上传镜像操作:
. admin-openrc.sh
glance image-create --name "imagetest" --file image.img --disk-format raw --container-format bare --visibility public --progress
使用如下命令验证是否创建成功:
openstack image list
3 配置Ceph为Cinder卷的后端存储
OpenStack需要一个驱动和Ceph块设备交互。还得指定块设备所在的存储池名。编辑OpenStack节点上的/etc/cinder/cinder.conf,添加如下内容:
[DEFAULT]
enabled_backends = ceph
[ceph]
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
rbd_user = cinder
rbd_secret_uuid = 43f7430d-cce0-46eb-a0fc-a593e27878c2
配置cinder backup:
backup_driver = cinder.backup.drivers.ceph
backup_ceph_conf = /etc/ceph/ceph.conf
backup_ceph_user = cinder-backup
backup_ceph_chunk_size = 134217728
backup_ceph_pool = backups
backup_ceph_stripe_unit = 0
backup_ceph_stripe_count = 0
restore_discard_excess_bytes = true
rbd_user = cinder rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337
在控制节点上重启服务:
systemctl restart openstack-glance-api.service
systemctl restart openstack-cinder-volume.service
systemctl restart openstack-cinder-backup.service
在控制节点查看是否配置正常:
cinder-manage service list
以下为输出结果:
二进制 主机 域 状态 状态 已更新于 RPC 版本 对象版本 集群
cinder-backup controller nova enabled :-) 2017-11-14 01:46:36 3.5 1.21
cinder-scheduler controller nova enabled :-) 2017-11-14 01:46:36 3.5 1.21
cinder-volume controller@ceph nova enabled :-) 2017-11-14 01:46:42 3.10 1.21
4 配置Ceph为Nova虚拟机boot disk的后端存储
注意修改rbd_secret_uuid为你自己上面创建的uuid,可以使用该命令查看:virsh secret-list
编辑所有计算节点上的/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 disk_cachemodes="network=writeback"
inject_password = false
inject_key = false inject_partition = -2
live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED"
hw_disk_discard = unmap # 启用 discard 功能(注意性能)
编辑所有计算节点上的 Ceph 配置文件(/etc/ceph/ceph.conf):
[client]
rbd cache = true
rbd cache writethrough until flush = true
rbd concurrent management ops = 20
在计算节点上重启服务:
systemctl restart openstack-nova-compute.service
配置Ceph集群为OpenStack后端存储的更多相关文章
- 基于Docker UI 配置ceph集群
前言 前一篇介绍了docker在命令行下面进行的ceph部署,本篇用docker的UI进行ceph的部署,目前来说市面上还没有一款能够比较简单就能直接在OS上面去部署Ceph的管理平台,这是因为OS的 ...
- 分布式存储系统之Ceph集群RBD基础使用
前文我们了解了Ceph集群cephx认证和授权相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16748149.html:今天我们来聊一聊ceph集群的 ...
- CEPH集群操作入门--配置
参考文档:CEPH官网集群操作文档 概述 Ceph存储集群是所有Ceph部署的基础. 基于RADOS,Ceph存储集群由两种类型的守护进程组成:Ceph OSD守护进程(OSD)将数据作为对象 ...
- 高可用OpenStack(Queen版)集群-14.Openstack集成Ceph准备
参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:http ...
- Ceph集群搭建及Kubernetes上实现动态存储(StorageClass)
集群准备 ceph集群配置说明 节点名称 IP地址 配置 作用 ceph-moni-0 10.10.3.150 centos7.5 4C,16G,200Disk 管理节点,监视器 monitor ...
- 二十八. Ceph概述 部署Ceph集群 Ceph块存储
client :192.168.4.10 node1 :192.168.4.11 ndoe2 :192.168.4.12 node3 :192.168.4.13 1.实验环境 准备四台KVM虚 ...
- openstack controller ha测试环境搭建记录(五)——配置rabbitmq集群
配置rabbitmq集群的步骤非常简单,因为其本身含集群功能,参考openstack官网文档:http://docs.openstack.org/ha-guide/controller-ha-rabb ...
- 使用Ceph集群作为Kubernetes的动态分配持久化存储(转)
使用Docker快速部署Ceph集群 , 然后使用这个Ceph集群作为Kubernetes的动态分配持久化存储. Kubernetes集群要使用Ceph集群需要在每个Kubernetes节点上安装ce ...
- SSD固态盘应用于Ceph集群的四种典型使用场景
在虚拟化及云计算技术大规模应用于企业数据中心的科技潮流中,存储性能无疑是企业核心应用是否虚拟化.云化的关键指标之一.传统的做法是升级存储设备,但这没解决根本问题,性能和容量不能兼顾,并且解决不好设备利 ...
随机推荐
- 推荐网站 explainshell.com
ls 显示指定目录下的文件和目录,默认为当前目录. -a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出) -l 除文件名称外,亦将文件型态.权 ...
- webbrowser控件使用时的注意事项
如果HtmlElement内的没有信息,则HtmlElement的OuterText属性值为null:OuterHtml属性值则为相应的html值 如果使用OuterText属性,使用前要判断下.
- Java如何操作对象(bean)进行动态排序?
原文出自:https://blog.csdn.net/seesun2012 简介如题:Java如何操作对象(bean)进行动态排序?Java实体类(bean)动态排序? 原理:利用反射根据指定的属性值 ...
- PHP项目学习1
最近在学习PHP,看了<轻松学PHP>,2天看完,学习了很多基础知识,可是没有出什么成果.然后看<PHP项目开发全程实录>,里面讲到一个online影视365网,刚好有一个朋友 ...
- JS实现最短路径之迪杰斯特拉(Dijkstra)算法
最短路径: 对于网图来说,最短路径是指两个顶点之间经过的边上权值和最少的路径,我们称第一个顶点是源点,最后一个顶点是终点 迪杰斯特拉 ( Dijkstra) 算法是并不是一下子就求出 了 Vo 到V8 ...
- web.xml文件初始化过程
在使用各种框架后,有时会发现不了了错误处在哪里,了解Servlet的初始化过程(也可以说是web.xml的初始化吧),也许对你对于框架的理解与报错的原因理解会有帮助 context-param > ...
- Win7系统服务优化完全攻略
前文提到Windows系统启动的原理,其中加载各项系统服务是影响系统启动时间的重要因素,之前软媒在Win7之家(http://www.win7china.com/)和Vista之家(http:// ...
- groovy运行程序和类型推断
在 Java 中,如果要声明一个 String 变量,则必须输入: String value = "Hello World"; 等号右侧的字符已经表明 value 的类型是 Str ...
- HDU2048 神,上帝以及老天爷 错排
http://acm.hdu.edu.cn/showproblem.php?pid=2048 这是一道错排的题目 错排如下:http://baike.baidu.com/link?url=U2_H-4 ...
- K:求取两个数的最大公约数的两个算法
相关介绍: 最大公因数,也称最大公约数.最大公因子,指两个或多个整数共有约数中最大的一个.a,b的最大公约数记为gcd(a,b).同样的,a,b,c的最大公约数记为gcd(a,b,c),多个整数的最 ...