本文从通用的数据上云场景,以及友商云数据迁移场景出发,介绍基于腾讯云对象存储(COS)的上云步骤,包括迁移前的环境准备工作,云上的配置与迁移工具的实施,数据的一致性校验,云上业务的切换与验证。
COS:对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。COS 提供网页端管理界面、多种主流开发语言的 SDK、API 以及命令行和图形化工具,并且兼容 S3 的 API 接口,方便用户直接使用社区工具和插件。
CVM:云服务器(Cloud Virtual Machine,CVM)为您提供安全可靠的弹性计算服务。 只需几分钟,您就可以在云端获取和启用 CVM,用于实现您的计算需求。随着业务需求的变化,您可以实时扩展或缩减计算资源。CVM 支持按实际使用的资源计费,可以为您节约计算成本。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
MSP:迁移服务平台(Migration Service Platform,MSP)整合了各种迁移工具,并提供统一监控。用户在迁移时可选择腾讯云官方迁移工具,也可选择官方认证的第三方迁移工具。迁移服务平台帮助用户方便快捷的将系统迁移上云,并清晰掌握迁移进度。迁移服务平台 MSP 不收取任何额外费用,您只需为使用的迁移工具及资源付费。
IDC:互联网数据中心(Internet Data Center,简称IDC)是指一种拥有完善的设备(包括高速互联网接入带宽、高性能局域网络、安全可靠的机房环境等)、专业化的管理、完善的应用的服务平台。
友商云:指提供云服务的互联网厂商,包括但不仅限于阿里云,AWS,华为云,七牛云等等。
数据源:顾名思义,数据的来源,是提供某种所需要数据原始文件。
常见的热数据迁移方式,通用的迁移流程如下图:
迁移上云前需要提前进行网络VPC规划,确定业务服务器所在园区和可用区,CVM同园区访问COS可实现内网互通。
业务服务器和基础环境的上云迁移,这些属于非对象数据迁移,这里就不详细介绍了(略)
从本地迁移至COS,无需特殊检查,只需确保本地文件的读取与公网上行的连通性正常即可。
当从友商云迁移至腾讯云COS的场景,可参见下面的环境配置检查项,确保数据一致和功能可用。
场景 | 产品 | 检查项 | 检查说明 | 问题案例 |
---|---|---|---|---|
第三方友商源->COS | 友商云 | 对象权限检查 | 检查源站读权限 GetObject(必须),Listobjects1.源站为公共读权限,可通过MSP对友商生成的URL清单进行批量迁移,减少listobject耗时。2.如果源站为私有访问,可通过MSP生成指定友商的签名串。3.源站为公共读时,是否设置了空referer防盗链。需要迁移工具配合设置或将源站referer临时放开。注意:对象无读取权限则不可迁移。 | 1.迁移时失败。访问对象返回403无权限。 |
对象类型检查 | 对象类型为标准存储,低频存储,智能存储均可。注意:部分厂商对于归档存储类型不可直接访问,需要先预热。否则会在迁移时对于归档类型的对象迁移失败。 | 1.直接访问归档类型会返回403,需要临时提取预热或长期设置为标准类型。 | ||
QPS性能检查 | 1.评估源站读对象性能,如果为热迁移则需要考虑源站的日常业务QPS和迁移QPS相加值。2.COS写QPS一般为国内3W,海外3k | 因并发过高导致源站读取请求被拒绝。需要和源站厂商沟通。 | ||
回源配置检查 | 针对于源站的回源配置。1.确保源站的回源可正常读,需要迁移前测试调通。2.确保源站的回源不受版本控制影响,可读取到最新版本文件。3.源站回源内容,不设置CDN 等缓存产品,需要确保可直接读取到源站真实数据。4.回源建议使用https协议,避免请求被劫持。 | 因回源设置为CDN缓存,导致迁移到COS的数据和源站不一致,为中间CDN缓存内容。 | ||
回调触发配置检查(SCF) | 如配置回调触发1.确保回调触发QPS与迁移工具复制Object频率 一致或有buffer2.回调函数读取资源要为对象最新版本资源,不要受到CDN缓存或版本控制的原因影响。3.函数涉及到落盘操作,需要确认临时空间是否满足,同时要在复制对象后进行临时资源删除。 | 因回源设置为CDN缓存,导致迁移到COS的数据和源站不一致,为中间CDN缓存内容。 | ||
重定向配置检查 | 各个友商对于4XX错误或5XX错误提供了“异常状态码重定向规则”。1.一定避免使用“异常状态码重定向规则”。2.对于图像处理场景,建议增加忽略参数,当处理异常时可获取到原图内容。 | 1.对于源站404等状态码会跳转到指定地址,会导致迁移为指定页面而非原图,2.对于帧数过大或尺寸过大的图片,源站图像处理异常时会返回错误码,这里建议使用过滤参数,可在直接获取到原图,确保文件迁移成功。例如:“/ignore-error/1” | ||
跨国迁移检查 | 检查源站和目标站点是否存在海外到国内,或国内到海外场景1.如果源在海外目标在国内,建议通过MSP的半托管方式,源站就近读取,并使用COS全球加速能力进行写入。2.如果源在国内目标在海外,建议通过MSP的半托管方式,使用COS全球加速能力读取,并在目标就近写入对象。注意,目标不依赖于非腾讯端网络。 | |||
COS | QPS性能检查 | 检查COS的写性能1.COS 非下载频控QPS一般为国内3W,海外3k | ||
对象权限检查 | 检查COS的写权限,1.包括PUT,POST以及分片上传的全部写入权限。2.包括head object权限,会验证对象是否已上传,是否执行覆盖上传。 | |||
版本控制配置检查 | 建议开启版本控制,可在非预期被覆盖后,统一通过版本号进行回滚。 | |||
数据万象 | 回源配置检查 | 热迁移过程中访问对象1.尽量不要开启“异常状态码重定向规则”,可能会导致未迁移的数据无法按预期显示 | 设置了404重定向到指定对象地址,会覆盖404时回源拉取。 | |
图像处理异常忽略检查 | 访问时,目标端建议开启图像处理异常忽略参数1.开启忽略参数后,当对象过大或帧数过多的场景出现时,不会返回错误码,而是从源站拉取对象,可确保对象热复制成功。 |
迁移上云后的高可用架构,可通过接口级容灾方案+跨园区存储桶复制的能力,实现园区级灾难的持续性访问能力。
原理架构图
原理架构图
、
待迁移数据-->全量数据迁移-->热数据回源配置-->业务可用性检查-->业务入口切换-->增量数据迁移-->增量数据检查-->迁移完成
步骤1 创建存储桶
出于对数据的安全管控,如无特殊需求,建议访问权限设置为私有读写权限。
https://console.cloud.tencent.com/cos5/bucket
步骤2 创建迁移账号
主要用于授权写入COS的权限策略,如无特殊要求,可设置一个权限较大的QcloudCOSFullAccess进行数据迁移,迁移完毕释放。
授权QcloudCOSFullAccess权限
https://console.cloud.tencent.com/cam
步骤3 创建API密钥
以上,完成基本资源准备。
步骤4 下载迁移工具,下载到待迁移的服务器侧。
https://github.com/tencentyun/cos_migrate_tool_v5
步骤5 进行迁移工具配置,这里主要已本地迁移数据举例
首先看一下迁移配置,这里包括迁移类型,云上目标端,本地节点 三项配置
比较通用且必要的迁移配置包括以下这几项
type=migrateLocal
secretId=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
secretKey=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
bucketName=mybucket-1251668577
region=ap-guangzhou
cosPath=/
其中threadTrafficLimit参数可指定上传限速,以避免带宽占用过高,注意,threadTrafficLimit为单链接限速,需要结合smallFileExecutorNum与bigFileExecutorNum之乘积来整体预估带宽值。
其中fileListMode为24小时内的周期执行配置,如将迁移任务放置在夜间等业务低峰时期进行迁移。避免影响业务高峰体验。
步骤6 执行迁移指令
执行任务后可以看到迁移进度列表。直到迁移完成
如有migrate_fail失败记录,可在log目录内的error.log查明原因
创建bucket及子帐号授权步骤同4.4.1 略
步骤1 资源准备
这里我们以从OSS迁移对象到COS,使用半托管agent方式为例
首先需要创建至少两台ECS服务器(一台为master,一台为worker),在阿里云ECS控制台购买
步骤2 下载agent到待迁移ECS服务器,并修改配置,填写数据源的服务密钥
agent 下载地址 https://migrate-1256125716.cos.ap-guangzhou.myqcloud.com/agent/agent.zip
步骤3 创建MSP任务
MSP迁移服务平台-对象存储迁移-新建对象迁移任务
https://console.cloud.tencent.com/msp/v2file/create
步骤5 观察进度
启动gent,执行命令如下
执行结果(成功)
注意agent所在的迁移服务器的安全组或防火墙需要开放两个端口的出方向,也可自行修改端口
5分钟后回到MSP控制台观察进度。
任务启动后几分钟可看到agent状态,如下
说明任务执行正常。
步骤6 任务完成
如发现有失败的任务,可以通过“重试失败任务”来尝试继续迁移。如多次失败,可通过“导出失败文件列表”来进行手动迁移。一般为源站访问失败或源站文件过大,超时或失败次数过多导致。错误信息如:frag retry too many times timeout
本地数据一致性校验
linux可通过ls -lR | grep "^-"| wc -l 来统计当前目录及子目录下的文件个数。
windows可通过属性的方式统计文件个数
云上目的资源统计
可通过在bucket概览处查看桶内文件总数(文件概览统计有一定延时,一般情况下最长在2个小时左右)
友商源资源统计
如对象数较多且需要迁移源为指定前缀,可使用友商的“清单”方式来统计,这里不做过多介绍,详见
https://help.aliyun.com/document_detail/163489.html
迁移资源统计
COS Migration | MSP | |
---|---|---|
易用性 | 需自行配置 | 全托管方式简单易用★★★ |
性能 | 依赖于单机性能 | 半托管方式可创建多个worker服务器并发迁移★★★ |
用途 | 本地迁移,AWS,阿里云,七牛云,又拍云,腾讯云,URL方式 | 阿里云,华为云,七牛云,金山云,百度云,ucloud,又拍云,AWS,支持S3协议源站,腾讯云,URL方式 ★★★ |
灵活性 | 需要自行切割前缀,实现多台服务器并发迁移 | 通过配置,实现worker服务实时队列增减。 ★★★ |
时间周期 | 24小时内定制时间执行,通过系统的“计划任务”可实现周、月纬度时间定制执行★★★ | 无时间周期设置 |
限速 | 通过控制并发数来实现限速 | 可通过设置单个worker外网带宽来限速;也可以通过设置整个任务的总带宽限制★★★ |
成本 | 友商迁移场景,迁移服务器建议创建在友商。数据源(内网下行)--(内网上行)迁移服务器(外网下行)--(外网上行)COS | 友商迁移场景(量大),全托管方式不推荐,会产生较高公网下行流量费用。数据源(外网下行)--(外网上行)MSP全托管服务(内网下行)--(内网上行)COS |
常用命令可以使用telnet或curl来做验证
COS默认开放80和443端口,命令方式
如下所示
验证端口正常。
如果要测试资源的连通性,可使用curl命令,注意如公共读权限可直接下载访问,如果是私有权限的对象,可通过“复制临时链接”的方式下载验证
如下所示为带有临时签名方式的访问
命令下载验证成功
5.1.2访问权限校验
在控制台-存储桶-权限管理 页面来业务所需权限设置
访问策略验证流程如下
建议非必要情况下,不使用匿名或公共读策略,可能会导致被盗刷等风险。
控制台--存储桶--容错容灾管理
版本控制
版本控制可在误删除或误覆盖的场景下保存历史版本信息,可通过历史版本恢复丢失的对象内容。同时,历史版本会产生一定的存储空间,可使用生命周期自动清理过期的历史版本,以节约成本,同时也保证数据的灾难恢复。
存储桶复制
存储桶复制是一种更为可靠的容灾能力,可通过同步将存储桶数据复制到异地存储桶,在园区级异常的场景下,可通过切换或重试访问异地存储桶,实现服务的可持续性访问。
建议开启。
控制台--存储桶--基础配置--回源设置
该功能可设置为当COS访问404时,可通过获取源站的方式同步/异步拉取到资源到COS,同时返回给客户端,确保“热”数据同步迁移和访问正常。
如下示例,为设置源站xxx.com 的同步回源配置
这样可以确保已迁移到COS上的数据和未复制到COS上的数据同时访问。
5.1.5日志、监控等配套功能校验
控制台--存储桶--日志存储/数据监控
这两个功能用于生成离线数据和实时监控数据,建议开启,方便对于后续的访问日志进行核对。
5.2云上业务环境切换
在测试访问成功的基础上。将业务文件源站域名切换至COS域名,通过业务入口进行线上验证。
如使用自定义域名(推荐),可以以COS为源或CDN为源的形式。无论以哪种形式来访问,均需要在COS控制台绑定自定义域名。然后将业务域名cname修改为CDN/COS 。实现业务入口的切换。
在一次性任务迁移完成后至业务入口切换完成前,仍有一部分增量数据在源站待迁移。这一部分增量数据相对数据规模不大,可使用MSP的全托管方式来实现。
这里的时间范围为一次性迁移至业务完全切换后的时间段。同时可设置同名文件跳过,避免重复复制。
任务完成后,对增量迁移数据访问
curl XXXX -v /dev/null
检查响应头的server节点为tencent-cos 即为迁移成功。
至此,切换任务完毕,数据全部上云。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。