全托管与半托管迁移模式
更新时间:2025-07-04
简介
CloudFlow 支持全托管迁移和半托管迁移。全托管迁移即您无需搭建迁移服务,只需可视化输入迁移源端、目的端信息,迁移可自动触发。对于半托管迁移,您需要在源端搭建迁移的服务(如云主机、公网带宽等),并将 CloudFlow 提供的官方 Agent 部署到源端服务中。全托管迁移和半托管迁移适用于不同的场景,您可以根据资自身需求景选择合适的迁移方式。
如何选择全托管与半托管迁移模式:
-
全托管迁移模式:
- 无需用户部署 Agent,只需任务创建之后自动化执行。
- CloudFlow 通过公网从源站拉取数据到百度智能云对象存储 BOS。
-
半托管迁移模式:
- 用户需要手工在源数据云厂商的服务中部署 Agent,Agent 在源端通过内网拉取源端数据,并通过源端的公网服务或专线将数据迁移到百度智能云对象存储 BOS。
- 如果源数据厂商与 BOS 间已经拉通专线,半托管迁移模式在源端对象存储中不会产生流量费用。若待迁移的数据量较大,建议采用半托管方式迁移。
迁移方式 | 迁移特点 | 迁移场景 | 优势 | 劣势 |
---|---|---|---|---|
全托管迁移 | 用户无需自行搭建迁移服务,填写迁移源端和目的端信息后即可以开始数据迁移。 | 数据量较小的迁移场景 | 操作简单,无需搭建迁移服务,无需技术能力 | 公网环境迁移,源端会产生外网下行流量费用 |
半托管迁移 | 用户需要在源端自行搭建迁移服务,或利用源端已有服务如云服务器、公网带宽等,并把 CloudFlow 官网提供的 Agent 安装到源端环境中 | (1)数据量较大,并希望快速完成迁移的场景;(2)使用专线迁移的场景;(3)源端有空闲的云服务器和公网带宽资源 | 采用源端云服务器从源端对象存储拉流迁移的方式,可避免产生源端的外网下行流量费用,适用于专线环境 | 源端需要一定的迁移服务搭建成本,操作需一定的技术能力 |
半托管迁移教程
使用场景
半托管迁移模式中,您需要手工在源数据云厂商的服务上部署 CloudFlow 官方 Agent。部署后,该 Agent 将通过源端云服务器内网拉取源数据的方式,将数据迁移到百度智能云对象存储 BOS。
- 场景1:专线环境数据迁移:若您已经在源数据厂商与百度智能云 BOS 间拉通专线,半托管迁移模式将不会在源端产生外网下行流量费用,因此建议已经部署了专线的用户采用此模式进行迁移。
- 场景2:利用源端剩余资源迁移:若您在源端已购买并剩余充足的云服务器和公网带宽资源,您可以利用源端的已有服务进行公网迁移。此时,Agent 通过源端云服务器内网拉取源端对象存储数据,并通过您在源端已购买的剩余公网带宽资源将数据迁移到百度智能云对象存储 BOS。此时,源端对象存储也不会产生外网下行流量费用,迁移将消耗您在源端已购买的公网带宽资源。
下载Agent
文件名及下载地址 | 操作系统 | 架构 | 大小 | MD5 |
---|---|---|---|---|
agent-1.3.0.zip | Linux | x86-64 | 11MB | 06c7e1cbd798e57a6876702556a9cb2b |
实施半托管迁移
- 源端新建云服务器,源端的详细购买方式,请参考源端服务商云服务器的创建。源端云服务器配置越高,虚拟机的吞吐和 IO 性能越好,这将影响您的数据迁移时间,您可以根据需求选择合适的云服务器规格。
- 在 CloudFlow 中创建迁移任务,并选择半托管迁移模式。具体操作请参考任务创建教程。
- 任务创建完毕后,启动任务。需要注意的是,在半托管迁移模式下,任务虽已创建成功但并未运行,需要按以下步骤在源端服务器上手工启动 Agent。您也可以在创建任务时选择定时迁移,为 Agent 在源端的部署预留时间。
- 在源端服务器中部署和启动主 Agent。部署后,您需要修改对主 Agent 的配置文件,配置文件名称为
agent.conf
Plain Text
1# 请求账号信息,需要有任务读取权限,只需要主agent设置即可
2[account]
3accessKeyId = "xxx" # 用户ak
4secretAccessKey = "xxx" # 用户sk
5
6# log相关配置项
7[log]
8logPath = "../log" # log输出位置
9logLevel = DEBUG # log打印级别,DEBUG, TRACE, INFO, WARNING, ERROR, CRITICAL
10logSave = 168 # 本地log最大保存时间,超过时间后日志自动清理(h)
11
12# server端信息
13[server]
14host = "cloudflow.bj.baidubce.com" # 数据流转平台域名
15
16# agent端主要设置项
17[agent]
18type = "agent" # agent启动类型,主:agent,从:worker
19maxCpus = 8 # 进程可用的最大cpu核心数
20mixWoker = false # 同时启动woker进程
21rpcServerListenPort = 8081 # 主agent暴露的rpc端口,从agent监听端口
22requestTaskInterval = 10 # 请求server端任务列表间隔(s)
23updateTaskInterval = 10 # 请求server端更新任务状态间隔(s)
24# migrationTaskList = "task_id" # 迁移任务列表1,默认只迁移列表中的任务,注释后则迁移用户创建的所有半托管任务
25# migrationTaskList = "task_id" # 迁移任务列表2
26localBufferTaskSize = 20000 # 每个任务可同时放入任务池中最大任务量
27onlineTaskMaxNum = 100000 # 任务池中最大任务数量
28taskExpireTime = 600 # 任务超时时间,在设置时间内未更新的任务被判定为迁移失败(s)
29dispatchMaxRetryTimes = 2 # 任务分发最大重试次数
30dispatchConcurrency = 10 # 最大分发线程数,需要大于迁移任务数量
31securityToken = "ZuU1t82@db^2Y0Y72Ygn" # rpc任务请求token,agent必须与worker相同
32dataPath = "../data" # 待迁移文件列表暂存文件夹
33srcInternalEndpoint = "" # 迁移源端内网endpoint配置,为空则使用控制台填入的源端endpoint
34dstInternalEndpoint = "" # 迁移目的端内网endpoint配置,为空则使用控制台填入的目的端endpoint
35taskUpdateMaxFailedNum = 5000 # 每个任务每次请求向数据流转平台汇报失败文件最大的数量(支持热加载)
36stopGenWhenMaxRetry = 20 # 请求server更新任务状态失败超过最大重试次数,停止所有任务的分发(支持热加载)
37confAutoLoadInterval = 120 # 自动加载配置参数(s),值设置小于或等于0默认不开启参数热加载
38fileSystemMaxCountPerfile = 1000000 # FS list本地文件时,每个分片文件包括的最大文件数量
39
40# agent流控项配置
41[flowcontrol]
42Qps = 30000 # 30000 qps, 总任务qps(支持热加载)
43BandWidth = 81920 # 10GB * 1024MB * 8b, 总任务流控带宽(Mbps)(支持热加载)
44FlowControlInterval = 3 # 流控间隔(s)(支持热加载)
45BucketFlowControl = "" # 格式: "bucketname:qps:bandwidth:interval", 参数: bucket:迁移qps:迁移带宽(Mbps):迁移生效间隔(支持热加载)
46
47# 迁移worker端配置项
48[worker]
49agentServer = "127.0.0.1" # 主agent server地址
50shutdownTimeout = 300 # woker端关闭超时时间(s)
51renewTaskInterval = 30 # 任务续租间隔(s)
52rpcRequestInterval = 200 # rpc任务请求间隔(ms)
53RPCFreeRequestInterval = 2000 # rpc闲时任务请求间隔(ms)
54maxConcurrency = 100 # 处理迁移任务最大线程数
55MaxBandWidth = 9600 # 1200MB * 8,迁移最大带宽(Mbps)(支持热加载)
56rpcRequestMaxTasks = 100 # 每次请求agent获取的最大任务数
57migrateMaxRetryTimes = 2 # 对于迁移失败object最大重试次数
58multiMaxConcurrency = 5 # 分块上传最大线程数
59blockSize = 52428800 # 50MB * 1024KB * 1024B, 最小分块上传块阈值(B),最大上传文件50MB * 10000 = 500GB
60ConnectTimeout = 10 # http建立TCP连接超时时间(s)
61KeepAlive = 15 # http连接保持探活时间间隔(s)
62IdleConnTimeout = 30 # http连接空闲超时时间(s)
63TLSHandshakeTimeout = 10 # http执行TLS握手超时时间(s)
64ResponseHeaderTimeout = 30 # http读取响应header的超时时间(s)
65InsecureSkipVerify = true # http请求忽略证书验证
66GetValidAddrsMaxNum = 4 # 获取下载url域名最大有效地址数
67MaxIdleConns = 1000 # client可用空闲连接数
68MaxIdleConnsPerHost = 1000 # 单host可用空闲连接数
69MaxMemUsed = 15 # 服务最大可使用内存阈值,若进程使用内存量超过设置值,服务会暂停处理新的任务,单位:GB
70MemUsedThreshHold = 2 # 系统最小可用内存阈值,若系统可用内存小于设置值,服务会触发内存GC,防止机器崩溃,单位:GB
注意事项:
- 主agent节点能够正常访问数据流转平台域名。
- 部署主agent节点的机器需要预留足够的磁盘空间,在任务运行过程中会下载待迁移的object列表文件,单个文件内大概包含1000W条迁移列表信息。受object name字段的影响,单个文件大小在百MB-千MB不等,任务正常结束后程序会自动清理这些临时文件,当任务异常中断后,需要您手动进行清理释放空间。
- 从agent(worker)不需要与主agent部署在同一网段中,但是需要能正常访问主agent server地址。
- 在从agent(worker)节点比较充足时,为了能够充分利用各迁移节点的带宽,可以适当调整主agent配置文件中的flowcontrol流控参数。
- 当迁移的小文件较多时,可以适当调大从agent(worker)配置文件中的rpcRequestMaxTasks、maxConcurrency参数;当迁移的大文件较多时,可以根据节点迁移带宽与机器内存,调整MaxBandWidth参数。
- 主agent默认不同时开启迁移worker端,若您想只启动一个agent服务完成迁移过程,请设置
agent->mixWoker=true
打开worker客户端。- 配置文件中的一些标注为
支持热加载
的参数可以在不停止服务的情况下生效,这些配置被修改后会自动重新加载。- agent启动后默认会自动获取用户下所有的半托管迁移任务,若您想只进行指定的迁移任务,请设置
agent->migrationTaskList
参数。
- 服务性能扩展。当您希望拥有更高的迁移速度时候,您可以在源端创建更多云服务器,并在云服务器中部署从 Agent。
- 专线环境部署:若您已经有专线环境,您需要将源端迁移服务的云服务器部署到专线所在的 VPC 内
- 查看迁移进度:您可以在控制台查看迁移任务进度,详情请查看管理迁移任务。