使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

作者:MeshCloud脉时云公有云架构师周宽

Migrate to Virtual Machines使你能够将你的虚拟机(VM)从你的源环境迁移(直接原样迁移)到Google Compute Engine,并进行少量的自动修改。Migrate to Virtual Machines使用数据复制技术,该技术将磁盘数据从源虚拟机持续复制到Google Cloud,而不会造成源虚拟机的任何停机。然后,你从复制的数据中创建虚拟机克隆,用于测试,并执行可预测的虚拟机切换到你在Google Cloud上运行的最终工作负载。

数据复制允许Migrate to Virtual Machines对源虚拟机的数据进行初始复制,这样你就可以快速克隆和测试迁移的虚拟机。然而,由于在迁移过程中,包括在测试过程中,源虚拟机会继续运行,Migrate to Virtual Machines会继续复制数据,直到你对迁移后的虚拟机进行最终切割。

迁移过程简介

Migrate to Virtual Machines为你提供了一个简单的路径,让你把你的虚拟机迁移到Compute Engine。迁移过程分为以下几个不同的阶段:

  • 添加:选择要迁移的源虚拟机。
  • 复制:将数据从源虚拟机复制到Google Cloud。数据复制是一个持续的过程,在后台进行,直到最后切换或删除迁移为止。
  • 设置虚拟机目标详情: 为迁移的虚拟机配置Compute Engine设置,如项目、实例类型、内存、网络等。
  • 测试克隆: 可选。从复制数据中创建一个源虚拟机的Compute Engine克隆,并在Google Cloud上进行测试。
  • 切换: 将源虚拟机迁移到 Compute Engine。此过程包括停止源虚拟机,完成最后的复制,并从源虚拟机创建生产的Compute Engine实例。
  • 完成: 迁移成功后,执行最后的清理工作。

下面的图片显示了这些阶段:

使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

版本说明

https://cloud.google.com/migrate/virtual-machines/docs/5.0/concepts/comparison?hl=zh-cn

4.x 版: Migrate for Compute Engine

5.0 版: Migrate to Virtual Machines

相比较4.x版,5.0迁移aws EC2 机器配置更加简单化,不用再配置vpn,直接使用公网迁移,支持来源包括:AWS、Azure、vSphere、物理服务器(4.x版)。

本文档操作过程使用5.0版本,同时也是GCP console上现有默认版本。

使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

EC2 VM 和AWS权限准备

  1. EC2 VM 迁移前准备
  • 关闭selinux,必须是配置文件中 disabled 才行。
  • 确认磁盘是否加密,EC2 vm大多数云盘为 gp3 ssd。如果加密,则稍后权限配置AWS IAM 权限是需要提供磁盘加密的key
  • 如果需要保留vm 内网ip,则需要提前统计 vpc网段,网关,各vm 的私有ip地址。在GCP 新建同样的vpc网段。
  • (可选)。给需要迁移的vm打上tag ,比如: migration:yes,方便选取。
  1. AWS 账号和权限

2.1迁移所用的账号和权限

  • 如果是客户项目,则需要客户提供具有一定权限账号的 AKSK 秘钥对
  • 在 gcp console中配置 Migrate to Virtual Machines 新建 AWS source 时会要求填入一个 AWS 账号的AKSK 秘钥对,要求此账号一定权限,可以操作vm快照。

2.2新建权限policy

AWS console -> IAM -> 访问管理 -> 策略 -> 创建策略 ->:

使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

选择json ,输入以下json内容

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeVolumes",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeSnapshots",
                "ec2:CreateTags",
                "ec2:CreateSnapshots",
                "ec2:StopInstances"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ebs:ListSnapshotBlocks",
                "ebs:ListChangedBlocks",
                "ebs:GetSnapshotBlock",
                "ec2:DeleteSnapshot",
                "ec2:DeleteTags"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/m2vm-resource": "snapshot"
                }
            }
        }
    ]
}

如果使用加密磁盘,则需要增加如下部分。

  • 需要提供 kms key
{
    "Effect": "Allow",
    "Action": [
        "kms:Decrypt",
        "kms:DescribeKey"
    ],
    "Resource": "<<KMS key ARN>>"
}
使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

点击下一步:

  • 标签可不选
使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

输出名称,创建策略:

使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

2.3 新建账号(可选)

可新建用于迁移的专用cli账号,也可使用已有账号

AWS console : IAM -> 用户 -> 创建用户

如果只用于迁移,则可以不提供 AWS 管理控制台的访问权限

使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

选择权限: 直接附加策略,选择新建的用于迁移的权限策略

使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

点击创建:

使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

2.4 将新建的策略绑定到已有账号

AWS console -> 策略 -> 搜索刚才新建的策略 -> 选择策略,点击操作。附加。

使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

选择用户,附加策略

使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

2.5生成AKSK秘钥对

