概述
msp-agent 是一款将数据迁移至对象存储 COS 的工具。您可以将 msp-agent 部署在机房服务器或者云上服务器,它将执行您在云迁移控制台创建的半托管迁移任务,轻松将云存储数据迁移至 COS。
支持特性
支持丰富的数据源,所有控制台支持录入的源服务商均支持。
主从结构,支持分布式模式,部署简单,支持大规模数据高效迁移。
支持断点续传。
支持流量控制。
支持控制台可录入的所有特性,与全托管服务特性保持一致。
支持推和拉两种模式。请 联系存储架构师 设计迁移方案。
推模式:在数据源就近的主机上部署 MSP Agent,将数据推送到 COS 目标桶。
拉模式:在腾讯云 COS 目标桶就近的主机上部署 MSP Agent,从数据源拉起数据,写入 COS 目标桶。
支持专线和互联网公网两种组网模式,详见 网络流量。
运行环境
适用于 Linux 系统。
系统部署方法
安装
说明:
msp-agent 是采用 master-worker 的分布式架构,一台 master 一般对应一到多台 worker。
master 目录即为 master, worker 目录即为 worker。
如果需要部署多个 worker,把 worker 目录整体拷贝,然后修改相应参数后,按下面的启动方式启动即可。
单个服务器可以启动多个 worker 进程,但需要注意按下面参数说明修改相应参数,以防止端口冲突。
启动
启动 master:
cd {path-to-msp-agent}/master && ./bin/start.sh
启动 worker:
cd {path-to-msp-agent}/worker && ./bin/start.sh
配置参数说明
master 和 worker 目录下都有相同的 configs 结构:


其中 pl_config.yaml 配置了进程运行的主要参数;app_logger_config.yaml 配置了应用运行日志格式;query_logger_config.yaml 配置了主从 rpc 通信记录日志格式。
日志配置
日志部分基本采用默认的参数即可。
注意:
日志滚动部分配置:如果磁盘空间有限而任务规模巨大,则需要调节一下日志配置以节省磁盘空间(迁移只有存储日志部分使用到磁盘,实际的文件迁移是不使用磁盘的)。


