亚马逊AWS官方博客

使用 AWS Application Migration Service Replication Agent 将 VMware 虚拟机迁移到 Amazon EC2

简介

在这篇博客文章中,我们将引导您逐步完成使用 Application Migration Service 将 VMware 虚拟机迁移到 Amazon Elastic Compute Cloud(Amazon EC2)的过程。此外,我们将介绍如何应用自定义的启动后操作脚本,以便从迁移的虚拟机中删除专有的 VMware Tools。

将本地 VMware 工作负载迁移到 Amazon EC2 后,可以带来大量好处,包括提高可扩展性、提升性能和降低运维成本。Application Migration Service 提供了自动化的无缝块级复制解决方案,能够将 VMware 虚拟机迁移到 Amazon EC2 实例,从而简化了这一迁移过程。可以在 Amazon EC2 上测试迁移的虚拟机,同时继续复制最初的源服务器。该解决方案使用基于 Agent 的复制选项,因为它实现了连续的数据复制并缩短了割接时段。

解决方案架构概览

此解决方案(图 1)遵循适用于 Application Migration Service 的网络设置准备文档中的指导,为该服务设置了一个专用子网。该服务将这个专用子网用作从源服务器复制而来的数据的暂存区域。测试实例和割接实例在另一个名为已迁移资源的专用子网中启动。

安装在相应的 VMware 虚拟机中的 AWS Replication Agent 将启动同步过程,并在暂存区域中开始复制数据。复制服务器将根据预定义的复制设置来处理复制过程。在复制已连接到源服务器的卷时,服务器将标记为准备进行测试。就启动设置而言,相应的测试或割接实例将在已迁移资源区域中启动。

该解决方案利用 Application Migration Service 启动后操作,在每个测试或割接启动实例上安装 AWS SSM Agent。使用 AWS SSM Agent 可以执行自定义脚本,例如删除专有的 VMware Tools。

此过程适用于 VMware Cloud on AWS 和本地 VMware。

图 1 – 左侧是安装了 AWS Replication Agent 的 VMware 环境。右侧是 AWS 账户及其两个子网:暂存区域和已迁移资源。

在本次演示中,该解决方案使用了一组安装了 Linux(RHEL 9)和 Windows Server 2019 的虚拟机。

实施步骤

第 1 步 – 先决条件

在此演练中,您将需要:

  1. 一个具有所需权限的 AWS 用户,如 Application Migration Service 文档“Application Migration Service 初始化和权限”中所定义。
  2. 按照网络设置准备中的说明进行网络设置。
  3. 一个支持的源服务器操作系统。有关支持的操作系统的更多信息,请参见支持的操作系统
  4. 具有下载和安装 AWS Replication Agent 权限的源虚拟机凭证。
  5. 识别或创建一个 Amazon Virtual Private Cloud(Amazon VPC)子网,以便用于您的测试和割接实例以及相应的 Amazon EC2 安全组。

第 2 步 – 创建 Amazon VPC 端点

暂存区和已迁移资源区域可以在私有子网或公共子网中运行。在本场景中,两个子网都是私有子网。由于无法公开访问任何 HTTPS 端点,启动实例无法连接到互联网,因此无法执行启动后模板。要允许安装 SSM Agent 并执行启动后操作,需要创建三项端点服务:

com.amazonaws.<region>.ssm
com.amazonaws.<region>.ec2messages
com.amazonaws.<region>.ssmmessages
  1. 对于每个要创建的端点,请在控制台中打开 Amazon VPC 服务并选择端点,然后选择右上角的创建端点(图 2)。 

    图 2 – 在 Amazon VPC 服务控制台的“端点”部分中,选择“创建端点”。

  1. 选择 AWS 服务并创建第一个端点(图 3)amazonaws.<region>.ssm。将 <region> 替换为 AWS 区域。选择目标 VPC 和 EC2。连接到 VPC 端点的安全组在端口 443 上,必须允许来自托管实例的私有子网的传入连接。最后,在本页面末尾选择创建端点

