更新时间:2026-08-06 GMT+08:00
分享

鲲鹏移植旅程

什么是鲲鹏移植旅程

迁移中心构建结构化的鲲鹏主机移植流程,将迁移过程拆分为资源调研、迁移批次管理、迁移实施三大阶段。每个阶段集成源端采集、资源清单和创建批次、选择迁移批次、目的端规格推荐以及目的端软件安装等子步骤,并支持“手动采集”“迁移中心 Agent批量采集”两种方式获取源端资源,提供迁移批次管理、目的端规格推荐、应用软件推荐和配置等能力,实现鲲鹏主机移植流程的标准化、自动化与可视化,有效降低操作复杂度并提升迁移效率。需要注意的是,鲲鹏移植不涉及数据同步,仅在目的端安装兼容的源端软件。

鲲鹏移植旅程提供两种源端资源采集方式,适用场景说明参见表1

表1 采集方式和适用场景

采集方式

适用场景说明

手动采集

适用于源端待迁移主机数量少于50台的迁移场景。使用时需先将采集脚本下载至源端主机,再以root用户身份执行该脚本。

迁移中心Agent(简称MgC Agent)批量采集

说明:

即将上线,敬请期待。

适用于源端待迁移主机数量不少于50台的迁移场景。此方式需要在源端网络环境中单独准备一台用于安装MgC Agent的Windows主机。

约束与限制

类别

约束与限制

手动采集

  • 仅支持采集Linux系统,不支持采集Windows和MacOs系统。支持采集的操作系统和版本请参见支持采集和迁移的系统列表
  • 不支持采集Docker容器内部署的应用。
  • 以非root用户身份执行脚本时,无法采集root目录下的应用程序;此外,由于部分/proc/[pid]/目录无法读取,会导致进程信息采集不完整。
  • 不支持无常驻进程的二进制解压应用、不带版本号的JAR包以及未安装在预设目录的源码编译应用,且Java应用仅能通过-jar参数识别。
  • 被采集机器的Python版本需在3.5.0及以上。
  • 支持解析的应用版本号请参见支持解析的应用版本号格式

迁移批次管理

  • 同一台主机只能添加到一个批次内。
  • 一个批次最多添加100台主机。
  • 同一旅程最多支持创建10个迁移批次。

目的端评估推荐

  • 评估的目的端主机磁盘大小不小于源端磁盘的大小。
  • 评估的目的端镜像OS类型为Huawei Cloud Euler 2.0。
  • 评估推荐的虚拟机规格在目的端Region配额充足,且为鲲鹏架构。

迁移

  • 鲲鹏移植不涉及数据同步,仅为目的端安装兼容的源端软件。支持Nginx,Jenkins等常用软件。软件是否支持,请在获取资源清单后,以资源列表中的可迁移软件列的信息为准。
  • 鲲鹏移植不支持在目的端安装同一软件的多个版本。若源端存在同一软件的多个版本,需要在“应用软件推荐&配置”页面删除重复项,仅保留一个版本。
  • 迁移开始后,不能关闭或者重启目的端主机,否则会导致迁移失败,需要重新迁移。

网络

请保证目的端与华为开源镜像站能够正常通信,目的端网络需要符合以下任一条件:

支持采集和迁移的系统列表

表2 支持采集的Linux系统类型和版本

系统类型

版本

CentOS

CentOS 6.8及以上

CentOS 7.x

CentOS 8.x

CentOS Stream 8/9/10

Ubuntu

Ubuntu Server 16.04

Ubuntu Server 18.04

Ubuntu Server 20.04

Ubuntu Server 22.04

Ubuntu Server 24.04

支持解析的应用版本号格式

表3 支持解析的应用版本号格式及样例

版本号格式

样例

版本号-修订号ubuntu版本代号

1.24.0-2ubuntu7.1、2.4.58-1ubuntu8.1

版本号-修订号+deb版本u更新号

1.14.2-2+deb10u4

版本号-发布号.系统标识

1.14.1-9.module_el8.0.0+184+e34fea82、1.20.1-10.el7

版本号-修订号~系统标识

