毫无疑问,乘着云计算发展的东风,Ceph已经是当今火热的软件定义存储开源项目。如下图所示,它在同一底层平台之上可以对外提供三种存储
接口,分别是文件存储、对象存储以及块存储,本文主要关注的是对象存储即radosgw。
深度解读基于Ceph对象存储的混合云机制
基于Ceph可方便快捷地搭建安全性好、可用性高、扩展性好的私有化存储平台。私有化存储平台虽然以其安全性的优势受到越来越多的关注,但私有化存储平台也存在诸多弊端。
例如在如下场景中,某跨国公司需要在国外访问本地的业务数据,我们该如何支持这种远距离的数据访问需求呢。如果仅仅是在私有化环境下,无非以下两种解决方案:直接跨地域去访问本地数据中心中的数据,毫无疑问,这种解决方案会带来较高的访问延迟,在国外自建数据中心,不断将本地的数据异步复制到远程数据中心,这种解决方案的缺点是成本太高。
在这种场景下,单纯的私有云存储平台并不能很好的解决的上面的问题。但是,通过采用混合云解决方案却能较好地满足上述需求。对于前文所述远距离数据访问的场景,我们完借助公有云在远程的数据中心节点作为存储点,将本地数据中心的数据异步复制到公有云,再通过终端直接访问公有云中的数据,这种方式在综合成本和快捷性方面具备较大优势,适合这种远距离的数据访问需求。
基于Ceph对象存储的混合云机制是对Ceph生态的良好补充, 基于此,社区将在Mimic这个版本上发布RGW Cloud
Sync特性,初步支持将RGW中的数据导出到支持s3协议的公有云对象存储平台,比如我们测试中使用的腾讯云COS,同Mulsite中的其他
插件一样,RGW Cloud Sync这个特性也是做成了一个全新的同步插件(目前称之为aws sync module),能兼容支持S3协议。RGW Cloud Sync特性的整体发展历程如下:
Suse公司贡献了初始版本,这个版本仅支持简单上传Red Hat在这个初始版本之上实现了完整语义的支持,比如mul
TIpart上传、删除等,考虑到同步大文件的时候可能会造成
内存爆炸的问题,还实现了流式上传,对于Ceph社区即将在M版本发布的这个公有云同步特性,腾讯云存储团队也在不断关注并进行了实际落地测试使用,并根据其中存在的问题进行了反馈及开发。
深度解读基于Ceph对象存储的混合云机制
其中,Cloud Zone内部包含一个公有云同步插件,它被配置为只读zone,用以将Rgw Zone中写入的数据跨地域同步至腾讯云公有云对象存储平台COS之上。顺利实现将数据从RGW中同步备份至公有云平台,并且支持自由定制来实现将数据导入至不同云端路径,同时我们还完善了同步状态显示功能,能较快监测 到同步过程中发生的错误以及当前落后的数据等。
RGW Cloud Sync这个特性本质上是基于MulTIsite之上的一个全新的同步插件(aws sync module)。首先来看MulTIsite的一些机制。MulTIsite是RGW中数据远程备份的一种解决方案,本质上来说它是一种基于日志的异步复制策略。
Zone:存在于一个独立的Ceph集群,由一组rgw提供服务,对应一组后台的poolZonegroup:包含至少一个Zone,Zone之间同步数据和元数据Realm:一个独立的命名空间,包含至少一个Zonegroup,Zonegroup之间同步元数据
MulTIsite中的一些工作机制,分别是Data Sync、Async Framework、Sync Plugin这三部分。其中Data Sync部分主要分析Multisite中的数据同步流程,Async Framework部分会介绍Multisite中的协程框架,Sync Plugin部分会介绍Multisite中的一些同步插件。
Data Sync用以将一个Zonegroup内的数据进行备份,一个Zone内写入的数据会终同步到Zonegroup内所有Zone上。
Init:将远程的source zone与local zone建立日志分片对应关系,即将远程的datalog映射到本地,后续通过datalog就知道有没有数据需要更新Build Full Sync Map:获取远程bucket的元信息并建立映射关系来记录bucket的同步状态,如果配置multisite的时候source zone是没有数据的,则这步会直接跳过Data Sync:开始object数据的同步,通过RGW api来获取source zone的datalog并消费对应的bilog来同步数据。