图 3 – 从 Amazon VPC 服务控制台创建端点。

  1. 在创建三个 VPC 端点后,您将看到以下结果(图 4)。 

    图 4 – 已成功创建三个 VPC 端点,可允许安装 SSM Agent。

第 3 步 – 从 Windows 和 Linux 中卸载 VMware Tools 的启动后操作

此部分介绍如何创建自定义的启动后设置,以便在 AWS 中启动源服务器后自动删除 VMware Tools。请注意,对启动后模板所做的更改将仅应用于新添加的源服务器。对于现有的源服务器,可以在源服务器级别修改启动后模板。

  1. 通过在左侧面板上选择启动后模板来访问该模板。编辑启动后操作设置,并通过启用在启动的测试和割接实例上安装 Systems Manager Agent(推荐)来激活设置中的功能。最后,选择保存模板(图 5)。 

    图 5 – 为将来启动测试和割接的服务器安装 SSM Agent。

  2. 要从 VMware Tools 中清除 VMware 映像,请首先创建一个自定义操作。选择创建操作(图 6)。 

    图 6 – 选择右上角的创建操作

  3. 在操作设置中输入以下内容(图 7)。Windows 上的启动后脚本会在“本地服务”上下文中运行。
    1. 操作设置
      1. 操作名称:CleanUpVMwareTools-Windows
      2. 选择激活此操作选项。
      3. Systems Manager 文档名称:AWS-RunPowerShellScript
      4. 描述:运行 PowerShell 脚本以便从 VMware Tools 中清除 Windows 映像
      5. 操作系统:Windows
    2. 操作参数:
      在从 Windows Server 2019 迁移后,可使用以下脚本卸载 VMTools。 

      1. 命令:
        Remove-Item –path .\VMware –recurse 
        $regpath = “HKLM:\Software\Microsoft\Windows\CurrentVersion\uninstall”
        Get-childItem $regpath | % { 
           $keypath = $_.pschildname 
           $key = Get-Itemproperty $regpath\$keypath 
           if ($key.DisplayName -match “VMware Tools”) { 
              $VMwareToolsGUID = $keypath 
           } 
           Msiexec.exe /x $VMwareToolsGUID /qn /norestart 
        }
      2. workingDirectory:C:\Program Files\
      3. executionTimeout:300
         

         

        图 7 – 用于从复制的 Windows 启动实例中删除 VMware Tools 的 PowerShell 脚本。

  4. 对 Linux 实例重复上述步骤(图 8)。Linux 上的启动后脚本会在根用户下运行。
    1. 操作设置:
      1. 操作名称:CleanUpVMwareTools-Linux
      2. 选择激活此操作选项。
      3. Systems Manager 文档名称:AWS-RunShellScript
      4. 描述:运行 Shell 脚本以便从 VMware Tools 中清除 Linux 映像
      5. 操作系统:Linux。 

        图 8 – 用于从复制的 Linux 启动实例中删除 VMware Tools 的 Shell 脚本。

    2. 操作参数
      1. 命令:
        rm -r ./VMware -r
      2. executionTimeout:300

启动后模板(图 9)将显示两个新创建的操作。确保这两个操作已设置为活动

图 9 – 验证 SSM Agent 安装和两个新创建的启动后操作是否已启用。

第 4 步 – 添加源服务器并在虚拟机上安装 Agent

每次向 Application Migration Service 添加源服务器时,系统都会根据默认模板,初始化该服务器的复制设置启动设置启动后操作设置。

在将源服务器添加到 Application Migration Service 后,可以通过源服务器页面监控这些服务器并与之交互。在此页面上,您可以查看所有源服务器,监控其迁移生命周期和数据复制状态,查看每个服务器的迁移过程的下一步,并按各种类别对服务器进行排序。

要添加 Windows 源服务器,请在源服务器页面上选择添加服务器

