基于Ceph的混合云Cloud Sync

WechatIMG476

 

 

1.  混合云对于存储技术的要求

 

混合云是目前非常热门的话题,这是因为混合云有诸多好处。场景可以分为5种,(1)应用统一部署,根据应用的重要性选择不同的云,通过统一的云管理平台实现对公有云和私有云的资源管理和应用管理;(2)资源的自动弹性扩展,若私有云可用资源耗尽,支持将应用自动扩展到公有云中,当资源使用下降到设定的阈值时,能将资源自动回收;(3)应用容灾/双活,关键应用部署在私有云上,采用公有云的资源作为容灾站点,利用全局负载均衡或基于应用的高可用性实现混合云的应用双活;(4)存储备份,可以将私有云的镜像、云硬盘、快照、对象存储数据同步到公有云上,实现数据的远程备份;(5)公有云安全运营能力为私有云服务,利用公有云强大的安全服务能力(如流量清洗、安全审计等功能)来为私有云提供安全服务,客户希望私有云能够用到公有云的安全运营能力。

混合云

 

要实现混合云非常有挑战性,除了要跟客户一起找到真实的应用场景外,还需要打通四层技术。

  • 管理打通,需要有混合云统一管理平台CMP,可以同时管理OpenStack、UCloud、AWS、Azure、GCE、VMware、Kubernetes等。
  • 网络打通,专线或VPN。
  • 数据打通,私有云的镜像、快照、云硬盘、对象存储可以备份到公有云上,私有云可以通过存储网关访问公有云上的对象存储、文件存储、云硬盘等。
  • 应用打通,应用集群或业务系统跨云部署,可以跨云编排。

 

那么UMCloud该怎么实现混合云的数据打通?在2016年底,UMCloud的统一分布式存储产品(UDS)推出了Cloud Sync功能,逐步实现混合云的数据打通。下面我们先介绍什么是Cloud Sync,然后再介绍UDS如何实现Cloud Sync功能。

 

2.  什么是Cloud Sync功能

 

Cloud Sync不是一个新的概念,之前已经被应用到实际应用场景中。IBM花12亿美金收购的Cleversafe对象存储厂商之后,也推出了Hyper Services。

使用IBM Spectrum Scale™ Transparent Cloud Tiering可以把占据本地存储空间的冷数据移动到IBM Cloud Object Storage上。远程办公室和移动手机用户的非结构化数据存放在IBM Cloud Object Storage上,可以把这些数据拉取到IBM Spectrum Scale存储上,用于数据分析或需要高吞吐的应用。Transparent Cloud Tiering在本地存储和Cloud Object Storage之间提供无缝的数据传输,让客户觉得是真正的混合云解决方案。

Hybrid_Infographic

 

存储创业公司SwiftStack也提供Cloud Sync功能,目前集成了Amazon S3和Google Cloud Storage,可以把你的私有云存储扩展到公有云上。可以自动的在云之间移动数据,拥抱真正的混合云工作流。不管你的应用是运行在自己的数据中心或者是在公有云上,它们都可以访问到同一个存储空间,实现移动性、计算优化、共同协作功能。

ssss

 

使用混合云之后,可以得到的好处是:数据保护、工作协作、突发性能、离线归档。

swiftstack_Cloud-Sync-Use-Cases-768x391.jpg.pagespeed.ce.A5n0eTuiwK

 

3.  UDS的Cloud Sync功能

 

UMCloud统一分布式存储产品(UDS)的对象存储服务提供云同步(Cloud Sync)功能,根据自定义的数据保护策略自动的同步到公有云上,支持UCloud、AWS等公有云。

uds-cloud-sync

 

用户使用UDS可以避免建设用于远程灾备的另外一个数据中心,降低建设运营成本,使用Cloud Sync功能可以实现异地灾备,提高数据保护等级。目前UDS还支持压缩功能,可以对上传的文件进行压缩,提高存储有效容量,降低硬件成本。未来UDS还会支持归档存储,把冷数据传输到蓝光存储上。

 

下面是UDS的Cloud Sync使用操作。

1)登录UCloud的UFile,查看Bucket列表。

image011

 

2)使用UDS对象存储服务的命令行工具,创建Bukcet,上传文件umcloud.txt。

image013

image015

 

3)重新登录UFile管理界面,查看Bucket列表,可以看到对应的“ufile-cloud-test-um-bucket.cn-sh2.ufileos.com”存储空间域名(Bucket)被创建。

image017

 

4)打开新增Bucket的文件列表。

image019

 

5)从UFile上下载umcloud.txt文件,检查md5值,证明UDS上的对象数据跟UFile上的对象数据是一致的。

 

