什么是代理软件
代理软件(zms-agent)是依托于天翼云对象迁移服务(ZMS),专为天翼云对象存储ZOS(Zettabyte Object Storage) 数据迁移设计的分布式迁移工具。通过将代理软件(zms-agent)部署在本地或云主机中,能高效地从其他对象存储服务向ZOS进行大规模数据迁移。
代理软件(zms-agent)包含两个部分:
zms-master服务(主节点):一个迁移集群部署一个,负责与服务端通信与任务调度。从源端对象存储获取待迁移的对象列表,然后分发给各个zms-worker服务执行迁移。
zms-worker服务(工作节点):一个迁移集群可部署一个或多个,至少一个,负责迁移数据。根据zms-master服务分发的对象列表,进行数据下载和数据上传,实现数据迁移。
用户部署代理软件后与ZMS服务控制台的关系如下所示:
代理的部署类型
单台部署
单台机器,用于部署代理的zms-master服务和zms-worker服务。
分布式部署
多台机器,每台机器均部署zms-worker服务,zms-master服务部署在其中一台机器;或一台机器部署zms-master服务,其余机器部署zms-worker服务。
代理的zms-master服务与任一zms-worker服务部署在同一台机器。
代理的zms-master服务单独部署于一台机器。
代理的部署环境
部署代理软件的环境、网络和机器配置如下,建议您阅读后,根据实际需要进行代理的部署。
系统与架构
Linux-amd64
CentOS7.9、CtyunOS 23.01、CtyunOS 2.0.1、CtyunOS 22.06
网络要求
部署zms-master服务的机器必须联通公网,以供与对象迁移服务(ZMS)服务通信,与ZMS服务通信公网带宽不低于10Mbps即可。
部署zms-worker服务的机器必须可联通源端、目的端的对象存储服务,公网、内网或专线均可。
部署zms-master服务的机器与zms-worker服务的机器之间必须联通。
推荐配置
无论单台部署或分布式部署,每台机器的配置,我们推荐以下两种常见的配置组合:
| 服务器配置 | zms-worker服务并发数(process_nums) | 网络带宽下限 |
4核心8GB内存 (系统盘不低于60GB) | 建议值为6 | 不小于30Mbps即可 |
8核心16GB内存 (系统盘不低于60GB) | 建议值为12 | 不小于60Mbps即可
|
zms-worker服务并发数(process_nums)的调优:并发数配置最多不能超过机器核心数的1.5倍。
如何针对源端数据模型调整配置:
大文件较多的场景:迁移速度的主要瓶颈是网络带宽,建议配置较大的网络带宽进行迁移。
存在大量小文件(<1KB)的场景:迁移速度的主要瓶颈为CPU核心数,建议配置教多核心数的CPU机器,通常在8核心以上。
如何推算需要多少台机器进行部署:
计算原则:所需机器数量=预期迁移总带宽÷单台机器的网络带宽
例如:您预期本项目需要总共1000Mbps的公网带宽,你可提供机器的单台公网带宽为200Mbps,则您总共需要5台机器来部署(5台=1000Mbps÷200Mbps)。
注意
建议您针对源端数据模型的特征,选择合适的机器配置,通过迁移前的测试,进一步调整并发数(process_nums)的配置,以此实现更好的迁移效果。
如何部署代理
代理的部署与启用
第一步:下载安装
zms-agent 安装包下载,下载后进行解压,zms-agent 安装包解压后的目录如下:
zms-agent/ conf/ -master_conf.ini -worker_conf.ini certs/ -server.key -server.crt bin/ -zms-agent -zms-master.service -zms-worker.service -install.sh -uninstall.sh
| 文件/文件夹 | 说明 |
| bin | folder,可执行文件 |
| certs | folder, 用户rpc加密通信的自签名证书 |
| conf | folder,master和worker的配置文件 |
| install.sh | file,安装脚本 |
| uninstall.sh | file,卸载脚本 |
执行如下脚本,实现代理安装:
sh install.sh
zms-agent采用master-worker的主从架构,一台master对应一到多台worker。因此安装时可以选择安装zms-master、zms-worker或两者都安装。然后选择是否开机自启动,默认为否。实际使用时仅在一台机器上安装zms-master即可。
第二步:填写配置文件参数
zms-master、zms-worker服务启动前,需要确认配置文件内容填写正确。
zms-master配置文件:conf/master_conf.ini
zms-master启动前必须修改配置文件中的[register]、[host]两个部分,其余参数若无特殊需要则无需修改。
| 字段 | 默认值 | 限制 | 说明 |
| [log] | |||
| log_level | DEBUG | DEBUG/INFO/ WARNING/ERROR/CRITICAL | 日志级别 |
| [migration] | |||
| check_sdk_timeout | 5 | [1, 60] | 校验源端目的端连通性时sdk超时时间 |
| max_scheduler_task_num | 6 | [1, 12] | 同时调度执行的任务数,后续任务排队 |
| list_max_nums | 1000 | [1, 1000] | 对象存储单次获取对象数(整桶/指定文件夹/指定前缀模式每批子任务包含对象数) |
| distribution_sub_task_length | 12 | [2, 96] | master向worker单次发送子任务数 |
| scanning_thread_nums | 6 | [1, 12] | 指定文件迁移或失败文件重试模式获取对象元数据并发数 |
| failed_retry_list_max_nums | 100 | [1, 1000] | 失败文件重试模式每批子任务包含对象数 |
| failed_file_upload_max_retry_times | 3 | [1, 5] | 失败对象文件上传到目的桶的最大重试次数 |
| [gRPC] | |||
| grpc_max_workers | 100 | [50, 100] | gRPC最大并发连接数 |
| grpc_server_port | [::]:8282 | [::]:port | gRPC服务端口 |
| grpc_client_timeout | 5 | [1, 60] | gRPC客户端超时时间 |
| [MQ] | |||
| mq_host | 加密值 | 无需修改 | 半托管MQ服务地址 |
| mq_port | 加密值 | 无需修改 | 半托管MQ服务端口 |
| mq_user | 加密值 | 无需修改 | 半托管MQ服务用户名 |
| mq_password | 加密值 | 无需修改 | 半托管MQ服务密码 |
| server_queue | zmigserver_queue | 无需修改 | 半托管MQ服务Server通道名称 |
| mq_reconnect_interval | 5 | [1, 60] | 连接MQ通道断开重连间隔 |
| [register] | |||
| register_code | —— | 首次启动需要该字段 | 半托管Agent注册码,在天翼云官网创建Agent时获取 |
| [host] | |||
| master_addr | —— | 需要携带GRPC启动端口,与grpc_server_port保持一致 | 半托管集群Master内网、公网地址,用于Master与Worker通信,不需要http://前缀 |
| work_addrs | —— | 多个Worker以逗号分隔,需要携带GRPC启动端口,并与Worker配置中保持一致 | 半托管集群所有Worker内网、公网地址,用于Master与Worker通信,不需要http:// 前缀 |
注意
master与worker通信地址可以使用内网,也可以使用公网,如果各节点内网通的话建议优先使用内网地址。同时注意各机器安全组、防火墙等配置,需要放开通信端口。
zms-worker配置文件:conf/worker_conf.ini
zms-worker参数若无特殊需求则都无需修改。
| 字段 | 默认值 | 取值范围 | 说明 |
| [log] | |||
| log_level | DEBUG | DEBUG/INFO/WARNING/ERROR/CRITICAL | 日志等级 |
| migration_retry_count | 3 | [1, 5] | 对象最多迁移失败重试次数 |
| process_nums | 8 | [1, 1.5*cpu核心数] | 迁移进程级别并发数 |
| [grpc] | |||
| grpc_max_workers | 10 | [5, 20] | gRPC服务器支持的最大并发数 |
| grpc_server_port | [::]:8283 | [::]:port | gRPC服务器监听的端口 |
| grpc_client_timeout | 5 | [2, 10] | gRPC客户端最大超时时间 |
第三步:工具的启动/停止
启动zms-master:
systemctl start zms-master
启动zms-worker:
systemctl start zms-worker
关闭zms-master:
systemctl stop zms-master
关闭zms-worker:
systemctl stop zms-worker
部署实践
场景一:单机部署
前置准备:
在天翼云官网迁移服务代理列表界面创建半托管Agent,并获取注册码。
点击创建代理界面的“代理安装包下载”按钮下载半托管Agent安装包并解压。或通过命令下载:
wget https://jiangsu-10.zos.ctyun.cn/bucket-zms/zms-agent/zms-agent-V1.0.0.zip
获取部署机器内网地址,用于zms-master与zms-worker通信。
安装部署:
进入前置准备步骤二解压后的目录,执行install.sh脚本,选择zms-master、zms-worker两者都安装,并按需配置开启自启动。
sh install.sh
zms-worker服务启动。
配置zms-worker配置文件(若无特殊需求则无需修改)。
vi conf/worker_conf.ini
启动zms-worker服务。
systemctl restart zms-worker systemctl status zms-worker
注意
需要保证zms-worker服务启动端口(默认为8283)不冲突。
zms-master服务启动。
配置zms-master配置文件。
vi conf/master_conf.ini
必填项:
register_code:前置准备步骤一中获取。
master_addr:前置准备步骤三中获取,格式为ip:port。
worker_addrs:前置准备步骤三中获取,格式为ip:port。
启动zms-master服务。
systemctl restart zms-master systemctl status zms-master
注意
需要保证zms-master服务启动端口(默认为8282)不冲突;若zms-master或zms-worker启动端口更改,zms-master配置文件中[host]标签下master_addr或worker_addrs中的端口也需同步更改。
后置检查:
前往天翼云官网迁移服务代理列表界面查看半托管Agent状态。
注意
状态同步需要1-2分钟时间,若长时间后半托管Agent状态仍不可用,请先检查:a.部署机器可联通公网;b.zms-master服务启动成功后,联系天翼云技术人员处理。
场景二:分布式部署
前置准备:
在天翼云官网迁移服务代理列表界面创建半托管Agent,并获取注册码。
点击创建代理界面的“代理安装包下载”按钮下载半托管Agent安装包并解压。或通过命令下载:
wget https://jiangsu-10.zos.ctyun.cn/bucket-zms/zms-agent/zms-agent-V1.0.0.zip
获取多台部署机器内网地址(以两台为例),用于zms-master与zms-worker通信。
注意
若多台机器内网不互通,也可以使用公网地址。
从节点安装部署(仅zms-worker,可多个):
进入前置准备步骤二解压后的目录,执行install.sh脚本,选择仅安装zms-worker,并按需配置开启自启动。
sh install.sh
zms-worker服务启动。
配置zms-worker配置文件(若无特殊需求则无需修改)。
vi conf/worker_conf.ini
启动zms-worker服务。
systemctl restart zms-worker systemctl status zms-worker
注意
需要保证zms-worker服务启动端口(默认为8283)不冲突。
主节点安装部署(同时安装zms-master与zms-worker,仅单个):
注意
主节点可同时安装zms-master与zms-worker,也可只安装zms-master。
进入前置准备步骤二解压后的目录,执行install.sh脚本,选择zms-master、zms-worker两者都安装,并按需配置开启自启动。
sh install.sh
zms-worker服务启动。
配置zms-worker配置文件(若无特殊需求则无需修改)。
vi conf/worker_conf.ini
启动zms-worker服务。
systemctl restart zms-worker systemctl status zms-worker
注意
需要保证zms-worker服务启动端口(默认为8283)不冲突。
zms-master服务启动。
配置zms-master配置文件。
vi conf/master_conf.ini
必填项:
register_code:前置准备步骤一中获取。
master_addr:前置准备步骤三中获取,格式为ip:port。
worker_addrs:前置准备步骤三中获取,格式为ip:port,多个worker地址之间使用英文逗号分隔。
启动zms-master服务。
systemctl restart zms-master systemctl status zms-master
注意
需要保证zms-master服务启动端口(默认为8282)不冲突;若zms-master或zms-worker启动端口更改,zms-master配置文件中[host]标签下master_addr或worker_addrs中的端口也需同步更改。
后置检查:
前往天翼云官网迁移服务代理列表界面查看半托管Agent状态。
注意
状态同步需要1-2分钟时间,若长时间后半托管Agent状态仍不可用,请先检查a.部署zms-master服务的机器可联通公网;b.zms-master服务启动成功后,联系天翼云技术人员处理。
代理的卸载
卸载:在部署zms-master或zms-worker的机器上执行uninstall.sh脚本即可。
sh uninstall.sh
注意
若不选择删除历史数据,zms-master与zms-worker重新安装启动后,还可以继续连接控制台上上次连接的Agent;若选择删除历史数据,则不能重新连接上次Agent,但可以填写新的注册码,连接新的Agent。
代理的扩容、缩容和替换主节点
worker节点的扩容与缩容
前置准备:
您已部署master节点,目的是新增worker节点或减少worker节点。
若需扩容请准备一台新的机器,部署并启动zms-worker服务(参考分布式部署小节中从节点安装部署步骤)。
注意
若需扩容多台机器,建议按照操作步骤一次对每台机器进行部署。
确定新机器内网ip
已部署半托管Agent,存在两个worker节点10.0.0.15、10.0.0.16。
已部署半托管Agent上执行任务暂停。
注意
若不手动暂停执行中的任务,zms-master节点重启后,执行中的任务状态将自动变为暂停。
worker节点扩容
修改zms-master配置文件
vi conf/master_conf.ini
修改worker_addrs字段,添加新节点10.0.0.16,多个节点之间以英文逗号分隔。
重启zms-master服务
systemctl restart zms-master
systemctl status zms-master
worker节点扩容完成。
worker节点缩容
修改zms-master配置文件
vi conf/master_conf.ini
修改worker_addrs字段,删除节点10.0.0.16。
重启zms-master服务
systemctl restart zms-master systemctl status zms-master
worker节点缩容完成。
后置检查:
前往天翼云官网迁移服务代理列表界面查看半托管Agent下worker数量。
注意
状态同步需要1-2分钟时间,若长时间后半托管Agent下worker数量仍未更新,请联系天翼云技术人员处理。
恢复已暂停的任务。
如何将旧master节点注册到控制台的新代理
前置准备
您已经部署有旧的master节点和worker节点,您想将该节点全部注册到控制台新创建的代理上,则您只需将旧的master节点注册到新代理即可。
在天翼云官网迁移服务代理列表界面创建新的半托管Agent,并获取注册码。
Agent替换
注意
只需要操作主节点即可,从节点无需执行操作。
已部署Agent主节点卸载
sh uninstall.sh
在主节点机器上执行命令卸载已部署Agent,需要选择清除运行数据。
修改zms-master配置文件,填写新Agent的注册码。
vi conf/master_conf.ini
重新安装主节点
sh install.sh
在主节点机器上执行命令重新安装Agent,按需选择只安装zms-master服务或两者都安装。
启动zms-master服务
systemctl restart zms-master systemctl status zms-master
注意
若同时安装了zms-worker服务,则也需要启动zms-worker服务。
后置检查:
前往天翼云官网迁移服务代理列表界面查看替换的半托管Agent状态。
注意
状态同步需要1-2分钟时间,若长时间后半托管Agent状态仍不可用,请先检查a.部署zms-master服务的机器可联通公网;b.zms-master服务启动成功后,联系天翼云技术人员处理。
代理的限制与约束
额度限制
代理的任务数量限制:每个代理上最多可以下发50个迁移任务,超过限额请新建代理或删除不需要的任务后,再下发新任务。
代理的并发任务数量限制:每个代理最多可同时执行12个迁移任务(zms-master服务配置文件中修改),超过限制的任务将会排队。
使用限制
工作节点数量:建议单个迁移集群内worker节点的数量不超过10个为最佳。
失败对象列表文件的存放限制:失败对象列表文件最多存放10万个失败对象,但任务重试可重试所有失败对象。例如:您本次任务有失败对象12万个,您在失败对象列表文件中只能查询到10万个失败对象,但您对该任务进行失败重试,迁移任务会重试迁移失败的全部12万个对象。
运行代理的资源占用:代理执行迁移任务时,会占用部署机器的CPU、内存、网络带宽等资源,请确保部署机器上没有您的其他业务系统,避免影响业务。
注意事项
zms-master服务第一次启动时必须在配置文件中填写注册码,后续填不填均可。
半托管Agent服务启动后,ZMS服务的控制台需要1-2min时间才能同步状态,您可以在“对象存储迁移-迁移任务-代理列表”中查看已部署代理的状态。
修改半托管Agent服务配置文件后,需要重启对应的服务,配置才能生效。
若代理某个工作节点始终处于“错误”状态,请按如下步骤排查:
检查该节点zms-worker服务状态
检查该节点与zms-master服务节点网络联通性(注意是否有安全组、防火墙阻止相关端口访问)
为了防止非预期的任务自动执行,zms-master服务重启后,该半托管Agent上所有正在执行的任务状态(包含:“排队中”、“迁移中”)都会被置为 “暂停” 状态。
任务状态变为 “任务结束 | 存在失败对象” 后,失败对象列表的文件上传到目的桶中需要一定耗时。若长时间后目的桶中仍没有失败对象列表的文件,可能有如下两种情况:
生成成功但上传失败:失败列表文件可以在代理的zms-master服务节点安装目录ZMS-failed-files文件夹下找到;
生成失败:本地与目的桶均没有该任务的失败列表文件。
无论何种情况,该任务均可重试,重试仅上传上次执行失败的对象。
请勿随意删除zms-agent安装目录下的文件,否则可能造成该代理不可用。
若出现zms-master服务启动失败,报错为网络问题造成的 “Error when starting ZMS_Master: Connect to RabbitMQ failed.”,可稍等两分钟后进行重新启动,若长时间后重启仍失败,请联系天翼云技术人员处理。
若出现zms-worker服务长时间占用内存过高的情况,可以通过重启zms-worker服务解决。
迁移服务传输信息都会进行加密处理,但为了避免其他人伪造您的Agent登录造成信息被恶意盗用的情况,每次下发任务前,请确保您自己部署的Agent在正常运行。
运行日志:代理运行日志保存在安装目录log文件夹下,联系天翼云技术人员处理问题时请提供该目录。
部署代理节点时,请务必正确配置 master_addr 与 work_addrs 两个核心参数,参数配置错误将直接导致 zms-master 与 zms-worker 间的通信链路异常,进而影响整个集群的正常运行。若 work_addrs 参数配置有误,zms-worker 节点将无法与主节点 zms-master 建立连接,导致主从节点通信彻底中断;若 master_addr 参数配置错误,即使 zms-worker 节点完成数据迁移任务,也无法向主节点上报任务的实际执行状态,造成任务状态丢失或同步异常。