使用以下选项(图 10)可创建安装程序命令,并添加您的 IAM 访问密钥 ID 和 IAM 秘密访问密钥。复制所生成的命令并下载安装程序。

图 10 – 为 AWS Replication Agent 生成安装程序命令行。

下载安装程序后,在 PowerShell 中运行复制的命令。在每个 Windows Server 上,您需要以管理员身份运行 Agent 安装程序文件(图 11)。

图 11 – 在 Windows 源服务器上运行 Agent 安装程序命令。

记下您的主机名,并转到 Application Migration Service 控制台。

安装 AWS Replication Agent 后,系统会将服务器添加到 Application Migration Service 控制台的源服务器下,将从该位置开始初始同步过程。

第 5 步 – 启动测试实例

在执行割接之前,必须测试源服务器到 AWS 的迁移,确保源服务器在 AWS 环境中正常运行。

在启动测试实例之前,请确保您的源服务器已做好测试准备。在源服务器页面上检查以下状态。

  1. 迁移生命周期栏中,服务器状态应显示准备进行测试
  2. 数据复制状态栏中,服务器状态应为正常
  3. 下一步栏中,服务器的状态应为启动测试实例

要为一个或多个源服务器启动测试实例,请执行以下操作。

  1. 导航到源服务器页面。
  2. 选中要测试的每个服务器旁边的复选框。
  3. 选择测试和割接菜单。
  4. 测试下,选择启动测试实例,以便针对所选源服务器启动测试实例(图 12)。 

    图 12 – 从测试和割接下拉菜单中选择“启动测试实例”。

  1. 启动 X 个服务器的测试实例对话框出现后,选择启动以便开始测试。
  2. 在测试开始后,AWS Application Migration Service 控制台将显示启动作业已开始。在该对话框中选择查看作业详细信息,以便在启动历史记录中查看测试启动的特定作业。
  3. 可以通过观察源服务器页面上的各个指标,来确认测试实例是否成功启动(图 13)。
    1. 提醒栏中,您将看到已启动状态,这表示该服务器的测试实例已启动。
    2. 迁移生命周期栏中,您将看到正在进行测试状态。
    3. 下一步栏中,将显示完成测试,并标记为准备进行割接

图 13 – 在测试完成后,服务器会被标记为准备进行割接

启动测试实例后,访问相应服务器以连接到这些实例。或者,您可以使用 AWS SSM 会话管理器AWS SSM Fleet Manager 登录这些实例。这样做是为了验证这些实例是否正常运行,评测连接以及为您的应用程序执行验收测试。

当您的测试已完成,并且已为割接阶段做好准备后,就可以结束测试。为此,源服务器的迁移生命周期状态应为准备进行割接。这表示所有测试均已完成,并已准备好进行割接。最终,通过选择终止已启动的测试实例来结束正在进行的生命周期测试

验证启动后操作。

  1. 选择源服务器并打开启动后设置
  2. 要查看将触发的操作,请按活动进行筛选。将触发以下操作(图 14)。
SSM Agent
CleanUpVMwareTools-Linux

图 14 – 验证要执行的启动后操作。

在启动实例后,可以在迁移控制面板选项卡下追踪 SSM Agent 安装和 CleanUpVMWareTools 的执行状态(图 15)。

图 15 – 请注意,所有操作均已成功完成。

第 6 步 – 启动割接实例

  1. 选中每个源服务器旁边的复选框,其中包含要结束测试的已启动的测试实例。
  2. 选择测试和割接菜单(图 16)。
  3. 在“测试”部分下,选择准备进行割接选项。

图 16 – 标记为准备进行割接以便启动割接实例。

X 个服务器标记为“准备进行割接”对话框中,您可以做出有关终止测试实例的选择。建议终止这些实例,否则您即使不再需要这些实例,它们也会产生费用。要继续终止,请选择是,终止已启动的实例(推荐),然后选择继续

AWS Application Migration Service 控制台将确认服务器是否已标记为“准备进行割接”。

