解决方案
配置RBD映像可以在不同的Ceph集群之间实现RBD块设备的异步复制,以实现容灾。
原理简述
RBD Mirror的核心原理是使用日志回放(JournalReplay)功能保证主集群RBD和次集群RBD的数据副本一致。注意,这里的日志并不是Ceph OSD日志。
该机制使用异步操作,在网络上将 Primary RBD Image 复制到目标 Seconadry RBD Image。如果 Primary RBDImage的集群不可用,你可以使用远程集群上的 Secondary RBDImage,然后重新启动该映像的应用程序。从Source RBD Image故障转移到Mirror RBD Image时,必须降级Source RBD Image,同时升级Target RBD Image。Image降级后,将变为锁定且不可用状态;升级后,将进入读写模式,可被使用。RBD映像功能需要rbd-mirror软件包。该软件包需要安装在两个集群的服务器上,并且每个Ceph集群必须至少配置一个MirrorAgent。
数据复制方向
RBD Mirror支持两种复制:单向复制、双向复制。
在单向复制下,主集群的RBD Image读/写可用,而远程Secondary Cluster仅容纳镜像,并不提供对外服务。Mirror agent仅在Secondary Cluster上,Mirror是Secondary Cluster上运行的Mirror Agent远程拉取主集群上的RBD Image。此模式下,你可以配置多个辅Secondary Cluster。图11-3是RBDMirror单向复制的数据流向。
在双向复制下,每个RBD Mirror实例必须能够同时连接到另一个Ceph集群。此外,网络必须在两个数据中心站点之间具有足够的带宽,以处理镜像。图11-4是双向复制模式下的数据流向。这里要强调的是,虽然是双向复制模式,但是并不是业务双活,不能同时在两个集群中对相同的RBD数据进行读写。因为Ceph的RBD Mirror是异步的。双向复制模式要求单向写入,一旦主集群不可写,就可以配置Secondary Cluster作为读写集群,待主集群恢复后,Secondary ClusterRBD映射到主集群。本质上,双向复制和单向复制操作机制一样。
数据复制模式
RBD Mirror 有两种复制模式:
1)Pool 模式下,Mirror Pool中创建的每个RBDImage自动启动Mirror开始同步。在主站点MirrorPool中创建Image后,远程备站点自动创建副本Image。
2)Image 模式下,必须为每个RBD Image分别启动Mirror,并且必须明确指定要在两个集群之间复制的RBD Image。