发现、评估 Amazon Web Services (AWS) VM 并将其迁移到 Azure

注意

本文引用了 CentOS,这是一个接近生命周期结束状态的 Linux 发行版。 请相应地考虑你的使用和规划。

本教程介绍如何使用“Azure Migrate: 服务器评估”和“Azure Migrate 和服务器迁移”工具来发现、评估 Amazon Web Services (AWS) 虚拟机 (VM) 并将其迁移到 Azure VM。

注意

将 AWS VM 迁移到 Azure 的方式与迁移物理服务器相同。

本教程介绍如何执行下列操作:

  • 验证迁移的先决条件。
  • 准备要使用“Azure Migrate 和服务器迁移”工具进行迁移的 Azure 资源。 设置要与 Azure Migrate and Modernize 配合使用的 Azure 帐户和资源的权限。
  • 让 AWS Elastic Compute Cloud (EC2) 实例做好迁移准备。
  • 在“Azure 迁移和现代化”中心添加“Azure Migrate 和服务器迁移”工具。
  • 设置复制设备并部署配置服务器。
  • 在要迁移的 AWS VM 上安装出行服务。
  • 为 VM 启用复制。
  • 跟踪和监视复制状态。
  • 运行测试迁移,确保一切按预期正常进行。
  • 运行到 Azure 的完整迁移。

如果没有 Azure 订阅,请在开始前创建一个试用版订阅

发现和评估

建议你先执行 VM 发现和迁移评估,然后再迁移到 Azure。 该评估可帮助你适当调整要迁移到 Azure 的 AWS VM,并预估 Azure 可能的运行成本。

若要设置评估,请执行以下操作:

  1. 按照教程设置 Azure 并准备 AWS VM 进行评估。 请注意:

    • Azure 迁移和现代化使用密码验证来发现 AWS 实例。 AWS 实例默认不支持密码验证。 需要先启用密码验证,才能发现实例。
      • 对于 Windows 计算机,请允许 WinRM 端口 5985 (HTTP)。 这端口允许远程 WMI 调用。
      • 对于 Linux 计算机:
        1. 登录到每台 Linux 计算机。
        2. 打开 sshd_config 文件:vi /etc/ssh/sshd_config
        3. 在文件中,定位到 PasswordAuthentication 行,然后将值改为 yes
        4. 保存文件并将其关闭。 重启 ssh 服务。
    • 如果使用根用户来发现 Linux VM,请确保 VM 上允许根登录。
      1. 登录到每台 Linux 计算机。
      2. 打开 sshd_config 文件:vi /etc/ssh/sshd_config
      3. 在文件中,定位到 PermitRootLogin 行,然后将值改为 yes
      4. 保存文件并将其关闭。 重启 ssh 服务。
  2. 然后,按照此教程设置 Azure Migrate 项目和设备,以发现和评估 AWS VM。

尽管建议你尝试进行评估,但执行评估并不是迁移 VM 的必需步骤。

先决条件

  • 确保要迁移的 AWS VM 正在运行受支持的操作系统 (OS) 版本。 出于迁移目的,AWS VM 被视为迁移的物理计算机。 请参阅受支持的操作系统和内核版本,了解物理服务器迁移工作流。 可以使用标准命令(如 hostnamectluname -a)检查 Linux VM 的 OS 和内核版本。 建议执行测试性迁移(测试性故障转移),验证 VM 是否按预期运行,然后再继续迁移。
  • 要迁移到 Azure,请确保 AWS VM 符合支持的配置
  • 验证复制到 Azure 的 AWS VM 是否符合 Azure VM 要求
  • 将 VM 迁移到 Azure 之前,需要在 VM 上进行一些更改:
    • 对于某些操作系统,Azure Migrate and Modernize 可自动做出这些更改。
    • 在开始迁移之前,必须做出这些更改。 如果在做出更改之前迁移 VM,VM 可能无法在 Azure 中启动。 查看在 WindowsLinux 上需要进行的更改。

让 Azure 资源准备好进行迁移

准备 Azure 以使用 Azure Migrate 和服务器迁移工具进行迁移。

