背景描述:
在云计算客户的拓展过程中,会面临客户的各种需求。其中最常见的需求包括,如何在云计算上构建客户的业务系统,搭建基础架构;另外一个就是如何实现客户数据的高效存储,包括存储新产生的用户数据,以及将现有的用户数据平滑迁移到云计算上来,提供更方便,更快捷的访问。
对比业界标杆,我们知道,亚马逊S3服务从诞生开始,受到客户的喜爱,是当前AWS上使用最广的服务之一。今天,介绍一下,多种客户场景下,如何将客户现有的数据迁移到腾讯云COS(Cloud Object Storage)。
场景描述:
对象存储(Cloud Object Storage,简称:COS)是腾讯云提供的面向非结构化数据,支持 HTTP/HTTPS 协议访问的分布式存储服务,它能容纳海量数据并保证用户对带宽和容量扩充无感知,可以作为大数据计算与分析的数据池。腾讯云 COS 提供网页端管理界面、多种语言的 SDK 以及命令行和图形化工具,并且完全兼容 S3 的 API 接口,方便用户直接使用社区工具和插件,COS 还可以和其他云产品结合,比如利用 CDN 的全球节点提供加速服务,利用数据万象的图片处理能力提供一站式图片解决方案等。
通过在项目过程中遇到的场景,我们也做了一些常用的场景总结,从数据的源地址,容量以及存储迁移的要求来看,我们可以遇到多种场景:
根据迁移源地址来考虑:
- 迁移的数据来自于客户的IDC。
- 迁移的数据来源于其它公有云厂商。
迁移的数据用途和迁移要求来分:
1.迁移的数据都是离线数据,对实时访问没有大的要求,基本无更新。
2.迁移的数据在实时更新,不希望有数据访问的中断。
迁移方式描述:
- 使用对象存储迁移工具,来实现从客户现有IDC中数据的同步
如下图方案一~方案四中,使用腾讯云的对象存储迁移工具,来实现从友商或者IDC上实现现有对象存储的迁移,通过在CVM和友商/IDC计算节点上部署cos migration工具,来实现数据同步到COS,具体COS Migration工具的使用方式参考:https://cloud.tencent.com/document/product/436/15392
方案一:
方案二:
方案三:
方案四:
2.使用CDM工具,来实现从客户现有IDC中数据的同步
有些场景下,客户现网网络环境较差,公网带宽不足,存储的数据量也非常大,那么在这个场景下,可以使用离线邮寄存储阵列,实现用户数据的迁移,这个服务就是云数据迁移(CDM),参考https://cloud.tencent.com/product/cdm
但是该服务使用的时候,需要了解客户容量,现有CDM设备存货,客户现有运维能力,寄货周期等。所以在使用前综合评估一下。
常见的案例有深圳某手机厂商,以及深圳某文娱厂商,数据量级在160T左右。
3.CDN回源的方式来实现数据同步
操作步骤:
①用户继续访问原有域名,例如a.b.com
②腾讯云上创建对应的存储Bucket,用来存储迁移过来的文件。
③在创建的Bucket设置回源地址为七牛上的域名。
④本地host绑定a.b.com的解析记录到腾讯云上的CDN节点域名或者COS(刚才的COS Bucket开启了CDN的话,就用CDN的cname记录)。
⑤本机测试访问a.b.com某些URL,多次验证测试是否能够正常访问。
⑥在DNS上,灰度切量用户的解析记录到腾讯云CDN(COS),用户继续访问a.b.com/xx/yy.jpg(例子),DNS生效前,如果本地有DNS缓存,用户还是访问原有的域名,如果本地DNS已经生效,是最新的DNS记录,会CNAME到腾讯云CDN(COS)节点,COS发现本地没有记录,会回源到源站,将请求返回给用户的同时,将数据存储到本地COS的bucket中。
⑦用户持续访问,直至命中所有的数据,都缓存到腾讯云COS。
⑧新的用户数据建议写入到腾讯云COS。
配置说明:
限制说明:
时间较长,如果有些文件长时间没有用户访问,则这些文件无法同步到COS,因此建议配合后面数据迁移工具来使用。
4.实时数据读写,对迁移要求较高,不中断
应用场景:
①用户使用友商对象存储(例如七牛,阿里等)进行图片或者文件的上传保存,例如电商或者一些移动app(相册等),集成友商SDK,上传数据。
②上传数据后,最终用户通过CDN或者公网的URL访问这些文件。
客户要求:
①客户要求对现有业务冲击小,能够尽量平滑迁移,不影响用户的业务。
②客户深度集成友商的SDK或者API,存在数据写入,同时存在用户访问。
关键步骤:
①T0时刻:获取T0时刻在友商URL清单L0,持续从友商将L0的数据拷贝到COS
②T0时刻:同时开启用户侧的双写和双读,持续的将数据写入友商对象存储和COS(需要客户业务改造)。
③T1时刻:完成L1的数据传输,业务观察正常后,关闭到友商/IDC的写,完成迁移
第一步:收集现有CDN/存储逻辑
评估现有环境:
①现有存储容量,文件个数:以便权衡工具在迁移的时候的速度,例如都是小文件,那么迁移速度会相对较慢。
②计费方式,带宽还是流量:峰值带宽多少,如果持续超过峰值带宽,会为客户额外增加成本,所以需要选择低峰时间段复制,同时控制复制速度,节省成本,如果增加额外成本,可以和商务沟通是否有补贴。
③访问域名:有些厂商,例如七牛对象存储的域名不做生产用,会限速,访问必须使用CDN加速域名。
评估现有环境:
①现有存储容量,文件个数:以便权衡工具在迁移的时候的速度,例如都是小文件,那么迁移速度会相对较慢。
②计费方式,带宽还是流量:峰值带宽多少,如果持续超过峰值带宽,会为客户额外增加成本,所以需要选择低峰时间段复制,同时控制复制速度,节省成本,如果增加额外成本,可以和商务沟通是否有补贴。
③访问域名:有些厂商,例如七牛对象存储的域名不做生产用,会限速,访问必须使用CDN加速域名。
第二步:增量数据双写逻辑改造
推动客户的写逻辑改造,可以两个对象存储:
①在服务器端已经考虑解耦,有个写模块,来屏蔽多家差异,这样只需要基于COS的API/SDK来扩展一个模块即可,这样很快可以改造完。
②也存在与一家SDK绑死写到客户端逻辑,服务器端没有单独的上传模块,那只能推客户改造,周期长点。
举例:Java SDK文档参考:
https://cloud.tencent.com/document/product/436/10199
第三步:使用工具,拷贝存量数据
获取存量文件的URL List(双写开始时间点),通过工具实现复制:
启用MSP迁移服务:
设置源AK,SK
设置源URL列表和目的Bucket
设置复制时间段等等。
参考下图:
典型客户迁移案例说明:
用户现状:
①目前OSS存量323T,总文件数为29491911个
②CDN峰值40G,业务低峰期在0点~5点(10G以下)
文件同步过程:
①新增文件通过服务器端双写,同时写入友商OSS和腾讯云COS,需要客户端改造,改造周期两周。
②存量文件需要通过错峰从CDN拉取,拉取时间为0点到5点,拉取峰值按照10G来计算,每天拉取22T,预计需要20天拉完。
③COS配置镜像回源方式,预热部分URL
④切部分量到腾讯云CDN,观察调优。