GTLC全球技术领导力峰会·上海站,首批讲师正式上线! 了解详情
写点什么

使用 VM import 将 Azure 虚拟机迁移至 AWS 平台

2019 年 9 月 27 日

使用 VM import 将 Azure 虚拟机迁移至 AWS 平台

通常我们做虚拟化,需要先做 P2V 然后将镜像导入到虚拟机中。而 P2V 后需要根据虚拟化层所支持的镜像类型做镜像格式的转换。在云平台间的虚拟机迁移,原理是差不多,可以看作是不同的虚拟化平台的迁移。这里我以 Azure 的 VM 虚拟机(ARM 资源管理模式)迁移到 AWS 的 EC2 虚拟机为例:


(如果你使用的是早期的经典模式虚拟机 Classic Model VM,请将经典模式转为资源管理模式 ARM VM)本篇 Blog 使用 VM Import/Export 可以让您轻松将虚拟机映像从现有环境导入到 Amazon EC2 实例中。


大致步骤与要把大象放到冰箱里总共分几步差不多:


  1. 将 Azure 的 VM 的镜像导出 VHD

  2. 将 Azure 的 VM 镜像上传到对象存储

  3. 将 VHD 镜像转换为 AMI 并通过 AMI 启动 EC2


一:创建 Azure VHD 镜像:

登录到  Azure 门户


首先在左测工具栏选择需要迁移的“虚拟机”。


在“虚拟机”边栏选项卡中进入设置中的“磁盘”。


然后在上方工具栏选择“创建快照”


输入快照的名称 。


选择现有的资源组,或键入新资源组的名称。


对于源磁盘,选择要获取其快照的托管磁盘。


选择用于存储快照的“帐户类型”。 使用 Standard HDD,除非需要将其存储在高性能 SSD 上。


单击创建。


  • 选择需要迁移的虚拟机:



  • 导出 VHD 文件,创建快照导出(不需要停机,完整只读副本)





下载镜像并上传到 S3 对象存储:直接将镜像用 EC2 下载并上传到 AWS 的 S3 对象存储上。


需要本地安装 windows AWS cli 的工具,该工具可以通过命令将镜像文件上传到 S3 上。安装方法:


https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/install-windows.html


PS:如果你已经拥有一台安装了 aws cli 的 AWS EC2 windows server 可以直接运行命令。


将镜像 copy 到 S3 上:


$ aws s3 cp[–options]注释:aws s3 cp 本地镜像存储的路径 S3://桶的路径 S3 命令可以参考:https://docs.amazonaws.cn/cli/latest/userguide/cli-services-s3-commands.html



二:使用 vmimport 工具来实现 VHD 镜像文件导入与 AMI 的转换:

1.创建一个角色 vmimport 并附件策略如下:


附加策略:


{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws-cn:s3:::vmwimport",
"arn:aws-cn:s3:::vmwimport/*"
]
},
{
"Effect": "Allow",
"Action": [
"ec2:ModifySnapshotAttribute",
"ec2:CopySnapshot",
"ec2:RegisterImage",
"ec2:Describe*"
],
"Resource": "*"
}
]
}
复制代码


2.编辑信任关系:


信任关系的策略如下:



{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "vmie.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:Externalid": "vmimport"
}
}
}
]
}
复制代码


3.导入 VHD AWS CLI 运行命令:

aws ec2 import-image --cli-input-json "{  \"Description\": \"WinServer2008R2\", \"DiskContainers\": [ { \"Description\": \"First CLI task\", \"UserBucket\": { \"S3Bucket\": \"vmwimport\", \"S3Key\" : \"abcd\" } } ]}”
复制代码


注释:


S3Bucket:是 S3 bucket 桶的名字


S3Key:是 S3 bucket 对象的名字


Progress:是进度


StatusMessage:是状态,分别经历 Pending——Converting——Uploading——Booting——Booted


这里我只截图 3 个状态:





4.我的 AMI(AWS 虚拟机镜像)

在 EC2 中 AMI 找到我们刚刚转换成功的 AMI,并利用该 AMI 启用一台 EC2.



回顾一下 instance 的生命周期,当 EC2 的状态是 Running 的时候,我们就登录进去:



这里需要注意的是登录的用户名与密码是你在 Azure 的 VM 中的系统用户名与密码信息。



总结:

本篇以 Azure 导入映像到 AWS 为例,其他平台迁移大同小异,因为 VM Import/Export 支持的映像类型很多,比如:OVA,VHD/VHDX,VMDK,RAW。