任务 详细信息
创建 Azure Migrate 项目 Azure 帐户需要“参与者”或“所有者”权限才能创建新项目
验证 Azure 帐户的权限 Azure 帐户需要有权创建 VM 并将数据写入 Azure 托管磁盘。

分配创建项目的权限

  1. 在 Microsoft Azure 门户中打开订阅,然后选择“访问控制(IAM)”。
  2. 在“检查访问权限”中,找到相关帐户并选择它以查看权限。
  3. 你应该拥有“参与者”或“所有者”权限。
    • 如果你刚刚创建了试用版 Azure 帐户,那么你就是订阅的所有者。
    • 如果你不是订阅所有者,请让所有者分配该角色。

分配 Azure 帐户权限

将 VM 参与者角色分配给 Azure 帐户。 此角色提供了执行以下操作的权限:

  • 在所选资源组中创建 VM。
  • 在所选虚拟网络中创建 VM。
  • 写入 Azure 托管磁盘。

创建 Azure 网络

设置 Azure 虚拟网络。 复制到 Azure 时,所创建的 Azure VM 会加入到在设置迁移时指定的 Azure 虚拟网络。

让 AWS 实例准备好进行迁移

若要准备好进行 AWS 到 Azure 的迁移,需要准备和部署一个用于迁移的复制设备。

为复制设备准备计算机

“Azure Migrate 和服务器迁移”工具使用复制设备将计算机复制到 Azure。 复制设备运行以下组件:

  • 配置服务器:配置服务器会协调 AWS 环境与 Azure 之间的通信并管理数据复制。
  • 进程服务器:进程服务器充当复制网关。 它接收复制数据,并通过缓存、压缩和加密来优化这些数据。 然后,它会将数据发送到 Azure 中的缓存存储帐户。

若准备进行设备部署,请执行以下操作:

  • 设置单独的 EC2 VM 以托管复制设备。 此实例必须正在运行 Windows Server 2012 R2 或 Windows Server 2016。 查看设备的硬件、软件和网络要求。

  • 该设备不应安装在要复制的源 VM 上,也不应安装在以前可能已安装的“Azure Migrate: 发现和评估”设备上。 它应部署在其他 VM 上。

  • 要迁移的源 AWS VM 应具有到复制设备的网络线路。 配置所需的安全组规则来启用此功能。 建议将复制设备部署在与要迁移的源 VM 相同的虚拟私有云 (VPC) 中。 如果复制设备需要位于其他 VPC 中,则必须通过 VPC 对等互连来连接这些 VPC。

  • 源 AWS VM 在端口 HTTPS 443(控制通道业务流程)和 TCP 9443(数据传输)上与复制设备进行入站通信,从而管理复制和传输复制数据。 然后,复制设备会通过端口 HTTPS 443 出站来协调复制数据并将该数据发送到 Azure。 若要配置这些规则,请编辑安全组入站/出站规则,在其中加入相应的端口和源 IP 信息。

    显示 AWS 安全组的屏幕截图。

    显示编辑安全设置的屏幕截图。

  • 复制设备使用 MySQL。 查看在设备上安装 MySQL 的选项

  • 查看复制设备访问由世纪互联运营的 Azure 时所需的 Azure URL。

设置复制设备

第一个迁移步骤是设置复制设备。 若要设置设备来迁移 AWS VM,则必须下载设备的安装程序文件,然后在准备好的 VM 上运行。

