在多云的场景下,经常遇到虚拟机迁移的场景,将一台Azure上的虚拟机迁移到AWS上是一个涉及多个步骤的过程。以下是一个操作步骤指南,以及一些具体的示例操作:

一. 准备阶段

1、在Azure上
  1. 评估和选择要迁移的虚拟机:确定哪些虚拟机需要迁移,并评估它们的配置、所需的性能、存储需求等。

  2. 确保虚拟机的数据一致性:为了避免数据丢失或不一致,你可能需要在迁移过程中停止或减少对虚拟机的写操作。

这里选择一台windows server的虚拟机来进行测试:如下图:

RDP远程登录到这台Azure上的虚拟机之后,创建目录和文件,以便迁移到AWS平台上之后进行检验。 

2、在AWS上
  1. 创建一个VPC(Virtual Private Cloud),确保它能满足迁移后的虚拟机网络需求。
  2. 创建安全组和IAM(Identity and Access Management)角色,确保它们符合你的安全和访问需求。

二. 虚拟机备份与导出

在Azure门户上直接导出虚拟机(VM)到VHD文件并不是一个直接的过程,因为Azure不提供一个一键式的导出功能。不过,你可以通过以下步骤来间接实现这个目的:

1、停止虚拟机

首先,你需要停止你想要导出的虚拟机,以确保数据的一致性。

  1. 登录到Azure门户
  2. 在搜索栏中输入并选择你的虚拟机。
  3. 在虚拟机的概览页面,点击“停止”(Stop),以停止虚拟机。

2、备份虚拟机

使用Azure的备份服务对虚拟机进行备份,确保所有数据都被保存。

3、 创建磁盘的快照

为了保持原始磁盘的状态,建议先创建磁盘的快照。

  1. 在Azure门户中,找到并选择你的虚拟机。
  2. 在“设置”下,选择“磁盘”。
  3. 选择要导出的磁盘(例如,操作系统磁盘或数据磁盘)。

在磁盘的页面上,选择“+ 创建快照”。填写快照的详细信息,并点击“创建”。

快照配置参数:快照类型选择“完整” 如下图:

 

4、从快照创建磁盘

创建快照后,你需要从这个快照创建一个新的磁盘。

  1. 在Azure门户中,找到并选择刚才创建的快照。
  2. 点击“+ 创建磁盘”。
  3. 填写新磁盘的详细信息,并点击“创建”。

输入磁盘的配置信息,如下图: 

5、导出磁盘为VHD

创建了新的磁盘后,你可以将其导出为VHD文件。

  1. 在Azure门户中,找到并选择你刚刚创建的磁盘。
  2. 在磁盘的“概览”页面,找到“磁盘导出”选项并点击“生成SAS URI”。
  3. 系统会生成一个包含SAS令牌(共享访问签名)的URL,你可以使用这个URL在接下来的24小时内下载VHD文件。

6. 下载VHD文件

如下图:copy 磁盘VHD的url地址,或者直接下载VHD文件 

三、 转换虚拟机格式(如有必要)

AWS EC2通常使用AMI(Amazon Machine Image)格式,所以你可能需要将Azure的VHD文件转换为AWS支持的格式。AWS提供了一个工具叫做VM Import/Export,可以帮助你完成这个转换。

本例中不需要转换这个步骤,可直接跳过。

四、 导入虚拟机到AWS

  1. 上传VHD文件到S3:首先,将VHD文件上传到AWS S3存储桶中。你可以使用AWS CLI、AWS S3管理控制台或其他S3兼容工具来完成这个操作。下图以Windows中的AWS CLI为例,用AWS CLI 命令行将VHD上传到AWS S3对象存储

  2. 使用VM Import/Export服务导入镜像:通过AWS CLI使用VM Import/Export服务将上传的VHD文件导入为AMI。例如:

步骤 1:创建 vmimport 角色

如果 vmimport 角色不存在,您需要创建它。如果它已经存在,可以跳到步骤 2,以确保它具有正确的权限。

  1. 打开 IAM 控制台 https://console.aws.amazon.com/iam/。
  2. 在导航窗格中,选择角色,然后选择创建角色。
  3. 对于角色类型,选择 AWS 服务,找到并选择 EC2,然后选择 EC2 - 图像导入/导出作为用例。
  4. 选择下一步:权限。
  5. 在附加权限策略步骤中,您不需要直接附加任何权限策略,因为您将在下一步中创建并附加自定义策略。只需点击下一步:标签。
  6. 如有必要,添加任何标签,然后点击下一步:审查。
  7. 对于角色名称,输入 vmimport
  8. 对于角色描述,输入描述。
  9. 选择创建角色。

步骤 2:将权限策略附加到 vmimport 角色

您需要将一个权限策略附加到 vmimport 角色,该策略授予访问您的 S3 存储桶并执行必要操作的权限。

  1. 使用以下 JSON 创建一个新策略,将 YOUR_BUCKET_NAME 替换为您的 S3 存储桶名称:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketLocation",
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::YOUR_BUCKET_NAME",
        "arn:aws:s3:::YOUR_BUCKET_NAME/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:ModifySnapshotAttribute",
        "ec2:CopySnapshot",
        "ec2:RegisterImage",
        "ec2:Describe*"
      ],
      "Resource": "*"
    }
  ]
}
  1. 在 IAM 控制台中,导航到策略并选择创建策略。

  2. 在 JSON 标签中粘贴您修改的 JSON 策略。

  3. 审查策略,给它一个有意义的名称,并创建它。

  4. 返回角色部分,找到 vmimport 角色,并将您刚刚创建的策略附加到此角色。

步骤 3:设置信任关系

确保 vmimport 角色具有正确的信任关系。它应该信任 vmimport 服务。

  1. 在 IAM 控制台中,转到角色并选择 vmimport 角色。

  2. 选择信任关系标签,然后选择编辑信任关系。

  3. 确保策略文档如下所示:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "vmie.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {}
    }
  ]
}

 步骤4:将VHD文件作为镜像导入

aws ec2 import-image --description "Imported VM from Azure" --disk-containers "Format=VHD,UserBucket={S3Bucket={YourBucketName},S3Key={YourVHDFileName}}"

本例的命令如下:

aws ec2 import-image --description "test111 VM from Azure" --role-name ec2admin --disk-containers  "Format=VHD,UserBucket={S3Bucket=migration-test111,S3Key=test111.vhd}"

上面命令在AWS Console的 CloudShell中执行,如下图:

等待大概30-40分钟后 ,在EC2 菜单栏的images/ami 菜单下查看AMI是否镜像已经导入,如下图:

     

使用导入的AMI在AWS EC2上创建新的虚拟机实例。这可以通过AWS管理控制台或AWS CLI完成。

选择Launch  ,注意选择机型需要和原来在Azure上的大小匹配,创建虚拟机是不用选择密钥文件。

五、 验证和测试

在AWS上启动新的EC2实例后,下载RDP远程登录到AWS上的ec2主机,然后用在Azure上windows server的原有的用户名、密码进行登录。验证之前的数据文件是否存在。 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