下面我们来揭晓如何基于Ceph实现Cloud Sync功能。

 

4.  UDS如何基于Ceph实现Cloud Sync

 

目前Ceph的Multisite功能实现了集群之间的对象存储的数据同步,使Ceph的多数据中心部署成为可能。出于客户多样性的需求以及部署运维成本的考量,UMCloud基于Mulitisite框架开发了Cloud Sync功能。当前支持UCloud UFile和Amazon S3,后续将会支持其他公有云。

4.1.    Ceph Multisite

 

Ceph Multisite集群同步需要的一些核心概念

  • Cluster:表示rados集群
  • Zone:由rados集群承载,通过一组radosgw提供服务
  • Zonegroup:由一组zone组成,一个master和若干slave zone
  • Realm:由一组zonegroup组成,一个master zg和若干slave zonegroup

Multisite实现了三个功能:

  • 元数据同步:只可以从master zone同步到slave zone
  • 数据同步:检查所有zone的sync module类型,只有支持数据导出的zone才可以建立数据同步关系。默认配置下(不指定zone的tier-type类型),multisite创建了一个defaule module(data sync)。该module实现了数据从若干个可以导出数据的zone复制到当前zone的功能。multisite的数据同步功能主要逻辑就是对比所在的zonegroup中其他所有支持数据导出的zone的数据日志的差别,请求对方zone已经变化数据的元数据信息。根据数据变化类型是修改数据还是删除数据,然后调用底层的module的sync_object或 remove_object接口。multisite支持数据的全量同步和增量同步。
  • 日志清理:在所有zone中找到已经完成同步的日志最小mark,删除小于等于此mark的所有zone上的日志

 

4.2.  Sync Plugin

Multisite为底层具体同步的逻辑操作提供了插件机制 sync plugin。创建zone时可以指定插件的类型。插件对应的功能被封装为一个module。插件机制的好处在于方便功能的扩展。开发者可以自定义插件,在几乎不改动原有的代码基础上新增自己的插件。

目前数据同步功能下面有三种sync module

  • daya sync module:获取数据并写入本地,zone的默认module,支持数据导出。
  • log sync module:获取数据的扩展属性,不支持数据导出。
  • elasticsearch sync module:获取同步数据的元数据信息,不支持数据导出。

image021

 

4.3.  Custom Module

UDS的Cloud Sync的逻辑被封装成Multisite的第4个module:custom module。Custom module实现sync_object或 remove_object两个接口。

  • sync_object  从源zone获取数据;然后根据指定的接口类型把数据写入指定的存储云。
  • remove_object  直接根据bucket以及对象文件名称,删除指定指定存储云的数据。

bucket sync功能利用multisite的不同zone之间数据同步的框架,在同一个ceph集群上搭建两个zone,一个zone提供对外服务,支持数据导出。另一个custom zone不对外提供服务,不支持数据导出,底层的同步实现为custom sync module。当custom zone上层同步框架找出那些需要同步的数据时,会把数据的元数据信息传递给custom module。Custom module根据数据的元数据信息(存储桶,所在zone,对象名称),执行对应的数据复制或数据删除逻辑。

image023

 

4.4.   UDS设定公有云的参数

使用radosgw-admin  zone modify 命令设置 tier-config参数。

–tier-config参数值说明:

  • custom_type     //接口类型。值为”s3””ufile”大小写不敏感
  • domain_name   //数据访问地址
  • bucket_host      //用于ufile,访问存储桶和数据是不同的地址。
  • bucket_region   //用于ufile,创建bucekt时指定region,官网有列表可查。
  • public_key        //公钥
  • private_key       //私钥
  • prefix_bucket    //bucket前缀,用于减少目标存储上的bucket名字冲突
  • dest_bucket      //写入目标存储的bucket,不指定会写入源bucket的名字
  • src_bucket        //只同步指定的bucket的数据,当前不支持列表。

启动custom zone rgw

radosgw -rgw-zone=custom zone的名字

4.5.  异步复制

当ceph集群内的数据发生变化,那么指定同步的存储云的数据也会跟随变化。因为同步方案是采用异步机制,会有一定的延时,但会保证数据的最终一致性。

 

5.  未来

UMCloud UDS可以作为公有云的存储网关,打通私有云和公有云的数据界限。

目前AWS和腾讯云提供存储网关功能,如下图所示。

image025

image027

 

从上面架构看,最大的问题是存储网关运行在虚拟机上,性能和功能受限,而且不能跟OpenStack私有云进行有效的结合。

UMCloud统一分布式存储产品UDS天生支持OpenStack,将会是非常好的存储网关解决方案。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注