Akemi

RBD mirror参数与配置介绍

2025/07/08

ceph支持两个存储集群之间的RBD mirroring,实际上和灾备有关

该机制使用异步机制做一主一从的两个集群

如果包含主RBD映像的集群变得不可用,那么可以从远程集群故障转移到辅助RBD映像

mirror配置参数

复制模式

1.One-way/active-passive单向模式(主备)
其中一个集群的RBD是读写模式,mirror代理在远端集群运行,可以有多从集群
2.Two-way/active-active双向模式(双活)
ceph同步目标源和目标对,只允许在两个集群中复制

镜像单位—pool模式/image模式

以pool或者image为单位进行mirror

镜像异步模式

1.journal-based mirror
使用日志镜像特性来保证一致性,根据日志进行恢复
2.snapshot-based mirror
基于快照的镜像,使用定期调度或手动创建的RBD镜像快照

管理复制

1
2
3
4
5
6
7
8
9
10
11
12
1.镜像同步
如果集群状态不一致,rbd-mirror守护进程不会尝试同步不一样的镜像
需要使用命令重新同步镜像
rbd mirror image resync mypool/myimage

2.开启或关闭镜像mirror特性(整个pool)
rbd mirror image enable
rbd mirror image disable

3.使用基于快照的mirror snapshot-based mirror
rbd mirror image disable mypool/myimage
rbd mirror image enable mypool/myimage

配置复制—单向异步mirror

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
为了实现RBDmirror并开启rbd-mirror守护进程来发现邻居集群
必须要有一个注册的peer并创建一个用户账号
rbd mirror pool peer bootstrap create

配置过程:
1.在A和B两个集群中创建同名的池
2.创建或修改启用了exclusivce-lock和日志记录功能的RBD镜像
3.在池上启用pool-mode/image-mode mirror
4.在A集群中使用bootstrap存储集群注册,并保存bootstrap token
5.部署rbd-mirror
单向复制: 只在备份集群上运行
双向复制:在两个集群上都运行
6.在备份集群中导入bootstrap token
单向复制:使用--direction rx-only参数

主节点:
ceph osd pool create rbd 32 32
ceph osd pool application enable rbd rbd
rbd pool init -p rbd

# 启用 exclusive-lock(独占锁)和 journaling(日志)特性
rbd create my-image --size 1024 --pool rbd \
--image-featrue=exclusive-lock,journaling

# 在 'rbd' 存储池上启用镜像功能,使用 'pool' 模式
rbd mirror pool enable rbd pool

# 生成用于从集群引导的 token
# --site-name 指定主站点名称为 'prod'
rbd mirror pool peer bootstrap create --site-name prod \
rbd > /mnt/bootstrap_token_prod

从节点:
ceph osd pool create rbd 32 32
ceph osd pool application enable rbd rbd
rbd pool init -p rbd

# 使用cephadm在指定节点部署rbd-mirror守护进程
# --placement 指定部署在 backup-node.example.com 节点
ceph orch apply rbd-mirror --placement=backup-node.example.com

# 导入主集群生成的 bootstrap token
# --site-name 设置从站点名称为 'backup'
# --direction rx-only 设置镜像方向为仅接收(单向镜像)
ceph orch apply rbd-mirror --placement=backup-node.example.com
rbd mirror pool peer bootstrap import --site-name backup \
--direction rx-only rbd /mnt/bootstrap_token_prod

故障切换流程

1
2
3
4
5
6
7
8
9
10
如果主mirror已经不可用了,需要重新启用对RBD的访问

1.停止对主RBD的访问
2.降级RBD主镜像
rbd mirror image demote pool-name/image-name
3.提升RBD从镜像
rbd mirror image promote pool-name/image-name
4.恢复对RBD镜像的访问,重新启动应用程序和虚机

如果遇到断电等意外情况,必须备份集群中的ceph mon提升非主镜像,使用--force参数
CATALOG
  1. 1. mirror配置参数
  2. 2. 管理复制
  3. 3. 配置复制—单向异步mirror
  4. 4. 故障切换流程