下载复制设备安装程序

  1. 在 Azure Migrate 项目中,选择“Windows、Linux 和 SQL Server”>“Azure Migrate: 服务器迁移”>“发现”。

    屏幕截图:“发现”按钮。

  2. 在“发现计算机”>“计算机是否已虚拟化?”中,选择“未虚拟化/其他”。

  3. 在“目标区域”中,选择要将计算机迁移到的 Azure 区域。

  4. 选择“确认迁移的目标区域为 <区域名称>”。

  5. 选择“创建资源”。 此步骤会在后台创建一个 Azure Site Recovery 保管库。

    • 如果已设置使用“Azure Migrate 和服务器迁移”工具进行迁移,则无法配置目标选项,因为之前已设置了资源。
    • 选择此按钮后,无法更改此项目的目标区域。
    • 若要将 VM 迁移到其他区域,需要创建一个新的或不同的 Azure Migrate 项目。
  6. 在“是否安装新的复制设备?”中,选择“安装复制设备”。

  7. 在“下载并安装复制设备软件”中,下载设备安装程序和注册密钥。 需要使用该密钥来注册设备。 该密钥在下载后的 5 天内有效。

    屏幕截图:显示“下载”按钮。

  8. 将设备安装程序文件和密钥文件复制到为复制设备创建的 Windows Server 2016 或 Windows Server 2012 AWS VM。

  9. 如以下过程中所述,运行复制设备安装程序文件。

    1. 在“准备工作”下,选择“安装配置服务器和进程服务器”。 然后,选择“下一步”。
    2. 在“第三方软件许可证”中,选择“我接受第三方许可协议。”并 然后,选择“下一步”。
    3. 在“注册”中选择“浏览”,然后转到保管库注册密钥文件所在的位置。 选择下一步
    4. 在“Internet 设置”中,选择“在不使用代理服务器的情况下连接到 Azure Site Recovery。”并 然后,选择“下一步”。
    5. “先决条件检查”页运行多个项的检查。 完成后,选择“下一步”。
    6. 在“MySQL 配置”中提供 MySQL 数据库的密码。 然后,选择“下一步”。
    7. 在“环境详细信息”中选择“否”。 无需保护 VM。 然后,选择“下一步”。
    8. 在“安装位置”中选择“下一步”,接受默认值。
    9. 在“网络选择”中选择“下一步”,接受默认值。
    10. 在“摘要”中选择“安装” 。
    11. “安装进度”显示有关安装过程的信息。 完成后,选择“完成”。 此时会出现一个显示重启消息的窗口。 选择“确定” 。
    12. 接下来会出现一个窗口,显示有关配置服务器连接通行短语的消息。 将通行短语复制到剪贴板,并将它保存在源 VM 上的临时文本文件中。 在稍后的出行服务安装过程中,需要用到此通行短语。
  10. 安装完成后,设备配置向导会自动启动。 (也可以使用在设备桌面上创建的 cspsconfigtool 快捷方式来手动启动向导。)在本教程中,我们将手动在要复制的源 VM 上安装出行服务。 需要在此步骤中创建虚拟帐户才能继续操作。 对于虚拟帐户,请使用“guest”作为易记名称,使用“username”作为用户名,并使用“password”作为帐户密码。 你需要在“启用复制”阶段使用此虚拟帐户。

  11. 待设备安装并重启后,在“发现计算机”中的“选择配置服务器”内选择新设备,然后选择“完成注册”。 “完成注册”步骤会执行最终的几个任务来准备复制设备。

    屏幕截图:完成注册。

安装移动服务代理

必须先在要迁移的源 AWS VM 上预装出行服务代理,然后才能启动复制。 选择安装出行服务代理的方法可能取决于组织的首选项和现有工具。 目前不支持 Site Recovery 中内置的“推送”安装方法。 你可能需要考虑的方法:

  1. 将安装程序 tarball 的内容提取到 AWS VM 上的本地文件夹(例如 /tmp/MobSvcInstaller),如下所示:

    mkdir /tmp/MobSvcInstaller
    tar -C /tmp/MobSvcInstaller -xvf <Installer tarball>
    cd /tmp/MobSvcInstaller
    
  2. 运行安装程序脚本:

    sudo ./install -r MS -v VmWare -q -c CSLegacy
    
  3. 将代理注册到复制设备:

    /usr/local/ASR/Vx/bin/UnifiedAgentConfigurator.sh -i <replication appliance IP address> -P <Passphrase File Path>
    

为 AWS VM 启用复制

注意