Master 配置
参数 | 含义 | 说明 |
"....gRPCPort" | master 监听 gRpc 端口 | 用于接收 worker上报信息,master 机器此端口一定要向 worker 机器开放。 |
failFilePartSize | 记录失败文件的文件分块大小 | 用于记录失败文件的文件分块,乘以10000即为最大失败文件记录大小,默认10485760Byte,即可记录100GB大小的失败文件; 如果待迁移文件特别多,失败的也特别多,比如超过2亿,则此处可往上调。 |
fragMaxSize | 分发任务单个分片包含文件大小 | 为了降低主从通信压力,master 派发给 worker 的子任务是将多个文件路径打包成一个分片后派发,此处 fragMaxSize 即为单个分片能打包的文件最大总字节数。 此处设置太小会使主从通信压力加大,浪费服务器资源,太大会使 worker 上报分片完成时间拉长,不够及时,同时会造成 worker 负载不均衡。 默认值是10737418240,即为100GB。 打包时满足 fragMaxSize 或者 fragMaxNum 其中一个即停止加更多文件。 |
fragMaxNum | 分发任务单个分片最大包含文件个数 | 为了降低主从通信压力,master 派发给 worker 的子任务是将多个文件路径打包成一个分片后派发,此处 fragMaxNum 即为单个分片能打包的文件最大个数。 此处设置太小会使主从通信压力加大,浪费服务器资源,太大会使 worker 上报分片完成时间拉长,不够及时,同时会造成 worker 负载不均衡。 默认值是1000。 打包时满足 fragMaxSize 或者 fragMaxNum 其中一个即停止加更多文件。 |
secretId | 用于请求云迁移云 API 的密钥 SecretId | Master 进程需要请求云迁移云API,以获取用户在控制台创建的任务,因此此处需要填入用户的密钥,此处填密钥中的 secretId。 注意此处密钥是指创建云迁移任务的用户密钥,与源桶和目标桶的密钥完全无关。 |
secretKey | 用于请求云迁移云 API 的密钥 SecretKey | Master 进程需要请求云迁移云API,以获取用户在控制台创建的任务,因此此处需要填入用户的密钥,此处填密钥中的 secretKey。 注意此处密钥是指创建云迁移任务的用户密钥,与源桶和目标桶的密钥完全无关。 |
listerIp | 部署 Master 进程的服务器内网 IP | 客户可能创建多个任务,而且希望多个任务运行到不同集群,因此此处需要填入部署 Master 进程的服务器的内网 IP,这样此 Master 就只会运行在控制台创建任务时分配到这个服务器 IP 的任务。 控制台创建任务时主节点内网 IP 表单即输入与本配置相同的 IP。 ![]() |
useAccelerateDomain | 使用全球加速域名访问保存失败文件列表的内部 COS 存储桶 | 任务的失败文件列表统一保存到国内地域的存储桶,避免因保存“失败文件列表”失败,导致重试迁移任务失败。MSP Agent 部署在海外时为了保证任务不出错,建议配置文件开启此配置为 true。 |
Worker 配置
参数 | 含义 | 说明 |
"....gRPCPort" | Worker 监听gRpc 端口 | 用于接收 master 调度信息,worker 机器此端口一定要向 worker 机器开放。 如果单个服务器启动多个 worker 进程的话,需要修改此处配置与其他 worker 不同,防止端口冲突而造成的进程启动失败。 |
fileMigrateTryTimes | 重试次数 | 单个文件失败后的重试次数。 |
goroutineConcurrentNum | 协程并发数 | 并发协程数,也可以理解为并发迁移文件数。 跟两个因素有直接关系: 一是机器配置大小,机器核数越高,此值可设的越大。 二是平均文件大小,单个文件平均越大,此值可设的越小,因为较小的并发协程即可达成较大的带宽占用,单个文件越小,越要增大并发以增大总体带宽。 |
baseWorkerMaxConcurrentFileNum | 缓存的待迁移文件队列 | 为了加快分布式任务派发效率,每个 worker 都会缓存一些待迁移文件分片,当需要迁移的文件较小,即迁移更高的 qps 时,此值可设置的越大,这样缓存就会缓解 worker 消费的饥饿情形。 负面影响是此处缓存越大,master 需要保存的状态数据就越大,会造成 master 负载加大与不稳定。因此此数值需要折中设置。 |
partSize | 分块大小 | 迁移大文件时分块上传的默认分块大小。 |
downloadPartTimeout | 下载超时时间 | 下载文件的超时时间,单位:秒。 |
uploadPartTimeout | 上传超时时间 | 上传文件的超时时间,单位:秒。 |
perHostMaxIdle | http client 并发设置 | 每个 host 的连接池大小,一般与 goroutineConcurrentNum 一致即可。 |
addr | 对应的 master 内网通信地址 | 配置 worker 对应的 master 通信地址,这样 worker 就会像 master 注册,从而组成集群。 例如 master 的 listerIp 是10.0.0.1,master配置里监听的 grpc 端口是22011,则此处 addr 填入 10.0.0.1:22011。 |
sample | 是否做抽样检测 | 在概述中说明了迁移后数据一致性校验的几种情况,对于源文件没有内容签名 Content-MD5 或者 crc64 的文件,是无法直接做一致性检验的,所以只能通过抽样检测来降低不一致概率。 如果打开此配置为 true,则对于源文件没有内容签名 Content-MD5 或者 crc64 的文件,会做抽样检测。 |
sampleTimes | 单个文件抽样片段数 | 对单个文件的抽样片段数,每一个抽样片段均会多一次下载请求,也意味着会多一部分下载流量。 |
sampleByte | 抽样片段字节数 | 每个抽样片段的大小,越大意味着抽样占用的带宽越大。 |
useInternalAccDomain | 使用 COS 内网全球加速域名 | 开启此配置为 true,将在上传文件到目标 COS 存储桶时使用内网全球加速域名,加速数据上传 COS 的性能。开启此配置前请确认目标 COS 存储桶已经开启全球加速。 注意: |
网络流量
若数据源是友商:
托管模式 | 专线或公网 | 网络流量 |
推模式 | 专线 | |
| 公网 | 迁移性能受到公网带宽限制。 |
拉模式 | 专线 | 同上,友商会产生外网下行流量。 |
| 公网 | 同上,友商会产生外网下行流量。 |
若数据源是腾讯云 COS,迁移同地域的存储桶,走内网;迁移跨地域的存储桶,走外网。