1.26.1-1~jammy、2.4.54-1~deb11u1

版本号-修订号.修订号.系统标识

2.440.2-1.1.noarch

版本号

2.414.3

计费说明

迁移中心MgC和鲲鹏移植旅程本身均不收费,但在进行迁移时,会使用到弹性云服务器ECS、弹性公网EIP等相关服务,会产生相应费用。

如果选择旅程提供的“通过系统评估后进行购买”方式进行迁移时,系统将在华为云上创建一个按需计费的弹性云服务器ECS。关于ECS的详细计费说明,请参见ECS 按需计费

在迁移过程中会产生一些流量,流量的费用计算如下:

  • 如果是公网迁移,且您源端是固定带宽的,那么流量将不会产生额外费用。
  • 如果是公网迁移,且您源端是按量付费的,那么流量费用为:流量单价(元/GB)* 迁移量(GB)。关于流量单价,请咨询源端服务器公网IP的提供商。关于迁移量,为您源端服务器磁盘的实际使用量。

    假设弹性公网IP按流量收费,单价为0.8元/GB,磁盘大小500GB,磁盘占用了300GB,那么流量费用为 0.8元/GB * 300GB = 240元。需要注意该费用为您源端服务器弹性公网IP的提供商收取。

操作流程

创建鲲鹏主机移植旅程的完整操作流程,请参见表 创建鲲鹏主机移植旅程操作流程

表4 创建鲲鹏主机移植旅程操作流程

步骤

说明

准备工作

  • 账号和权限准备:提前获取源端待迁移主机的登录账号,以及目的端华为云的迁移账号与权限。
  • 检查源端配置:检查源端服务器配置是否满足迁移要求。
  • 准备安装迁移中心Agent的主机:若待迁移主机数量不少于50台,则需按要求在源端网络环境中准备一台Windows主机。
    说明:
    • 如果源端主机是通过“手动采集”方式采集而来,迁移此类主机不依赖迁移中心Agent,因此无需准备用于安装迁移中心Agent的主机。
    • 如果源端待迁移主机数量小于50台,推荐使用“手动采集”方式执行源端采集。通过手动采集时,无需准备用于安装迁移中心Agent的主机。
  • 创建应用迁移项目:在获取目的端华为云账号和权限后,需要在迁移中心MgC控制台创建用于服务器批量迁移的项目。
  • 检查系统兼容性:检查源端待迁移主机的操作系统类型和版本是否在支持迁移的系统列表中。
  • 检查源端软件兼容性:检查源端待迁移软件的版本是否在支持迁移的软件列表中。
  • (可选)购买目的端服务器:根据源端服务器规格,提前在华为云弹性云服务器购买目的端服务器。
  • 目的端网络配置:若要通过内网访问华为开源镜像网站,需提前为目的端服务器的VPC配置终端节点。若要通过公网访问,则需为目的端主机购买弹性公网IP。

步骤一:创建鲲鹏移植旅程

创建鲲鹏移植旅程。该步骤仅创建了旅程模板,您还需要完成资源调研、迁移批次管理、迁移实施三大阶段的参数配置,才可启动迁移。

步骤二:配置旅程并实施迁移

根据旅程的流程指引,依次完成资源调研、迁移批次管理、迁移实施三大阶段,便可快速实现鲲鹏主机迁移。

准备工作

在创建鲲鹏主机批量移植任务之前,请参照表5提前完成准备工作。

表5 准备事项的方法和要求

事项

方法和要求

获取源端服务器凭证

请提前获取源端服务器的登录账号和密码,以便进行主机深度采集,为系统推荐目的端规格提供必要信息和数据。账号的权限要求使用具有root权限的账号。

注册目的端华为云账号并配置权限

  1. 注册华为账号开通华为云并完成实名认证。如果您已开通华为云并进行实名认证,请忽略此步骤
    1. 访问华为云,单击“注册”。
    2. 根据提示信息完成注册开通,详细操作请参见注册华为账号并开通华为云
    3. 完成个人或企业账号实名认证。
  2. 创建IAM用户并授权。如果您使用华为账号(管理员账号)进行迁移,则跳过该步骤。
    1. 创建IAM用户。创建方法请参考创建IAM用户创建IAM用户(新版)
    2. 参考基于角色与策略的IAM用户自定义权限基于身份策略的IAM用户自定义权限(新版)中的“迁移旅程(新版)> 鲲鹏移植旅程”创建相应的自定义策略并为IAM用户授权。授权方法请参考给IAM用户授权给IAM用户授权(新版)

