扫一扫微信二维码

【开源技术实践分享】Ceph – RBD Replication 发布时间:2017-06-14


引言
Ceph是一个数据强一致性的分布式存储系统,只有在所有副本都写入的情况下才认为一个写操作完成,所以在做跨地域式的数据同步延迟非常高。为解决这种情况Ceph在2016年发布的Jewel版本中提供了一种异步同步机制允许不同集群之间复制块设备。在这篇文章中将介绍RBD Replication机制,以及它即将在未来Ceph版本中的功能前瞻。

机制流程
RBD Replication的实现是依靠rbd-mirror进程和image的 journaling功能的协作。
\
图1

工作流程
1.    当有一个写入操作,会先写入日志;
2.    然后知会客户端,再写入rbd image 中;
3.    这时远端rbd-mirror进程将会照本地日志写入远端的rbd image。
以上就是一个rbd-mirror工作周期内的流程(如图1),在现有的Jewel版本中30s为一次工作周期,暂时不能改变这个周期时间。

与Openstack协作
Ceph作为分布式存储管理的后端系统,被用于与各种类型云一同协作,特别是Openstack。

在Cinder中很早就已经有了Replication存储后端框架,它的基本支持:
1.    volumes的创建与备份;
2.    促发备份后端成为主要后端;
3.    replication功能启动与停止;
4.    检测replication运行状态。
\
图2

以上是Cinder所支持的框架,主要实现需要依赖后端存储系统中实现(如图2)。

Rbd-mirror功能的实现更加契合了与Openstack这样的云服务系统的容灾恢复能力。可以实现多种容灾恢复方案。

功能前瞻
虽然在2016 年Ceph已经推出可以用于生产环境的支持rbd-mirror的发行版本。但是目前还是存在一些不容忽视的问题。比如网络问题,两个跨地域的集群数据同步必然对网络问题有极大挑战。再者比如,现有的版本暂时只支持一个集群一个守护进程的形式,不可否认这样的单进程形式即使在多线程并发工作的情况下也是缺乏一定的灵活性,对性能造成一定影响。

在这里将介绍一些在未来发行版本中会增强或者添加的功能:
1. HA 模块
HA 模块是依赖于多守护进程协作,共同决定控制哪些进程处理哪个image的模块。这个将有可能会在多个设备上运行任意个rbd-mirror进程,同样个人猜测还有可能单独设立一个rbd-mirror服务节点,为整个集群服务。

2. 支持多集群间同步
现有的版本Jewel 和 Kraken中,分别可以址支持的方案有1对1,1对多的同步方案。但在多集群的情况下,或许我们更需要的是多对多的情况,虽然我们不一定是需要每个集群都能为其他集群备份,但支持多对多的机制是为了可以将这种的机制开放出来,为其他方案提供更多的可能性。

3. 延迟删除
现在的rbd replication的功能中在活动端一旦删除image,在备份端的image也会同时删除,然而删除image的流程也没有那么多的提示警告,很大程度上误删的可能性存在,所以现在希望推出这样一种机制,在将活动端删除image并不会立马删除备份端的image,直到若干时间后在删除。而这个若干时间也是可以开放出来设置的。

4. 克隆备份端image
由于现有机制中备份端的image是无法对其做任何读写操作,只具有同步功能,能理解的是这是对image 的保护和对同步性能的保证。但资源利用最大化一直是我们追求的目标,也许社区还是希望能对备份端image数据能有一定的利用。所以这个功能将是对克隆功能开放了image读取权限。

5. 增加QoS限制
RBD replication是为跨地域式数据同步服务,网络方面的性能,除了提高带宽,也需要一些策略来保障质量,QoS服务的增加将是网络优化的重要一步。

6. Replication功能延迟启动
时常,我们在使用Openstack的过程中,经常有临时创建虚拟机或者volume,为这样的数据做同步可能并不是很必要,所以有必要设置一些策略对是否同步来减少资源浪费。当然功能延迟启动也只是第一步。

7. 批量式激活image
这也将是对现有的激活备份端image只能一个一个进行的方式的一种改进,让多个image可以并行的激活,这也是对于容灾恢复场景中的时间消耗的一个巨大改进。

写在最后
数据同步作为数据管理的重要一环,rbd-mirror带来数据同步方式的更新,也是数据同步管理的一大改进,以上列出的几点新功能很明显表明此功能在向着更佳灵活,开放的方向发展。同时,据社区消息2017年秋季的Luminous版本将对其会有一个较大改进,或许包括以上几个,或者全部。届时大家尝尝鲜。

   

© 2012-2017 九州云信息科技有限公司 99Cloud 版权所有 咨询热线:400 006 0472 售后服务热线:400 670 7810 培训咨询热线:400 826 0070   ICP证:浙ICP备12032350号-1

网站建设:信达互联

北京网站建设公司