通过门户,可一次性最多添加 10 个 VM 用于复制。 若要同时复制更多 VM,可分批次添加,每次添加 10 个。

  1. 在 Azure Migrate 项目中,选择“Windows、Linux 和 SQL Server”>“Azure Migrate: 服务器迁移”>“复制”。

    屏幕截图:选择副本。

  2. 在“复制”>“源设置”>“你的计算机是否已虚拟化?”中,选择“未虚化/其他”。

  3. 在“本地设备”中,选择已设置的 Azure Migrate 设备的名称。

  4. 在“进程服务器”中,选择复制设备的名称。

  5. 在“来宾凭据”中,选择以前在复制安装程序设置过程中创建的虚拟帐户,以手动安装出行服务。 (不支持“推送”安装。)然后选择“下一步: 虚拟机”

    显示复制设置的屏幕截图。

  6. 在“虚拟机”中的“从评估中导入迁移设置?”内,保留默认设置“否,我将手动指定迁移设置”。

  7. 检查要迁移的每个 VM。 然后选择“下一步: 目标设置”。

    屏幕截图:选择虚拟机。

  8. 在“目标设置”中,选择要迁移到的订阅和目标区域。 指定 Azure VM 在迁移后所在的资源组。

  9. 在“虚拟网络”中,选择 Azure VM 在迁移之后要加入到的 Azure 虚拟网络/子网

  10. 在“缓存存储帐户”中,保留默认选项,以使用为项目自动创建的缓存存储帐户。 如果想要指定其他存储帐户用作复制的缓存存储帐户,请使用下拉列表。

    注意

    • 如果选择了专用终结点作为 Azure Migrate 项目的连接方法,请向恢复服务保管库授予对缓存存储帐户的访问权限。 了解详细信息
    • 若要使用支持专用对等互连的 Azure ExpressRoute 进行复制,请为缓存存储帐户创建专用终结点。 了解详细信息
  11. 在“可用性选项”中,选择:

    • 可用性区域:将迁移的计算机固定到区域中的特定可用性区域。 使用此选项可跨可用性区域分配形成多节点应用程序层的服务器。 如果选择此选项,则需要在“计算”选项卡中指定用于每个选定计算机的可用性区域。仅当为迁移选择的目标区域支持可用性区域时,此选项才可用。
    • 可用性集:将迁移的计算机放入可用性集。 若要使用此选项,所选的目标资源组必须具有一个或多个可用性集。
    • 无需基础结构冗余:如果不需要为迁移的计算机使用其中任何可用性配置,则选择此选项。
  12. 在“磁盘加密类型”中,选择以下类型:

    • 使用平台管理的密钥进行静态加密。
    • 使用客户管理的密钥进行静态加密。
    • 通过平台管理的密钥和客户管理的密钥进行双重加密。

    注意

    若要使用客户管理的密钥来复制 VM,需要在目标资源组下创建磁盘加密集。 磁盘加密集对象将托管磁盘映射到 Azure Key Vault 实例,该实例包含用于服务器端加密的客户管理的密钥。

  13. 在“Azure 混合权益”中:

    • 如果你不想要应用 Azure 混合权益,请选择“否”。 然后,选择“下一步”。
    • 如果你的 Windows Server 计算机享有有效软件保障或 Windows Server 订阅的权益,并且你想要将此权益应用到所要迁移的计算机,请选择“是”。 然后,选择“下一步”。

    屏幕截图:目标设置。

  14. 在“计算”中,查看 VM 名称、大小、OS 磁盘类型和可用性配置(如果在上一步中选定)。 VM 必须符合 Azure 要求

    • VM 大小:如果你正在使用评估建议,则 VM 大小下拉列表会显示建议大小。 否则,Azure Migrate and Modernize 会根据 Azure 订阅中最接近的匹配项选择大小。 或者,请在“Azure VM 大小”中的手动选择一个大小。
    • OS 磁盘:为 VM 指定 OS(启动)磁盘。 OS 磁盘是包含操作系统引导加载程序和安装程序的磁盘。
    • 可用性区域:指定要使用的可用性区域。
    • 可用性集:指定要使用的可用性集。
  15. 在“磁盘”中,指定是否要将 VM 磁盘复制到 Azure,并选择 Azure 中的磁盘类型(标准 SSD/HDD 或高级托管磁盘)。 然后,选择“下一步”。

    • 可以从复制中排除磁盘。
    • 如果你排除了磁盘,则在迁移后它们将不会出现在 Azure VM 中。

    屏幕截图:“复制”对话框中的“磁盘”选项卡。

  16. 在“标记”中,选择向虚拟机、磁盘和 NIC 添加标记

    屏幕截图:“复制”对话框中的“标记”选项卡。

  17. 在“检查并开始复制”中检查设置,然后选择“复制”启动服务器的初始复制。