检查源端服务器配置

源端服务器需满足特定条件,以便迁移中心Agent能够顺利执行采集和迁移任务。源端服务器需要满足的条件,请参见源端主机要求

(即将上线)准备安装迁移中心Agent的主机

说明:

若待迁移主机数量不少于50台,则需要按要求准备。若源端待迁移主机数量小于50台,推荐使用脚本采集源端,则无需准备。

在源端环境中准备一台用于安装迁移中心Agent(MgC Agent)的Windows主机,并确保该主机满足以下要求:

  • 操作系统版本为:Windows Server 2016/Windows Server 2019/Windows Server 2022/Windows 10/Windows 11。
  • PowerShell 版本在3.0及以上。
  • 推荐规格不小于4U8G
  • 安装MgC Agent的磁盘(默认为C盘)预留可用空间不小于20 GB。
  • 可以连接外网(公网),并检查是否能够访问MgC和IoTDA服务的域名,具体需要检查的域名请查看域名列表
  • 检查是否已开放MgC Agent需要的端口,所需端口请查看通信矩阵
  • 安全组的出方向规则中,需要包含8883端口。
  • 关闭该主机上的杀毒、防护类软件,该类软件会拦截MgC Agent的执行,导致迁移任务执行失败。
注意:

不建议将MgC Agent安装在源端待迁移的主机上,主要原因包括:

  • 资源消耗:MgC Agent在采集和迁移运行过程中会消耗CPU和内存资源。在迁移任务量大时,这可能会对源端的业务运行造成影响。
  • 端口占用:MgC Agent会占用源端主机上的一些端口,也可能会对源端业务产生影响。

创建应用迁移项目

创建独立的迁移项目,将不同的操作场景进行区分和隔离,从而实现更好的组织管理和资源分配。具体操作,请参见创建应用迁移项目

检查源端主机系统兼容性

请检查源端主机的操作系统是否在鲲鹏移植旅程支持迁移的系统列表中。详情请参见支持采集和迁移的系统列表

(可选)购买目的端服务器

目的端配置提供了“绑定已有目的端”和“通过系统评估后自动购买”两种方式来指定目的端服务器。在进行目的端配置时,您可以选择这两种方式之一。

  • 如果您选择“绑定已有目的端”进行迁移,则需要提前根据源端服务器的规格,在华为云ECS上购买目的端服务器,并配置虚拟私有云、安全组和弹性公网IP等。购买方法请参考快速购买ECS
  • 如果您选择“通过系统评估后自动购买”,则可以通过系统自动购买目的端服务器,无需提前购买。

目的端网络配置

鲲鹏迁移软件安装需要访问华为开源镜像网站,您可以选择这两种方式之一进行网络配置。

  • 若要通过内网访问华为开源镜像网站,需要提前给目的端服务器的VPC配置连通华为云内网的终端节点。配置方法参考配置内网访问华为开源镜像站的终端节点
  • 若要通过公网访问请为目的端主机配置弹性公网IP。

步骤一:创建鲲鹏移植旅程

  1. 登录迁移中心管理控制台。在左侧导航栏的项目下拉列表中选择创建的应用迁移项目
  2. 在左侧导航栏,单击“迁移旅程”,进入“迁移旅程”页面。
  3. “创建迁移旅程”区域,单击“鲲鹏移植旅程”卡片上的“创建旅程”按钮,弹出“创建旅程”窗口。系统会默认按照“任务类型-时间”规则自动生成名称,您也可以自定义旅程名称。
  4. 单击“确认”按钮后,鲲鹏移植旅程任务创建完成,系统将自动进入“旅程详情”页面的“资源调研”阶段开始配置旅程。

