综述
本文记录了将Azure中运行的虚机迁移到AWS中EC2运行的实战过程。
原理
使用 VM Import/Export 将虚拟机 (VM) 映像VHD文件,作为 Amazon 系统映像 (AMI) 从虚拟化环境导入到 Amazon EC2 中,并用于启动实例。
步骤
1、查询限制条件
在开始之前,需要了解 VM Import/Export 支持的操作系统和映像格式,以及实例和卷的导入限制。参考:
https://docs.aws.amazon.com/zh_cn/vm-import/latest/userguide/vmie_prereqs.html
2、环境中增加中转机
新增Window EC2设备,用于从Azure侧下载镜像VHD文件。
3、Azure VDH文件下载(解决镜像文件大下载不成功问题)
下载Microsoft Azure Storage Explorer,使用Azure 管理员账户登陆,选择需要迁移的虚拟机,执行VHD文件下载。
4、VHD文件上传S3
4.1、创建 S3 存储桶
通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/。
选择 Create Bucket。
在 Create a Bucket (创建存储桶) 对话框中,执行以下操作:
对于 Bucket Name,键入azuremigration您的存储桶的名称。
对于 Region,为您的 AMI 选择一个区域。
选择 Create。
4.2、创建服务角色
}
使用 create-role 命令创建名为 vmimport 的角色,并向 VM Import/Export 提供对该角色的访问权。请确保指定 trust-policy.json 文件的完整路径,并且为路径添加 file:// 前缀。
aws iam create-role --role-name vmimport --assume-role-policy-document "file://trust-policy.json"
创建名为 role-policy.json 的文件并编写下面的策略,其中,disk-image-file-bucket为存储磁盘映像的存储桶:
}
使用下面的 put-role-policy 命令将策略挂载到之前创建的角色。请务必指定 role-policy.json 文件位置的完整路径。
aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file://role-policy.json"
4.3、将映像上传到 Amazon S3
安装AWS CLI,执行命令:aws s3 cp xxx.vhd s3://azuremigration/,完成镜像上传。
4.4、导入 VM镜像
将您的 VM 映像文件上传到 Amazon S3 后,使用 AWS CLI 导入该映像。
aws ec2 import-image --description "bishuiyuantest" --disk-containers "file://containers.json"
下面是一个 containers.json 示例文件。
[
{
"Description": "bishuiyuantest-1",
"Format": "vhd",
"UserBucket": {
"S3Bucket": "azuremigration",
"S3Key": "jiayuefeng0320190509094710.vhd"
}
},
{
"Description": "bishuiyuantest-2",
"Format": "vhd",
"UserBucket": {
"S3Bucket": "azuremigration",
"S3Key": "jiayuefeng03-disk-0-20190509094710.vhd"
}
}
4.5检查导入任务的状态
使用 describe-import-image-tasks 命令返回导入任务的状态。
包括的状态值如下:
aws ec2 describe-import-image-tasks
5、启动VM
基于当前镜像文件启动对应的VM,完成业务节点迁移。