操作指南

最佳实践

运维指南

API 文档

在线迁移工具使用指引

最近更新时间:2020-08-15 17:00:21

概述

在线迁移是指在系统不停机的情况下,将服务器或虚拟机上的系统、服务程序等从自建机房(IDC)或云平台等源环境迁移同步至腾讯云。
腾讯云提供 go2tencentcloud 迁移工具,在待迁移的源端主机上执行迁移工具后,源端主机即可整机迁移至腾讯云的目标云服务器。该迁移工具可免除制作镜像、上传并导入镜像的繁琐,从源端直接迁移上云,方便实现企业上云、跨云平台迁移、跨账号/区域迁移或部署混合云等业务需求。

迁移工具说明

支持的迁移模式

默认模式

如果您的源端主机和目标云服务器都具有公网访问能力,则可以使用默认模式进行迁移。
在目前的默认模式中,源端主机通过互联网访问腾讯云 API 发起迁移请求,并向目标云服务器传输数据,将源端主机迁移至腾讯云的目标云服务器。

内网迁移模式

如果您的源端主机或目标云服务器处于某个内网或 VPC 中,源端主机不能通过互联网直接与目标云服务器建立连接,则可以使用工具的内网迁移模式进行迁移。内网迁移模式需要通过使用如 VPC 对等连接VPN 连接云联网 或者 专线接入 等方式建立源端主机与目标云服务器的连接通道。

  • 场景1:如果您的源端主机或目标云服务器不能访问公网,则可以先通过一台拥有公网访问能力的主机(如网关)以互联网方式访问腾讯云 API 发起迁移请求,再通过连接通道向目标云服务器传输数据进行迁移。此场景不要求对源端主机和目标云服务器具有公网访问能力。
  • 场景2:如果您的源端主机可以访问公网,则可以先在源端主机上通过互联网访问腾讯云 API 发起迁移请求,再通过连接通道向目标云服务器传输数据进行迁移。此场景要求对源端主机具有公网访问能力,而目标云服务器则不要求。
  • 场景3:如果您的源端主机可以通过代理访问公网,则可以先在源端主机上通过网络代理访问腾讯云 API 发起迁移请求,再通过连接通道向目标云服务器传输数据进行迁移。此场景不要求对源端主机和目标云服务器具有公网访问能力。

支持的操作系统

目前在线迁移工具支持的源端主机操作系统包括但不限于以下操作系统(32位或64位均可):

Linux 操作系统Windows 操作系统
CentOS 5/6/7/8-
Ubuntu 10/12/14/16/18
Debian 7/8/9
SUSE 11/12/15
openSUSE 42
Amazon Linux AMI
Red Hat 7/8

压缩包文件说明

文件名说明
go2tencentcloud_x6464位 Linux 系统的迁移工具可执行程序。
go2tencentcloud_x3232位 Linux 系统的迁移工具可执行程序。
user.json迁移时源端主机和目标云服务器的配置文件,请根据 user.json 文件参数说明 修改配置。
client.json迁移工具的配置文件,请根据 client.json 文件参数说明 修改配置。
rsync_excludes_linux.txtrsync 配置文件,排除 Linux 系统下不需要迁移的文件目录。
说明:

不能删除配置文件,并请将配置文件存放在和 go2tencentcloud 可执行程序同级目录下。

  • user.json 文件参数说明:

    参数名称类型是否必填说明
    SecretIdString账户 API 访问密钥 SecretId,详细信息请参考 访问密钥
    SecretKeyString账户 API 访问密钥 SecretKey,详细信息请参考 访问密钥
    RegionString目标云服务器的地域,只需填写地域,无需填写可用区,取值请参考 地域 列表。
    InstanceIdString目标云服务器的实例 ID,形如ins-xxxxxxxx
    DataDisksArray源端主机待迁移数据盘列表,每一个元素代表一块数据盘,最多支持20块数据盘。
    DataDisks.IndexInteger数据盘序号,取值范围[1,20],值为1代表该块数据盘将迁移至目标云服务器挂载的第一块数据盘,值为2代表迁移至目标云服务器挂载的第二块数据盘,以此类推。
    DataDisks.SizeInteger源端数据盘大小,单位GB,取值范围[10,16000]。
    DataDisks.MountPoint String源端数据盘挂载点,如"/mnt/disk1"
    例如,将一台 Linux 源端主机迁移至腾讯云广州地域的一台云服务器中,user.json 文件配置为以下内容:
    {  
      "SecretId": "your secretId",
      "SecretKey": "your secretKey",  
      "Region": "ap-guangzhou",  
      "InstanceId": "your instance id"
    }  
    说明:

    请将对应参数值替换为您实际的配置参数。

    例如,将一台 Linux 源端主机(包含一块数据盘,挂载点为 /mnt/disk1,大小为10GB)迁移至腾讯云广州地域的一台目标云服务器(至少挂载一块数据盘),user.json 文件配置为以下内容:

    {  
      "SecretId": "your secretId",
      "SecretKey": "your secretKey",  
      "Region": "ap-guangzhou",  
      "InstanceId": "your instance id",
      "DataDisks": [
          {
              "Index": 1,
              "Size": 10,
              "MountPoint": "/mnt/disk1"
          }
      ]
    }  

    例如,将一台 Linux 源端主机(包含两块数据盘,盘1挂载点为 /mnt/disk1,大小为10GB,欲迁移至目标云服务器的第一块数据盘,盘2挂载点为/mnt/disk2,大小为20GB,欲迁移至目标云服务器的第二块数据盘)迁移至腾讯云广州地域的一台目标云服务器(至少挂载两块数据盘),user.json 文件配置为以下内容:

    {  
      "SecretId": "your secretId",
      "SecretKey": "your secretKey",  
      "Region": "ap-guangzhou",  
      "InstanceId": "your instance id",
      "DataDisks": [
          {
              "Index": 1,
              "Size": 10,
              "MountPoint": "/mnt/disk1"
          },
          {
              "Index": 2,
              "Size": 20,
              "MountPoint": "/mnt/disk2"
          }
      ]
    }  
    说明:

    请将对应参数值替换为您实际的配置参数。

  • client.json 文件参数说明:

    参数名称类型是否必填说明
    Client.Net.ModeInteger默认值为0,取值范围:0默认模式)、1内网迁移模式:场景1)、2内网迁移模式:场景2)、3内网迁移模式:场景3),请根据您实际需要进行的不同模式/场景的迁移,填写相应的参数值。
    Client.Net.Proxy.IpString网络代理 IP 地址,如果您需要进行 内网迁移模式:场景3 的迁移,此项为必填参数。
    Client.Net.Proxy.PortInteger网络代理端口,如果您需要进行 内网迁移模式:场景3 的迁移,此项为必填参数。
    Client.Net.Proxy.UserString网络代理用户名,如果您需要进行 内网迁移模式:场景3 的迁移并且网络代理需要认证,请填写网络代理用户名。
    Client.Net.Proxy.PasswordString网络代理密码,如果您需要进行 内网迁移模式:场景3 的迁移并且网络代理需要认证,请填写网络代理密码。
    Client.Extra.IgnoreCheckBool默认值为false,迁移工具默认在工具开始运行时自动检查源端主机环境,如果需要略过检查,请设置为true
    Client.Rsync.BandwidthLimitString限速配置项,单位为KBytes/s,默认值为空,即默认传输时不限速。
    Client.Rsync.ChecksumBool传输校验项,设为true后可加强传输一致性校验,但会提高源端主机 CPU 负载和减慢传输速度。默认值为false,即默认不校验。

    说明:

    除了以上参数,client.json 文件剩余配置项通常无需填写。

  • rsync_excludes_linux.txt 文件说明:
    排除 Linux 源端主机中不需要迁移传输的文件,或指定目录下的配置文件。该文件中已经默认排除以下目录和文件,请勿删改

    /dev/*
    /sys/*
    /proc/*
    /var/cache/yum/*
    /lost+found/*
    /var/lib/lxcfs/*
    /var/lib/docker-storage.btrfs/root/.local/share/gvfs-metadata/*

    如果您需要排除其他目录和文件,请在该文件尾部追加内容。例如,排除挂载在/mnt/disk1的数据盘的所有内容。

    /dev/*
    /sys/*
    /proc/*
    /var/cache/yum/*
    /lost+found/*
    /var/lib/lxcfs/*
    /var/lib/docker-storage.btrfs/root/.local/share/gvfs-metadata/*
    /mnt/disk1/*

工具运行参数说明

参数选项 说明
--help 打印帮助信息。
--check 对源端主机进行检查,不进行迁移。
--log-file 设置日志文件名称,默认为log
--log-level 日志输出级别,取值范围为1(ERROR 级别),2(INFO 级别)和3(DEBUG 级别),默认值为2
--clean 目标云服务器强制退出迁移模式,清理现场。例如,如果控制台提示Please execute '--clean' option manually.,则需要使用此选项执行工具使目标云服务器退出迁移模式。
--version 打印版本号。

迁移前的检查

迁移前,需要分别检查源端主机和目标云服务器。源端主机和目标云服务器需要检查的内容如下:

目标云服务器
  1. 存储空间:目标云服务器的云硬盘(包括系统盘和数据盘)必须具备足够的存储空间用来装载源端的数据。
  2. 安全组:安全组中不能限制443端口和80端口。
  3. 带宽设置:建议尽可能调大两端的带宽,以便更快迁移。迁移过程中,会产生约等于数据量的流量消耗,如有必要请提前调整网络计费模式。
  4. 目标云服务器和源端主机的操作系统类型是否一致:操作系统不一致会造成后续制作的镜像的信息与实际操作系统不符,建议目标云服务器的操作系统尽量和源端主机的操作系统类型一致。例如,CentOS 7 系统的对源端主机迁移时,选择一台 CentOS 7 系统的云服务器作为迁移目标。
Linux 源端主机
  1. 检查和安装 Virtio,操作详情可参考 Linux 系统检查 Virtio 驱动
  2. 检查是否安装了 rsync,可执行 which rsync 命令进行验证。
  3. 检查 SELinux 是否已打开。如果 SELinux 已打开,请关闭 SELinux。
  4. 向腾讯云 API 发起迁移请求后,云 API 会使用当前 UNIX 时间检查生成的 Token,请确保当前系统时间无误。
说明:

  • 源端主机检查可以使用工具命令自动检查,如 sudo ./go2tencentcloud_x64 --check
  • go2tencentcloud 迁移工具在开始运行时,默认自动检查。如果需要略过检查强制迁移,请将 client.json 文件中的Client.Extra.IgnoreCheck字段配置为true

迁移步骤

腾讯云提供的 go2tencentcloud 迁移工具将整个迁移过程主要划分为以下三个阶段,用户可以在工具运行过程中直观的了解迁移的进度。

  • 阶段1:目标云服务器进入迁移模式,准备迁移
  • 阶段2:目标云服务器处于迁移模式,迁移数据中
  • 阶段3:目标云服务器退出迁移模式,迁移完成

每个阶段均会产生一些子任务去执行相关操作,部分耗时的子任务还将具有默认的最大超时时间。由于传输数据耗时受源端数据大小,网络带宽等因素影响,请耐心等待迁移流程的完成。迁移工具支持数据传输的断点续传。

注意:

开始迁移后目标云服务器将进入迁移模式,请不要对目标云服务器进行重装系统、关机、销毁、重置密码等操作,直至迁移完成退出迁移模式。

默认模式的迁移步骤

  1. 在 user.json 文件配置目标云服务器。
    请按照 user.json 文件参数说明 配置必填项和所需项的值。
  2. 在 client.json 文件配置迁移模式和其他项。
    将 client.json 文件里的Client.Net.Mode项设置为0,即进行 默认模式 迁移。此外,如果还需要进行其他项设置,请按照 client.json 文件参数说明 进行配置。
  3. 排除源端主机上不需迁移的文件或目录。(可选)
    在 Linux 源端主机迁移时,如果需要排除一些不需迁移的文件或目录,可以将这些不需要迁移的文件或目录追加至 rsync_excludes_linux.txt 文件 中。
  4. 运行工具。
    例如,在64位 Linux 源端主机下,以 root 权限执行以下命令运行工具。
    sudo ./go2tencentcloud_x64
    如果运行工具时需要设置日志文件名和日志输出级别,可执行以下命令。
    sudo ./go2tencentcloud --log-file=my.log --log-level=3
    工具运行后,请耐心等待迁移流程的完成。
    一般默认模式下,迁移成功的控制台输出如下:

内网迁移模式的迁移步骤

场景1的迁移步骤

  1. 建立源端主机和目标云服务器的连接通道。
    通过 VPC 对等连接 / VPN 连接 / 云联网 等方式,建立源端主机和目标云服务器的连接通道。
  2. 在 user.json 文件配置目标云服务器。
    请按照 user.json 文件参数说明 配置必填项和所需项的值。
  3. 在 client.json 文件配置迁移模式和其他项。
    将 client.json 文件里的Client.Net.Mode项设置为1,即进行 内网迁移模式:场景1 的迁移。此外,如果还需要进行其他项设置,请按照 client.json 文件参数说明 进行配置。
  4. 排除源端主机上不需迁移的文件或目录。(可选)
    在 Linux 源端主机迁移时,如果需要排除一些不需迁移的文件或目录,可以将这些不需要迁移的文件或目录追加至 rsync_excludes_linux.txt 文件 中。
  5. 在一台可以访问公网的主机(如网关)上运行工具。
    例如,在一台可以访问公网的主机上执行以下命令运行工具,进行阶段1的迁移。
    sudo ./go2tencentcloud_x64
    若提示Stage 1 is finished and please run next stage at source machine.,则说明阶段1已完成。
  6. 在待迁移的源端主机上运行工具。
    步骤5(即阶段1)完成后,需先将阶段1的整个工具目录拷贝至待迁移的源端主机,再运行工具进行阶段2的迁移。
    例如,执行以下命令运行工具,进行阶段2的迁移。
    sudo ./go2tencentcloud_x64
    若提示Stage 2 is finished and please run next stage at gateway machine.,则说明阶段2已完成。
  7. 在一台可以访问公网的主机(如网关)上运行工具。
    步骤6(即阶段2)完成后,需先将阶段2的整个工具目录拷贝至刚才阶段1的主机,再运行工具进行阶段3的迁移。
    例如,执行以下命令运行工具,进行阶段3的迁移。
    sudo ./go2tencentcloud_x64
    若提示Migrate successfully.,则说明整个迁移任务已完成。

场景2的迁移步骤

  1. 建立源端主机和目标云服务器的连接通道。
    通过 VPC 对等连接 / VPN 连接 / 云联网 等方式,建立源端主机和目标云服务器的连接通道。
  2. 在 user.json 文件配置目标云服务器。
    请按照 user.json 文件参数说明 配置必填项和所需项的值。
  3. 在 client.json 文件配置迁移模式和其他项。
    将 client.json 文件里的Client.Net.Mode项设置为2,即进行 内网迁移模式:场景2 的迁移。此外,如果还需要进行其他项设置,请按照 client.json 文件参数说明 进行配置。
  4. 排除源端主机上不需迁移的文件或目录。(可选)
    在 Linux 源端主机迁移时,如果需要排除一些不需迁移的文件或目录,可以将这些不需要迁移的文件或目录追加至 rsync_excludes_linux.txt 文件 中。
  5. 运行工具。
    例如,在64位 Linux 源端主机下,以 root 权限执行以下命令运行工具。
    sudo ./go2tencentcloud_x64
    工具运行后,请耐心等待迁移流程的完成。
    一般迁移成功的控制台输出如下:

场景3的迁移步骤

  1. 建立源端主机和目标云服务器的连接通道。
    通过 VPC 对等连接 / VPN 连接 / 云联网 等方式,建立源端主机和目标云服务器的连接通道。
  2. 在 user.json 文件配置目标云服务器。
    请按照 user.json 文件参数说明 配置必填项和所需项的值。
  3. 在 client.json 文件配置迁移模式和其他项。
    1. 将 client.json 文件里的Client.Net.Mode项设置为3,即进行 内网迁移模式:场景3 的迁移。
    2. 将 client.json 文件里的Client.Net.Proxy.IpClient.Net.Proxy.Port项设置为网络代理的 IP 地址和端口。
      如果您的网络代理还需要认证,请在Client.Net.Proxy.UserClient.Net.Proxy.Password项填写网络代理的用户名和密码;如果不需要认证,则不填。此外,如果您还需要进行其他项设置,请按照 client.json 文件参数说明 进行配置。
  4. 排除源端主机上不需迁移的文件或目录。(可选)
    在 Linux 源端主机迁移时,如果需要排除一些不需迁移的文件或目录,可以将这些不需要迁移的文件或目录追加至 rsync_excludes_linux.txt 文件 中。
  5. 运行工具。
    例如,在64位 Linux 源端主机下,以 root 权限执行以下命令运行工具。
    sudo ./go2tencentcloud_x64
    工具运行后,请耐心等待迁移流程的完成。
    一般迁移成功的控制台输出如下:

迁移后的检查

  1. 如果迁移结果失败,请检查日志文件(默认为迁移工具目录下的 log 文件)的错误信息输出、指引文档或者 服务迁移类 FAQ 进行排查和修复问题。
  2. 如果迁移结果成功,请检查目标云服务器能否正常启动、目标云服务器数据与源端主机是否一致、网络是否正常或者其他系统服务是否正常等等。
  3. 如有任何疑问、迁移异常等问题请查看 服务迁移类 FAQ 或者 联系我们 解决。
目录