AWS console -> 用户 -> 选择用户 -> 安全凭证 -> 访问秘钥

使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

选择命令行CLI

使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

创建完成:注意复制保存 此访问秘钥 和 私钥。

使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

自此,权限配置完成。

  1. 给待迁移VM打上标签

EC2 中选择vm -> 标签 -> 管理标签

加上标签比如: migration : yes

使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

GCP项目准备

  1. 操作账号权限
### 为您的用户帐号授予宿主项目的 vmmigration.admin 角色:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID --member=user:USER_EMAIL_ADDRESS --role=roles/vmmigration.admin


###为您的用户帐号授予目标项目的 resourcemanager.projectIamAdmin 角色:
gcloud projects add-iam-policy-binding TARGET_PROJECT_ID --member=user:USER_EMAIL_ADDRESS --role=roles/resourcemanager.projectIamAdmin
  1. 启用Migration API
gcloud services enable servicemanagement.googleapis.com servicecontrol.googleapis.com iam.googleapis.com cloudresourcemanager.googleapis.com compute.googleapis.com
  1. 配置service accout所需权限

获取migration service account:

GCP console -> Compute Engine -> Migrate to Virtual Machines -> target -> 复制migration默认service account

授权migration service account 具有 compute engine 默认service account的 iam.serviceAccountUser 权限。

  1. 新建vpc 和 subnet

根据要求的vm网段和网关,新建vpc和subnet

如果要求vm私网地址一致,则需要提前reserve 私网IP地址。

创建Migrate to Virtual Machines

  1. 初始配置虚拟机

迁移的第一阶段是初始配置源虚拟机。例如,AWS中可能包含数十、数百甚至数千个虚拟机。您仅需要初始配置要迁移的虚拟机。

每个宿主项目和区域一次最多可以同时迁移 200 个虚拟机(不包括完成阶段的迁移)。

GCP console -> Computer Engine -> Migrate to Virtual Machines -> SOURCES -> ADD SOURCE -> AWS SOURCE

使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

其中 :

  • GCP region 和 AWS region 根据vm所在的区域和目标填写
  • Access key ID 和 Secret access key 填写 AWS 账号的访问秘钥。
  • TAG 根据AWS EC2里新建的tag填写,也可以不填,主要是方便区分选择。
使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

创建成功之后,等待几分钟,在Source VM list里面就可以看到待迁移的EC2 vm列表了。

  1. 开始复制来源虚拟机

初始配置源虚拟机后,开始将源虚拟机中的磁盘数据复制到 Google Cloud。此过程在后台进行,不影响本地工作负载。

数据复制包括两个步骤:

首次复制步骤:Migrate to Virtual Machines 会创建来源虚拟机数据磁盘的初始快照,并将快照数据复制到 Google Cloud。首次复制可能需要几分钟或几小时才能完成,具体取决于源虚拟机上的磁盘数据量。

增量复制步骤:成功执行首个复制步骤后,系统会在设置的时间间隔(默认为每两个小时)执行增量复制步骤。在每个步骤中,系统会为每个数据磁盘创建一个新的快照。 利用块修改跟踪 (CBT) 机制,只有在上一步骤之后发生的数据更新才会被复制到 Google Cloud。

使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE
  1. 配置目标详情

选择目标虚拟机,可以配置目标项目、实例类型、磁盘类型、保留IP地址 以及 定时复制间隔时间。

使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE
  1. 测试克隆(可选)

测试克隆将会根据当前的复制过来的磁盘快照生成VM实例,可以检查VM实例启动,IP保留,进程启动,数据等是否正常。

使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE
  1. 切换

在切换阶段,您将控制权转移至 Google Cloud 上生产环境中的 Compute Engine 实例中运行的迁移后虚拟机。

切换过程:

  • 等待数据复制完成。
  • 关停源虚拟机。
  • 执行最终数据复制。
  • 停止复制。
  • 根据最终复制的数据创建 Compute Engine 实例。
使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE
  1. 完成迁移

切换后系统会保留用于创建 Compute Engine 虚拟机的复制数据,以便您从上一个复制快照恢复复制。

使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

删除迁移

删除迁移将移除:

  • 存储在 Google Cloud 中的虚拟机复制数据
  • Compute Engine 配置信息
  • 监控历史记录
  • 与迁移虚拟机关联的所有其他数据
  • 迁移标签页上的已初始配置虚拟机列表中的虚拟机
  • 虚拟机群组中的虚拟机
使用Migrate to Virtual Machines 迁移 AWS EC2至Google Cloud GCE

官网参考文档:

  • https://cloud.google.com/migrate/virtual-machines/docs/5.0/how-to/create-an-aws-source
  • https://cloud.google.com/migrate/virtual-machines/docs/5.0/how-to/migrating-vms

发表评论

您的电子邮箱地址不会被公开。