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
posted @ 2021-12-22 11:03  wanghongwei-dev  阅读(399)  评论(0编辑  收藏  举报