步骤二:配置旅程并实施迁移

根据旅程的流程指引,依次完成资源调研、迁移批次管理、迁移实施等阶段内的子步骤配置,便可快速实现主机迁移。

配置内网访问华为开源镜像站的终端节点

华为开源镜像站由华为云CodeArts团队开发及维护,致力于打造一站式DevOps工具云服务,让软件开发更简单。镜像站提供多种类别的软件安装源和ISO下载服务,涵盖Maven、npm、PyPI等8大语言镜像,Ubuntu、CentOS、Debian等40余种操作系统镜像,以及MySQL、Nginx等常用工具镜像,为您提供全面、高速、可靠的组件下载服务。

鲲鹏迁移过程中需要访问华为开源镜像站下载相应软件安装包及其依赖项,因此需确保目的端机器与华为开源镜像仓库的网络连通性。若目的端无法配置公网IP,华为云镜像站为云上用户提供免费的内网访问通道,用户需接入镜像站的终端节点服务。

仅限以下区域使用:华东-上海一、华东-上海二、华南-深圳、西南-贵阳一、华北-乌兰察布一、华北-北京一、华北-北京四、华南-广州。

  1. 登录华为云终端节点管理控制台
  2. 单击页面右上角的“购买终端节点”按钮,进入“购买终端节点”页面。
  3. 在购买页面进行如下配置:

    1. 选择所在区域。
    2. 服务类别保持默认的“云服务”即可。
    3. 选择服务:在选择服务搜索框内搜索 “com.huaweicloud.repo”后选择对应的服务。镜像站终端节点服务的实例名为:com.huaweicloud.repo。
    4. 保持默认勾选“创建内网域名”,即在当前VPC下创建内网域名:repo.huaweicloud.com。
    5. 选择需要访问镜像站的VPC及其子网。

  4. 单击右下角的“立即购买”按钮,跳转至信息核对界面。
  5. 信息核对无误后,单击“提交”按钮,即可成功创建终端节点。返回终端节点列表,在列表查看成功创建的终端节点。

