常见的迁移场景中, 通常用户需要先了解源和目标两端的访问方法, 自己开发脚本实施迁移. 这使得迁移的难度高, 周期长, 并且由于迁移并非用户熟悉的常规操作, 经常会遇到意料之外的问题.
为方便用户迁移, 腾讯云建立了 MSP 迁移服务平台, 目标是通过全界面化的操作为用户提供快速简便和高效的迁移能力.
因为各类迁移场景下需要关注的细节和具体操作会有差异, 因此我们将针对不同的场景提供操作指引, 帮助用户进一步了解和掌握这个平台工具的使用.
本篇针对对象存储迁移场景中的不同情况进行分析, 说明如何针对不同的迁移类型和条件, 基于 MSP 平台建立最合适的迁移方案并实施迁移.
一, 迁移需求和条件确认
客户期望的启动时间、结束时间 | 何时能够启动和完成迁移往往与切量计划相关,针对时间的要求,制定方案时会权衡是否需要适当放宽成本,或者临时调整资源。 |
---|---|
计划迁移的数据量 | 数据量的大小直接影响到对迁移资源的需求,并且影响迁移时间。 |
计划迁移的数据的特征 | 因为影响对象存储迁移速度的除了带宽外,还有存储桶的最高并发访问限制(QPS),平均文件大小越小,会因频繁访问而触达 QPS 上限,即:大文件迁移的瓶颈是带宽,小文件迁移的瓶颈是 QPS。 |
是否需要增量迁移 | 因为迁移前后需要保障文件的完整性和一致性,如果迁移过程中迁移源有持续增加的新文件,需要根据客户的具体情况针对这些增量文件制定双写或增量迁移方案 |
是否存在低频、冷数据 | 如果迁移源存在低频和冷数据,一是需要确认是否需要进行预热(否则冷数据可能无法迁移),二是需要确认迁移到目标云之后是否需要保持低频和冷数据的状态(存储类型影响到存储成本) |
客户的迁移源、目标是否存在正在服务的业务? 业务的波峰波谷是怎样的? | 无论是直接访问对象存储或是通过 URL 进行访问,如果是在迁移生产环境的数据,迁移所产生的 QPS 或流量,都有可能对线上业务产生影响: 1)对象存储访问:迁移产生的 QPS 压力与业务 QPS 叠加可能超出数据桶的 QPS 上限,造成访问文件失败,业务出现故障; 2)URL(CDN)访问:迁移产生的高带宽有可能与业务流量峰值叠加,产生高额的 CDN 成本; 因此,迁移前需要请客户提供业务流量曲线和源存储云厂商的 QPS 上限能力,以便评估是否需要限速或采取错峰迁移方案。 |
客户是否已有专线或计划拉通专线?带宽多大? | 如果客户因业务所需已有可复用的专线、或迁移量巨大希望避免通过公网迁移产生流量成本,那么需要评估专线迁移的可行性,结合数据量计算专线带宽需求。 |
二, 迁移方案制定
根据收集到的客户迁移需求和条件, 我们可以针对性的制定迁移方案.
2.1 确定迁移模式
根据客户是否有专线 (或者根据迁移的预估成本判断是否需要拉专线) 来选择模式
2.1.1 常规的通过公网访问对象存储或 URL 的拉模式
因拉模式会产生公网流量, 给客户提供方案时需要讲预估的流量成本与客户进行确认
2.1.2 客户有专线的情况下采用推模式
2.2 确认增量迁移方案
1.1 方案一: 客户先进行双写改造, 改造完成后进行存量迁移
优点: 业务不中断
缺点: 客户侧需要有开发工作量
1.2 方案二: 先进行一次存量迁移, 迁移完成后进行业务切量, 切量完成后进行二次增量迁移
优点: 客户无需开发
缺点: 需要切量到二次增量迁移过程中的数据不一致对业务是否产生影响
2.3 确认迁移数据量和资源需求
如果客户迁移任务时间紧数据量大, 需要相应调整方案中的资源(专线带宽, 后台服务器数量等)
三, 迁移实施
3.1 公网拉模式迁移实施步骤(MSP 操作说明)
公网拉模式迁移是非常简单的全托管模式, 在 MSP 控制台上, 新建迁移任务, 按照迁移需求情况填写即可.
所有参数填写完成后, 按下 "新建并启动" 按钮, 迁移即会在后台自动进行.
3.2 专线推模式迁移实施步骤(MSP 操作说明)
专线推模式迁移需要准备专线以及在用户侧部署和启动 Agent 工具, 略微繁琐.
3.2.1 专线准备确认
Agent 模式通过专线迁移, 需要确保源云侧主机上使用 COS SDK 可经过专线访问 COS, 迁移前务必确认, 以免产生外网流量.
3.2.2 迁移限速
MSP 迁移工具提供了限制 QPS(对象存储模式)和带宽限速(URL 列表模式), 但均为粗略控制, 存在较大误差. 在使用 Agent 迁移的情况下, 建议在迁移服务器上进行限速操作, 而在 MSP 中创建任务时选择 "不限速"
1)查看网卡
- [root@VM_10_12_centos ~]# ifconfig
- eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
- .NET 10.0.10.12 netmask 255.255.255.0 broadcast 10.0.10.255
- ether 52:54:00:bb:49:0f txqueuelen 1000 (Ethernet)
- RX packets 13361 bytes 19400520 (18.5 MiB)
- RX errors 0 dropped 0 overruns 0 frame 0
- TX packets 1001 bytes 67101 (65.5 KiB)
- TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
- .NET 127.0.0.1 netmask 255.0.0.0
- loop txqueuelen 1000 (Local Loopback)
- RX packets 0 bytes 0 (0.0 B)
- RX errors 0 dropped 0 overruns 0 frame 0
- TX packets 0 bytes 0 (0.0 B)
- TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2)限速前测试
- [root@VM_10_12_centos ~]# wgegt
- -bash: wgegt: command not found
- [root@VM_10_12_centos ~]# wget
- --2019-04-08 10:47:41--
- Resolving msp-test-src-1256125716.cos.ap-guangzhou.myqcloud.com (msp-test-src-1256125716.cos.ap-guangzhou.myqcloud.com)... 211.159.131.23, 211.159.131.24, 211.159.130.21, ...
- Connecting to msp-test-src-1256125716.cos.ap-guangzhou.myqcloud.com (msp-test-src-1256125716.cos.ap-guangzhou.myqcloud.com)|211.159.131.23|:443... connected.
- HTTP request sent, awaiting response... 200 OK
- Length: 1574565066 (1.5G) [application/octet-stream]
- Saving to: 'bkce_src-5.0.2.tar.gz'
- 5% [========> ] 86,299,969 14.2MB/s eta 94s ^C
3)安装 iproute 工具(默认 CentOS 7.x 已安装, 此步可跳过)
- [root@VM_10_12_centos ~]# yum -y install iproute
- Loaded plugins: fastestmirror, langpacks
- Determining fastest mirrors
- Package iproute-4.11.0-14.el7.x86_64 already installed and latest version
- Nothing to do
4)限速
[root@VM_10_12_centos ~]# /sbin/tc qdisc add dev eth0 root tbf rate 50kbit latency 50ms burst 10000
如果需要限速 10M, 可以将 50kbit 改为 10Mbit
5)限速后测试
- [root@VM_10_12_centos ~]# wget
- --2019-04-08 10:49:15--
- Resolving msp-test-src-1256125716.cos.ap-guangzhou.myqcloud.com (msp-test-src-1256125716.cos.ap-guangzhou.myqcloud.com)... 139.199.41.140, 119.29.47.254, 211.159.130.20, ...
- Connecting to msp-test-src-1256125716.cos.ap-guangzhou.myqcloud.com (msp-test-src-1256125716.cos.ap-guangzhou.myqcloud.com)|139.199.41.140|:443... connected.
- HTTP request sent, awaiting response... 200 OK
- Length: 1574565066 (1.5G) [application/octet-stream]
- Saving to: 'bkce_src-5.0.2.tar.gz.1'
- 0% [ ] 155,313 359KB/s
6)解除限速
[root@VM_10_12_centos ~]# /sbin/tc qdisc del dev eth0 root tbf
3.2.3 迁移源准备(以阿里云为例下操作)
3.2.3.1 准备好可以访问源数据桶的密钥对
在阿里云控制台右上方, 选择 accesskeys
此处的 AccessKey/Acdess Key Secret, 需要在创建迁移任务的时候用到
3.2.3.2 建立用于迁移的临时服务器(主控服务器)
因为建立迁移任务时需要填写 Agent 主控服务器的 IP 地址(内网 IP 地址, 用于与迁移集群中的 worker 服务器通信), 因此在建立迁移任务之前, 先在阿里云准备一台服务器. 操作系统 CentOS 7.x 64 位
如使用专线迁移, 服务器必须配置为可通过专线直接访问 COS.
例如, 在阿里云上先创建一台主控服务器, 内网 IP 地址 172.19.97.94
3.2.4 建立迁移任务(本节在腾讯云迁移目标账号下操作)
正则表达式, 仅迁移文件名中不包含下划线的文件:^((?!_).)*$
所有参数填写完毕后, 按下 "新建并启动" 按钮, 在 Agent 模式下任务已创建成功但并未运行, 需要按以下步骤在阿里云主机上手工启动 Agent.
3.2.5 启动 Agent(在 master 主控服务器上操作)
1)将 Agent 工具解压到合适的目录(目录无特殊要求)
2)修改配置文件
./agent/conf/agent.toml
# 此处填写腾讯云用于迁移的云 API 密钥对 secret_id = '此处填写腾讯云 API 密钥 AccessKey' secret_key = '此处填写腾讯云 API 密钥 SecretKey' |
---|
3)启动 Agent
- # chmod +x ./agent/bin/agent
- # cd agent/bin
- #./agent
必须在 bin 目录中启动 agent 程序(否则会找不到配置文件)
Agent 会定时自动从 MSP 平台获取任务的详细配置信息, 如果创建多个迁移任务无需重复启动 Agent.
3.2.6 扩充迁移集群(增加 worker 服务器)
Agent 模式支持分布式迁移(多服务器协同), 如果希望进一步提高迁移速度, 在有可用带宽的情况下可以增加 worker 服务器加入到迁移:
worker 服务器必须与 master 服务器互通
如使用专线迁移, worker 服务器必须配置为可通过专线直接访问 COS
下例中, 增加了一台服务器 "workerA", 与 master 内网互通
worker 服务器可以是任意配置, 但建议与 master 保持一致. 部署和启动 Agent 的方式与 master 服务器完全相同(同样需要修改 agent.toml 中的 secret_id 和 secret_key), 因新建任务的时候已经指定了 master 服务器, 新加入的 agent 均被作为 worker 节点与 master 服务器通信获得任务.
Worker 服务器可以随时加入迁移集群, 但建议创建任务之前将所有的 worker 服务器与 master 一同创建并配置和启动 Agent, 以便 master 启动任务时可以更有效的进行分片调度.
四, 迁移后的结果检查
当迁移任务建立后, 可以在 MSP 的控制台上查看任务执行状态和执行结果
如果任务执行中有失败的文件(因网络原因等), 可以在任务执行完成后直接点击 "重试失败任务", 或者下载 "失败文件列表" 进一步确认问题的原因.
来源: https://www.qcloud.com/developer/article/1456468