原理
Todo…
问题
- 增加了RBD Journal的写入操作,是否会产生写放大现象。
- Ceph-RBD-Mirror回放日志的的时间间隔
- RBD Journal的容量大小如何配置
- RBD Journal存储介质是否可以优化
使用
环境
要求
- Ceph版本必须为Jewel及之后版本
RBD-Mirror功能从Jewel版本引入,之前版本不支持该feature。本文以jewel版本为例进行演示。 - RBD feature必须包含
journaling
RBD-Mirror依赖journal完成工作,类似Mysql的主从同步机制。使用日志回放方法备份数据。
准备
准备两个集群分别为cls17和cls26
cls17为primary集群,cls26为non-primary集群,将cls17内的RBD数据备份到cls26集群内在这两个集群中创建同名pool——
rmp
(RBD Mirror Pool)
ceph-rbd-mirror服务
根据RBD-Mirror的原理,需要在non-primery集群上启动ceph-rbd-mirror
服务
** 安装 **
1 | yum install -y rbd-mirror |
** 启动 **
1 | systemctl enable ceph-rbd-mirror@admin.service |
@admin
是ceph中的client.admin
用户,只是这里省略了client.
。关于Ceph用户管理相关操作可以使用ceph auth
命令。
Copy Config & keyring
将cls17集群中的ceph.conf
和ceph.client.admin.keyring
copy到cls26集群的/etc/ceph
目录中,并重命名成cls17.conf
和cls17.client.admin.keyring
。然后在cls26集群中可通过指定--cluster cls17
来指定访问集群。
备份Pool中所有RBD
配置
Pool Mirror Mode
需要将两个集群的的rmp
pool的mirror mode设置成pool
。
集群cls26
1 | rbd mirror pool enable rmp pool |
集群cls17
1 | rbd mirror pool enable rmp pool --cluster cls17 |
Add Peer
将Primary集群信息加入到rmp
pool中。
集群cls26
1 | rbd mirror pool peer add rmp client.admin@cls17 |
查看两个集群的peer信息
1 | rbd mirror pool info rmp |
至此备份Pool中所有RBD的配置操作已经完成,接下来进行验证操作。
测试
在集群cls17中rmp
pool创建RBD,并查看集群cls26中rmp
pool是否有回放操作(RBD是否备份到cls26集群)。由于整个RBD-Mirror依赖于journaling
feature,所以创建RBD时需要指定该feature。若对当前rmp
pool中存在RBD进行备份,需要先增加jouranling
feature,使用rbd feature enable rmp/rd1 journaling
命令。
集群cls17
1 | rbd create -p rmp --image-format 2 --image-feature layering,exclusive-lock,object-map,fast-diff,deep-flatten,journaling -s 1G rd1 |
集群cls26
1 | rbd -p rmp ls |
备份单个RBD
配置
Pool Mirror Mode
将两个集群的rbd
pool的mirror mode设置成image
。
1 | rbd mirror pool enable rbd image |
Add Peer
将Primary集群信息加入到rbd
pool中。具体操作方法,同上。
Enable Image Mirror
集群cls17
1 | rbd info rd1 |
集群cls26
1 | rbd info rd1 |
测试
(同上)
*** 无论是全Pool备份,还是单个RBD备份,只要建立mirror关系,只有primary rbd才能处理读写操作 ***