校验手动采集脚本包完整性

  1. 使用root用户登录用于执行采集脚本的Linux主机。
  2. 从华为云Support网站下载根CA证书(HuaweiSoftwareIntegrityProtectionRootCA.der)到本地。
  3. 在鲲鹏移植旅程中的“源端采集”界面,将采集脚本tar包、CMS和CRL文件下载到一个源端主机的空目录下(例如:/tmp/cmsVerify)。请注意,文件命名要和下图一致。

  4. 新建“/tmp/cmsVerify/verify.sh”文件,并将以下内容复制到该文件中。

    workDir=$1
    
    function cmsVerify() {
    	packageName="KunPeng-App-Discovery-Tool.tar.gz"
    	packageFilePath=${workDir}/${packageName}
    	cmsFilePath=${workDir}/${packageName}.cms
    	crlFilePath=${workDir}/${packageName}.cms.crl
    	rootCaFilePath=${workDir}/"Huawei Software Integrity Protection Root CA.der"
    	tmpDir=tmp_$(date +"%Y%m%d%H%M%S")
    	mkdir -p ${workDir}/${tmpDir}
    
    	echo "tmpPath: ${workDir}/${tmpDir}"
    
    	# get sign time
    	lineNum=`openssl asn1parse -inform DER -in ${cmsFilePath} | grep -n ':signingTime' | sed -n '2p' | cut -d: -f1`
    	echo "lineNum: ${lineNum}"
    	timeLineNum=$(($lineNum+2))
    	timeLine=`openssl asn1parse -inform DER -in ${cmsFilePath} | sed -n "${timeLineNum}p" | awk -F ':' '{print $4}'`
    	signTimestap=`date -d "20${timeLine:0:2}-${timeLine:2:2}-${timeLine:4:2} ${timeLine:6:2}:${timeLine:8:2}:${timeLine:10:2} UTC" +%s`
    	echo "signTimestap: ${timeLine} ${signTimestap}"
    	# split the CRL file and obtain all revocation lists
    	handledLen=0
    	echo "start handle crl file"
    	asn1ParseResult=`openssl asn1parse -in ${crlFilePath} -inform DER`
    	for i in {1..1000}
    	do
    		fileHead=`printf "%s" "${asn1ParseResult}" | grep "^[[:space:]]*${handledLen}:d=" | xargs`
    		if [[ -z "$fileHead" ]]; then
    			echo "crl file is end"
    			break;
    		fi
    		echo "find file head info: ${fileHead}"
    		headLen=`echo ${fileHead} | awk -F '=' '{print $3}' | grep -oP '[0-9]+'`
    		contLen=`echo ${fileHead} | awk -F '=' '{print $4}' | grep -oP '[0-9]+'`
    		totalLen=$(($headLen+$contLen))
    		# extract CRL fragment
    		dd if=${crlFilePath} status=none bs=1 skip=${handledLen} count=${totalLen} | openssl crl -inform DER -outform PEM -out ${workDir}/${tmpDir}/tmp.pem > /dev/null 2>&1
    		if [ $? -eq 0 ]; then
    			cat ${workDir}/${tmpDir}/tmp.pem >> ${workDir}/${tmpDir}/crl.pem
    			echo "convert to crl pem success!"
    		else
    			echo "not crl format"
    		fi
    		handledLen=$(($totalLen+$handledLen))
    	done
    	echo "handle crl file finish"
    
    	# convert root CA format to CER
    	openssl x509 -inform der -in "${rootCaFilePath}" -out "${workDir}/${tmpDir}/rootCa.cer"
    
    	# verify the integrity of the software package and obtain the certificate chain
    	echo "start verify cms"
    	openssl cms  -verify -attime ${signTimestap} -inform DER  -in ${cmsFilePath}  -content ${packageFilePath}  -CAfile "${workDir}/${tmpDir}/rootCa.cer"  -out "${workDir}/${tmpDir}/cmsVerifiedData" -binary -purpose any  -certsout "${workDir}/${tmpDir}/cmsCertChain.pem"
    	if [ $? -eq 0 ]; then
    		echo "verify cms success!!!"
    	else
    		echo "verify cms failed!!!"
    		return 103
    	fi
    
    
    	# verify the validity of the certificate chain
    	echo "start verify cert chain"
    	openssl verify -attime ${signTimestap} -crl_check -CAfile "${workDir}/${tmpDir}/rootCa.cer" -untrusted "${workDir}/${tmpDir}/cmsCertChain.pem" -CRLfile "${workDir}/${tmpDir}/crl.pem" "${workDir}/${tmpDir}/cmsCertChain.pem"
    	if [ $? -eq 0 ]; then
    		echo "verify cert chain success!!!"
    	else
    		echo "verify cert chain failed!!!"
    		return 104
    	fi
    	return 0
    }
    
    cmsVerify
    if [ $? -eq 0 ]; then
    	echo -e "\e[32mverify success!!!\e[0m"
    else
    	echo -e "\e[31mverify failed!!!\e[0m"
    	exit
    fi

  5. 执行如下命令进行CMS验签。请注意,根据实际的文件目录进行替换。

    bash /tmp/cmsVerify/verify.sh "/tmp/cmsVerify"

  6. 如果最后一行输出“verify success!!!”则表示验签成功,否则验签失败。

删除鲲鹏移植旅程

若要删除鲲鹏移植旅程,需要满足以下条件之一:

  • 在鲲鹏移植旅程中,如果所有迁移批次均未启动目的端软件安装,可在迁移旅程列表中直接单击操作列的“删除”按钮,删除该旅程。
  • 在鲲鹏移植旅程中,如果所有迁移批次中的主机状态均为“已完成”,可在迁移旅程列表中直接单击“删除”按钮,删除该旅程。
  • 在鲲鹏移植旅程中,如果存在已启动目的端软件安装但状态非“已完成”的主机,需先在“目的端软件安装”页面删除未完成的主机,或在“资源清单&创建批次”中将对应主机移出批次。确认旅程中所有批次均没有已启动软件安装但未完成的主机后,方可在迁移旅程列表中单击“删除”按钮,删除该旅程。

相关文档