注意

若要在复制开始前随时更新复制设置,请选择“管理”>“复制计算机”。 开始复制后无法更改设置。

跟踪和监视复制状态

  • 选择“复制”会启动一个“开始复制”作业。
  • “开始复制”作业成功完成后,VM 将开始初始复制到 Azure。
  • 初始复制完成后,增量复制将会开始。 对 AWS VM 磁盘所做的增量更改会定期复制到 Azure 中的副本磁盘。

可以在门户通知中跟踪作业状态。

你可以通过选择“Azure Migrate: 服务器迁移”中的“复制服务器”来监视复制状态。

屏幕截图显示“复制服务器”选项。

运行测试迁移

增量复制开始后,在开始以 Azure 为目标的完整迁移之前,可以针对 VM 运行完整迁移。 强烈建议执行测试迁移。 你可通过它在继续实际迁移之前发现潜在的问题并解决它们。 建议在迁移之前为每个 VM 至少执行一次此步骤。

  • 运行测试迁移可检查迁移是否按预期进行而不影响 AWS VM,它们仍可保持正常运行并继续复制。
  • 测试迁移通过使用复制的数据创建 Azure VM 来模拟迁移。 (测试通常会迁移到 Azure 订阅中的非生产虚拟网络。)
  • 可以使用复制的测试 Azure VM 来验证迁移、执行应用测试,并解决完整迁移之前出现的任何问题。

若要执行测试迁移,请执行以下操作:

  1. 在“迁移目标”中,选择“Windows、Linux 和 SQL Server”>“Azure Migrate: 服务器迁移”>“测试已迁移的服务器”。

    屏幕截图:测试迁移的服务器。

  2. 右键单击要测试的 VM,然后选择“测试迁移”。

    显示测试迁移的屏幕截图。

  3. 在“测试迁移”中,选择 Azure VM 在迁移后所在的 Azure 虚拟网络。 建议使用非生产虚拟网络。

  4. “测试迁移”作业随即启动。 在门户通知中监视该作业。

  5. 迁移完成后,在 Azure 门户上的“虚拟机”中查看已迁移的 Azure VM。 计算机名称带有 -Test 后缀。

  6. 测试完成后,在“复制计算机”中右键单击 Azure VM,然后选择“清除测试迁移”。

    屏幕截图:清理测试迁移后的结果。

    注意

    现在可以使用 SQL VM RP 注册运行 SQL Server 的服务器,以利用自动修补、自动备份和使用 SQL IaaS 代理扩展简化的许可证管理。

    • 选择“管理”>“复制服务器”>“包含 SQL Server 的计算机”>“计算和网络”,然后选择“是”,注册 SQL VM RP。
    • 如果你的 SQL Server 实例享有有效软件保障或 SQL Server 订阅的权益,并且你需要将此权益应用到要迁移到的计算机,请选择“面向 SQL Server 的 Azure 混合权益”。

迁移 AWS VM

确认测试迁移按预期方式进行后,就可迁移 AWS VM。

  1. 在 Azure Migrate 项目中,选择“Windows、Linux 和 SQL Server”>“Azure Migrate: 服务器迁移”>“复制服务器”。

    显示“复制服务器”的屏幕截图。

  2. 在“复制计算机”中,右键单击 VM 并选择“迁移”。

  3. 在“迁移”>“关闭虚拟机并执行计划迁移(不会丢失任何数据)”中,选择“是”>“确定”。

    注意

    迁移 AWS VM 时,不支持自动关闭。

  4. 随即会针对该 VM 启动一个迁移作业。 可选择门户页面右上角的通知铃铛图标来查看作业状态。 你还可以转到“Azure Migrate: 服务器迁移”工具的“作业”页。 (在工具磁贴上选择“概述”,然后从左侧菜单中选择“作业”。)

  5. 该作业完成后,可以从“虚拟机”页查看和管理该 VM。