在继续启动割接实例之前,可以通过检查源服务器页面(图 17)上的以下状态,来确认您的源服务器是否已准备好进行割接。

  1. “迁移生命周期”状态为准备进行割接
  2. “数据复制状态”为正常
  3. “下一步”显示终止已启动的实例;启动割接实例(如果您尚未终止最新的测试实例)。或者,如果您已终止最新的测试实例,则显示启动割接实例

图 17 – 验证“迁移生命周期”状态是否为准备进行割接,以及“数据复制状态”是否为正常

要为一个或多个源服务器启动割接实例,请执行以下操作。

  1. 访问源服务器页面,并选择每个要割接的服务器。
  2. 选择测试和割接菜单。
  3. 割接(图 18)下,选择启动割接实例
  4. 一个弹出对话框随即出现,其中显示将启动的割接实例及其相应名称。选择启动以进行确认。

图 18 – 在测试和割接菜单中选择启动割接实例

源服务器页面(图 19)上,迁移生命周期栏显示正在进行割接下一步栏显示完成割接

图 19 –“迁移生命周期”状态已从准备进行割接更改为正在进行割接

选择您的源服务器可查看作业详细信息(图 20)。

图 20 – 当前生命周期为正在进行割接,这意味着割接实例正在启动。

启动割接实例后,通过 Amazon EC2 控制台连接割接实例。或者,使用 AWS SSM 会话管理器或 Fleet Manager 连接到割接实例。要验证割接实例是否正常运行、确认连接并为您的应用程序执行验收测试,则必须执行此步骤。

完成迁移后,执行完成割接操作(图 21):

  1. 选择每个要割接的源服务器。
  2. 选择:完成割接

图 21 – 切换到“完成割接”可停止复制数据。

完成 X 个服务器的割接对话框中,选择完成即可开始割接。此操作会将源服务器的迁移生命周期状态更新为:割接完成,这表示已成功割接和迁移。此操作还将停止数据复制,并丢弃相关的 AWS EBS 卷和 Amazon EC2 复制服务器。在割接成功完成后,Application Migration Service 控制台将显示割接已完成

清理

为了避免持续产生费用,请务必清理相关资源,包括:

  • Amazon EC2 实例
  • 断开所有 Application Migration Service 源服务器
  • 删除连接到与您的测试相关的 EC2 实例的 EBS 卷
  • 删除 VPC 端点

结论

总之,这篇博客文章回顾了以无缝方式将 VMware 虚拟机按需迁移到 Amazon EC2 的一系列步骤。此流程的主要优势是自动化,可以大幅减少人为错误并加快迁移速度。启动后操作将清理 VMware Tools 中的映像。Application Migration Service 仍然具有成本效益,无论 VMware 环境是在本地还是在 VMware Cloud on AWS 中,该服务都是一个极具吸引力的迁移解决方案。

有关其它资源,请参见《Application Migration Service User Guide》中的以下主题:


Original URL: https://aws.amazon.com/cn/blogs/mt/migrate-vmware-virtual-machines-to-amazon-ec2-with-the-aws-application-migration-service-replication-agent/

关于作者

Philippe Wanner

Philippe Wanner 是亚马逊云科技的一名高级专业解决方案架构师。他的主要职责是为欧洲、中东和非洲(EMEA)的大型企业,提供有关迁移和现代化改造最佳实践及战略方面的建议。目前,他主要关注的是业务转型、分布式系统和无服务器架构等多学科领域。

Simon Vaillancourt

Simon 是亚马逊云科技的一名专业解决方案架构师,专门负责支持 VMware Cloud on AWS,并为公共部门客户提供服务。他居住在魁北克省美丽的魁北克市,为加拿大各地有 VMC 特定需求的客户提供相关帮助。他拥有多年的 IT 经验,曾担任各种 IT 分析师和 IT 架构师职务。纵观 Simon 的整个职业生涯,他在大型数据中心和基础设施部署/迁移方面积累了丰富的经验,无论是来自私营部门,还是公共部门的客户和供应商对其都非常认可。