Ceph RBD Mirroring容灾备份
前置:
- 1.Ceph采用的是强一致性同步模型。
- 2.RBD Mirror是Ceph Jewel版本引入的新功能,因此RBD Mirror要求Ceph版本为Jewel或后续版本。
- 3.RBD Mirror是基于Journanling Feature来实现的。
- 4.RBD Mirror需要在备份端部署mirror守护进程。
- 5.I/O会写入主集群的Image Journal。
- 6.Journal写入成功后,RBD再把数据写入主集群回复响应。
- 7.备份集群的mirror进程发现主集群的Journal有更新后,从主集群的Journal读取数据,写入备份集群。
- 8.备份集群写入成功后,会更新主集群Journal中的元数据,表示该I/O的Journal已经同步完成。
- 9.主集群会定期检查,删除已经写入备份集群的Journal数据。
- 10.由于需要进行集群间通信,RBD Mirror守护线程必须能够同时连接两个Ceph集群。
- 11.每个Ceph集群只能运行一个RBD Mirror。
- 12.一旦同步出现脑裂情况,RBD Mirror将中止同步操作。
- 13.RBD Image journaling特性会顺序的记录发生的修改事件。
- 14.根据备份方式的不同,rbd-mirror可以在单个集群上或者伙伴的两个集群上运行。
- 15.目前ceph支持两种模式的Mirroring,分别为pool或image。
- 16.备份的RBD image存在两种状态:primary(镜像属性可以更改)或non-primary(镜像属性不可更改)。
- 17.当第一次对rbd镜像进行mirroring时,image自动晋升为primary。
- 18.内核3.10版本的rbd模块仅支持layering feature,不支持exclusive-lock和journaling feature。
- 19.journaling feature依赖于exclusive-lock feature。
- 20.在Ceph配置文件中增加如下配置所有的新镜像启用journaling:rbd default features = 125
1、创建用于同步的用户
# ceph auth get-or-create client.{username} mon 'profile rbd' osd 'profile rbd'
ceph auth get-or-create client.mirror mon 'profile rbd' osd 'profile rbd' --cluster local
ceph auth get-or-create client.mirror mon 'profile rbd' osd 'profile rbd' --cluster remore
2、启动RBD镜像复制进程
systemctl enable ceph-rbd-mirror@rbd-mirror
systemctl start ceph-rbd-mirror@rbd-mirror
3、启用RBD镜像池的镜像复制功能
pool 模式:在该模式下,整个 RBD 镜像池将会被镜像。
image 模式:在该模式下,只会镜像指定的 RBD 镜像。
# rbd mirror pool enable {pool-name} {mode}
# {pool-name}是要启用镜像功能的 RBD 镜像池的名称,{mode} 则表示要使用的镜像模式,可以是 pool 或 image
rbd --cluster local mirror pool enable image-pool pool
rbd --cluster remote mirror pool enable image-pool pool
rbd --cluster local mirror pool enable image-pool image
rbd --cluster remote mirror pool enable image-pool image
4、增加Cluster Peer
# rbd mirror pool peer add {pool-name} {client-name}@{cluster-name}
rbd --cluster local mirror pool peer add image-pool client.mirror@remote
rbd --cluster remote mirror pool peer add image-pool client.mirror@local
5、启用Journaling特性
rbd create image-pool/image-1 --image-feature exclusive-lock,journaling # 创建时启用
rbd --cluster local feature enable image-pool/image-1 journaling # 对已存在的image动态启用journal特性
6、启用指定的RBD镜像的镜像复制功能
# rbd mirror image enable {pool-name}/{image-name}
rbd --cluster local mirror image enable image-pool/image-1
7、获取备份镜像或存储池的状态
# rbd mirror image status {pool-name}/{image-name} [--verbose]
# rbd mirror pool status {pool-name} [--verbose]
rbd mirror image status image-pool/image-1
rbd mirror pool status image-pool
维护
1、降级或升级指定的RBD镜像
# rbd mirror image demote {pool-name}/{image-name} # 降级为non-primary
# rbd mirror image promote [--force] {pool-name}/{image-name} # 升级为primary
rbd --cluster local mirror image demote image-pool/image-1
rbd --cluster remote mirror image promote image-pool/image-1
2、降级或升级存储池所有的RBD镜像
# rbd mirror pool demote {pool-name} # 降级为non-primary
# rbd mirror pool promote [--force] {pool-name} # 升级为primary
rbd --cluster local mirror pool demote image-pool
rbd --cluster remote mirror pool promote image-pool
3、请求与镜像重新同步(脑裂恢复)
# rbd morror image resync {pool-name}/{image-name}
rbd mirror image resync image-pool/image-1
4、禁用指定的RBD镜像的镜像复制功能
# rbd mirror image disable {pool-name}/{image-name}
rbd --cluster local mirror image disable image-pool/image-1
5、删除Cluster Peer
# rbd mirror pool peer remove {pool-name} {peer-uuid}
rbd --cluster local mirror pool peer remove image-pool 5f450171-07c3-4c81-9450-4216a394bb6f
rbd --cluster remote mirror pool peer remove image-pool f28bcf3d-60bc-4f56-814c-1d1673d747ee
6、禁用RBD镜像池的镜像复制功能
# rbd mirror pool disable {pool-name}
rbd --cluster local mirror pool disable image-pool
rbd --cluster remote mirror pool disable image-pool
作者:wanghongwei
版权声明:本作品遵循<CC BY-NC-ND 4.0>版权协议,商业转载请联系作者获得授权,非商业转载请附上原文出处链接及本声明。