VM Import/Export 可以让您轻松将虚拟机映像从现有环境导入到 Amazon EC2 实例中,然后再将导出回本地环境。它允许您将用于满足 IT 安全、配置管理和合规要求的虚拟机纳入 Amazon EC2 中作为随时可用的实例,从而充分利用其中的现有投资。您还可以将导入的实例导出回本地虚拟化基础设施,从而部署跨 IT 基础设施的工作负载。


除了 Amazon EC2 和 Amazon S3 的标准使用费外,VM Import/Export 无需其他任何费用。


相关文章:


https://docs.aws.amazon.com/zh_cn/vm-import/latest/userguide/what-is-vmimport.html


作者介绍:


李强


AWS 解决方案架构师,负责基于 AWS 的云计算方案架构的咨询和设计,同时致力于 AWS 云服务在国内的应用和推广,在物联网和微软的技术栈有着广泛的设计和实践经验。在加入 AWS 之前,曾在东芝中国负责系统开发和运维工作,在微软中国负责中小企业的技术咨询和方案设计工作。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/azure-vm-to-ec2-ami-vm/


2019 年 9 月 27 日 14:38270
用户头像

发布了 1238 篇内容, 共 31.9 次阅读, 收获喜欢 34 次。

关注

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布
暂无评论
发现更多内容

TCC Demo 代码实现

Java 分布式事务 Demo TCC

腾讯T3大牛手把手教你!从外包月薪5K到阿里月薪15K,分享一点面试小经验

欢喜学安卓

android 程序员 面试 移动开发

架构师训练营第 1 期 - 第十二周作业

Todd-Lee

极客大学架构师训练营

图解MyBatis

田维常

架构师养成第三课

万有引力

复盘不止复盘,更是个人认知升级加速器?

Alan

复盘 思维 技术人应知的创新思维模型 28天写作

架构师训练营第 1 期 - 第十二周总结

Todd-Lee

极客大学架构师训练营

找到相同链表的点

落朽

TRONex智能合约APP系统软件开发

开發I852946OIIO

系统开发

作业-第8周

arcyao

第三周学习心得

cc

记录一次腾讯c/c++ linux后台开发岗面试经历(面试题含答案)

linux大本营

c++ Linux 腾讯 后台开发 架构师

生产环境全链路压测建设历程之六 淘宝网2012年双十一的痛

数列科技杨德华

学习笔记丨Linux中数据提取相关命令

Liuchengz.

Linux ubuntu #Ubuntu

2020年我凭借这份pdf成功拿到了阿里,腾讯,京东等六家大厂offer

Crud的程序员

Java 阿里巴巴 程序员 java面试 offer

Gradle使用问题梳理

maijun

Gradle

iOS面试高薪,进阶 你会这些呢嘛?

ios swift 面试

Tronex智能合约APP系统开发|Tronex智能合约软件开发

开發I852946OIIO

系统开发

基于 getty 的分布式事务框架seata-golang 通信模型详解

apache/dubbo-go

dubbo dubbo-go dubbogo seata

第三周设计作业

cc

2021数字化投资规划,你做好了吗?

ThoughtWorks洞见

架构 业务架构

网易游戏部门Java架构师必看的“完美版”Netty源码笔记

Java架构追梦

Java 学习 源码 架构 Netty

《前端算法系列》如何让前端代码速度提高60倍

徐小夕

Java 算法 前端 前端进阶

《架构即未来:现代企业可扩展的Web架构流程和组织》.pdf

田维常

架构

100+大厂应届offer,从7个维度全面分析

程序员小灰

编程 面试 面经 腾讯大厂

Week 12

黄立

【小菜学网络】物理层概述

fasionchan

网络编程 计算机网络 网络协议 TCP/IP 物理层

shell脚本的使用该熟练起来了,你说呢?(篇三)

良知犹存

Shell

美团十年架构师精心分享:手写分布式消息中间件RocketMQ笔记

小Q

学习 面试 微服务 MQ 中间件

实践出真知!华为Android面试真题解析,附超全教程文档

欢喜学安卓

android 程序员 面试 移动开发

天下武功,唯“拆”不破之MECE原则一| 技术人应知的创新思维模型 (5)

Alan

职场成长 技术人应知的创新思维模型 组合创新 结构化思维 28天写作

DNSPod与开源应用专场

DNSPod与开源应用专场

使用 VM import 将 Azure 虚拟机迁移至 AWS 平台-InfoQ