完成迁移

  1. 完成迁移后,右键单击 VM 并选择“停止迁移”。 此操作:
    • 停止 AWS VM 的复制。
    • 从“Azure Migrate: 服务器迁移”工具中的“复制服务器”计数中删除 AWS VM。
    • 清除 VM 的复制状态信息。
  2. 验证并排查 Azure VM 上的所有 Windows 激活问题。
  3. 执行任何迁移后的应用调整,例如更新主机名、数据库连接字符串和 Web 服务器配置。
  4. 对 Azure 中当前运行的迁移应用程序执行最终的应用程序和迁移验收测试。
  5. 将流量交接到已迁移的 Azure VM 实例。
  6. 更新所有内部文档,以显示新的位置和 Azure VM 的 IP 地址。

迁移后的最佳做法

故障排除和提示

问题:我在已发现的要迁移的服务器列表中看不到 AWS VM。
答: 请检查复制设备是否满足要求。 确保在要迁移的源 VM 上安装移动代理并注册配置服务器。 检查网络设置和防火墙规则,启用复制设备与源 AWS VM 之间的网络路径。

问题:如何知道我的 VM 是否已成功迁移?
答案:迁移后,你可从“虚拟机”页面查看和管理 VM。 连接到已迁移的 VM 进行验证。

问题:我无法从之前创建的服务器评估结果中导入 VM 进行迁移。
答案:目前,我们不支持为此工作流导入评估。 临时解决方法是,导出评估,然后在“启用复制”步骤期间手动选择 VM 建议。

问题:我在尝试发现我的 AWS VM 时收到“未能提取 BIOS GUID”错误。
答: 始终使用根登录进行身份验证,而不是使用任何伪用户。 另外,请查看 AWS VM 支持的操作系统。

问题:我的复制状态没有进展。
答: 请检查复制设备是否满足要求。 确保已在复制设备 TCP 端口 9443 和 HTTPS 443 上启用了所需端口以进行数据传输。 确保没有复制设备的陈旧重复版本连接到同一项目。

问题:我无法使用 Azure 迁移和现代化来发现 AWS 实例,原因是远程 Windows 管理服务出现 HTTP 状态代码 504。
答案:请确保满足 Azure Migrate 设备要求和 URL 访问需求。 确保没有代理设置阻止设备注册。

问题:在将 AWS VM 迁移到 Azure 之前是否需要进行任何更改?
答案:在将 EC2 VM 迁移到 Azure 之前,可能需要进行以下更改:

  • 如果使用 cloud-init 进行 VM 预配,可以先在 VM 上禁用 cloud-init,再将其复制到 Azure。 由 cloud-init 在 VM 上执行的预配步骤可能特定于 AWS,将在迁移到 Azure 后失效。 ​
  • 如果 VM 是半虚拟化 (PV) VM 而不是硬件 VM,则可能无法按原样在 Azure 上运行它。 PV VM 在 AWS 中使用自定义启动序列。 在迁移到 Azure 之前,可以通过卸载 PV 驱动程序来克服此挑战。
  • 始终建议在最终迁移之前运行测试迁移。

问题:是否可以迁移运行 Amazon Linux 操作系统的 AWS VM?
答案:由于只有 AWS 支持 Amazon Linux OS,因此无法按原样迁移运行 Amazon Linux 的 VM。 若要迁移在 Amazon Linux 上运行的工作负荷,可以在 Azure 中启动 CentOS/RHEL VM。 然后,你可以使用相关的工作负荷迁移方法迁移在 AWS Linux 计算机上运行的工作负荷。 例如,根据工作负荷,通过特定于工作负荷的工具来帮助迁移。 对于数据库,可以使用这些工具;对于 Web 服务器,则可以使用部署工具。

后续步骤

在 Azure 云采用框架中调查云迁移旅程