文章目录
- 一、实验情景
- 二、实验关键服务概述
- 2.1 MGN解决方案
- 2.2 VPC对等连接
- 三、实验架构示意图
- 四、实验具体操作步骤
- 4.0 创建访问密钥
- 4.1 创建VPC资源
- 4.1.1 在源账号上创建VPC
- 4.1.2 在目标账号上创建VPC
- 4.2 创建对等连接✨
- 4.2.1 发起对等连接请求
- 4.2.2 接受对等连接请求
- 4.2.3 更新路由表条目
- 4.3 创建安全组
- 4.4 创建EC2实例
- 4.5 创建并关联弹性IP地址
- 4.6 在EC2实例创建应用服务
- 4.7 使用MGN解决方案迁移EC2实例✨
- 4.7.1 设置服务初始化
- 4.7.2 设置复制模板
- 4.7.3 添加源服务器
- 4.7.4 设置启动模板
- 4.7.5 启动测试实例
- 4.7.6 启动割接实例
- 4.7.7 设置启动后模板(可选)
- 4.8 跨账号迁移弹性IP地址
- 五、实验过程中的问题
- 问题① 源服务器停滞问题
- 问题② SSH公钥获取并导入其他AWS账号中
- 问题③ EC2实例是否支持跨AWS区域迁移?
- 问题④ 弹性IP地址是否支持跨账号且能跨AWS区域迁移?
- 六、参考链接
一、实验情景
近期,针对一家客户提出了这样的一个场景需求,如何实现云主机跨账号迁移?AWS服务是否有提供解决方案以实现这一操作。
本实验将带领大家一起复现该实验场景,教你一步一步操作迁移。
二、实验关键服务概述
实验涉及的云资源服务
VPC、VPC对等连接、Amazon EC2、Amazon Application Migration Service、IAM、弹性IP地址等。
2.1 MGN解决方案
AWS Application Migration Service (MGN) 是一种高度自动化的直接迁移(重新托管)服务 简化、加快和降低将应用程序迁移到 AWS 的成本的解决方案。它 允许公司直接迁移大量物理、虚拟或云服务器,而无需 兼容性问题、性能中断或转换窗口过长。MGN 复制源 服务器添加到您的 AWS 账户中。当您准备好时,它会自动转换并启动您的 AWS 上的服务器,因此您可以快速从成本节约、生产力、弹性和 云的敏捷性。一旦您的应用程序在 AWS 上运行,您就可以利用 AWS 服务和 能够快速轻松地重新构建或重构这些应用程序 - 这使得 直接迁移:实现现代化的快速途径。
2.2 VPC对等连接
VPC 对等连接是两个 VPC 之间的网络连接,通过此连接,您可以使用私有 IPv4 地址或 IPv6 地址在两个 VPC 之间路由流量。这两个 VPC 中的实例可以彼此通信,就像它们在同一网络中一样。您可以在自己的 VPC 之间创建 VPC 对等连接,或者在自己的 VPC 与其他AWS账户中的 VPC 之间创建连接。VPC 可位于不同区域内(也称为区域间 VPC 对等连接)。
VPC 对等连接可以帮助您促进数据的传输。例如,如果您有多个AWS账户,则可以通过在这些账户中的 VPC 间建立对等连接来创建文件共享网络。您还可以使用 VPC 对等连接来允许其他 VPC 访问您某个 VPC 中的资源。
当您跨不同 AWS 区域在 VPC 之间建立对等关系时,不同 AWS 区域中的 VPC 中的资源(例如 EC2 实例和 Lambda 函数)可以使用私有 IP 地址相互通信,无需使用网关、VPN 连接或网络设备。这些流量保留在私有 IP 空间中。所有区域间流量均经过加密,没有单点故障或带宽瓶颈。流量一直处于全球AWS骨干网络中,不会经过公有 Internet,这样可以减少面临的威胁,例如常见攻击漏洞和 DDoS 攻击。区域间 VPC 对等连接提供了一种简单经济的方式,可在区域间共享资源或为实现地理冗余性而复制数据。
创建 VPC 对等连接,无需付费。通过保留在可用区内的 VPC 对等连接进行的所有数据传输(即使是在不同账户之间)都是免费的。通过跨可用区和区域的 VPC 对等连接进行的数据传输需支付费用。
三、实验架构示意图
四、实验具体操作步骤
4.0 创建访问密钥
在目标账户
中,创建访问密钥。
4.1 创建VPC资源
说明
:在原始账号和目标账号下面各创建一个对应的VPC,用作跨账号迁移过程中使用的VPC。
导航至 VPC 控制面板,创建VPC等资源。如下图所示。
4.1.1 在源账号上创建VPC
在原始账号上面创建VPC等资源。original-vpc
:172.16.0.0/16
4.1.2 在目标账号上创建VPC
同理,在目标账号上创建VPC等资源。target-vpc
:10.0.0.0/16
4.2 创建对等连接✨
4.2.1 发起对等连接请求
在原始账号或者目标账号发起对等连接请求即可(即由任意一方发起即可)。本操作将在目标账户
中进行操作。
4.2.2 接受对等连接请求
在目标账号
中,导航至 VPC 控制面板中,选择对等连接
,点击接受请求
。
至此,完成对等连接。
4.2.3 更新路由表条目
在原始账号和目标账号中的路由表添加对等连接的路由条目。
依次点击①②③,开始编辑路由。
在其中一个账号中,添加对等连接的路由条目。
在另一个账号中,也添加对等连接的路由条目。
4.3 创建安全组
在原始账号和目标账号中创建所需要的安全组migration-security-group
,留到后面使用。
安全组名称:migration-security-group
安全组ID:sg-0cc3aa9ed251920f8
VPC ID:vpc-091f0fa21e6112c
- 安全组名称:migration-security-group
- 安全组ID:sg-067532200ef35639b
- VPC ID:vpc-04238b2db26d82924
4.4 创建EC2实例
说明:在原始账号下创建EC2实例(名称:migration_ec2_test
)当作跨账号迁移的迁移云主机
使用;
导航至 EC2 控制面板,开始创建EC2实例。
4.5 创建并关联弹性IP地址
ssh连接EC2实例测试。
4.6 在EC2实例创建应用服务
在EC2实例上,安装NextCloud、Tomcat两项服务。用作跨账号迁移EC2实例过程中是否会导致业务应用中断或影响;
4.7 使用MGN解决方案迁移EC2实例✨
注意:此操作需要在目标账号中操作进行。
导航至 Amazon Application Migriation Service 控制面板。
4.7.1 设置服务初始化
温馨提示:建议在添加源服务器之前,先设置好复制模板、启动模板、启动后模板。
4.7.2 设置复制模板
4.7.3 添加源服务器
要将您的源服务器添加到此控制台,您需要在其上安装 AWS 复制代理。使用以下选项构造安装命令,然后复制命令并下载安装程序。
填写 AWS 复制代理安装。
# 下载 安装程序 方法是使用此命令:
sudo wget -O ./aws-replication-installer-init https://aws-application-migration-service-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/aws-replication-installer-init
# 将以下命令复制并输入到源服务器的命令行中:
sudo chmod +x aws-replication-installer-init; sudo ./aws-replication-installer-init --region us-east-1 --aws-access-key-id xxxxxxxxxxxxxxxxxxx --aws-secret-access-key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --user-provided-id i-04b982e0bb8339a77 --no-prompt
等待代理AWS复制代理在源服务器上安装完成。此过程需要等待几分钟。
显示successfully,表示复制代理已在源服务器上安装完成。
在控制面板中,可以显示源服务器的相关迁移信息。
等待数据复制完成。
数据复制状态:初始同步 42% | 剩余15 分钟
在目标账号中 可以查看到卷中含有此SSD磁盘和快照。
数据复制状态:初始同步 100% | 正在创建快照
数据复制状态:正常
当数据复制状态显示正常,复制进度显示为初始复制已完成
,即可进入下一步操作。
4.7.4 设置启动模板
⚠️设置默认版本。
若没有设置成默认模板,在
启动测试实例
会出现如下报错:An error occurred (InvalidSubnetID.NotFound) when calling the DescribeSubnets operation: The subnet ID 'subnet-0f944574db05e97bd' does not exist
4.7.5 启动测试实例
4.7.6 启动割接实例
割接完成,在目标账号中,可以看到割接过来的EC2实例,且原始账号中的EC2实例正常运行不受影响。
完成割接。
4.7.7 设置启动后模板(可选)
4.8 跨账号迁移弹性IP地址
注意
:弹性IP地址支持跨AWS账号且在同一AWS区域
迁移,但不支持跨AWS区域迁移。
在目标账号中,接受转移。
五、实验过程中的问题
问题① 源服务器停滞问题
若出现如下错误,点击复制
下拉框,选择编辑复制设置
。
解决方法
:先停止数据复制,再开始数据复制。
问题② SSH公钥获取并导入其他AWS账号中
You are trying to import the private ssh key file. You should be importing the public ssh key file only.无法通过 AWS 控制台从现有密钥对导入 EC2 密钥对 (长度超过最大值)
ssh-keygen -y -f KEYPAIR.pem
https://serverfault.com/questions/334670/cannot-import-ec2-keypair-length-exceeds-maximum-via-aws-console-from-existing
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCMREtMXMkhxBF2RE11i0+saO+DL8WLbK64UXzNtd1oXCOrIy6v18lkOx8+gchjs5s9KrLZuMPuHstu+WH1T+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3h8YXXUJyH1KVooiqu8ANBq9KBnUs0B2L6hLV0VZy5
在目标账号中,导入原始账号下,该EC2实例SSH远程连接的密钥对。
问题③ EC2实例是否支持跨AWS区域迁移?
支持。
问题④ 弹性IP地址是否支持跨账号且能跨AWS区域迁移?
不支持。
只支持跨账号同一AWS区域之间
迁移。
六、参考链接
1️⃣什么是 AWS Application Migration Service?- 应用程序迁移服务
2️⃣如何使用新的 AWS Application Migration Service 进行直接迁移 | 亚马逊AWS官方博客
3️⃣使用 MGN 连接器简化 亚马逊云科技 应用程序迁移服务复制代理部署 | 亚马逊云科技 云运营与迁移博客
4️⃣ 什么是 VPC 对等? - Amazon Virtual Private Cloud