【AWS SMB 能力最佳实践】利用 MGN 解决方案实现跨AWS账号迁移Amazon EC2 实例、弹性IP地址等资源

发布于:2024-06-23 ⋅ 阅读:(36) ⋅ 点赞:(0)

一、实验情景

近期,针对一家客户提出了这样的一个场景需求,如何实现云主机跨账号迁移?AWS服务是否有提供解决方案以实现这一操作。
image-20240619144124254

本实验将带领大家一起复现该实验场景,教你一步一步操作迁移。

二、实验关键服务概述

实验涉及的云资源服务

VPC、VPC对等连接、Amazon EC2、Amazon Application Migration Service、IAM、弹性IP地址等。

2.1 MGN解决方案

AWS Application Migration Service (MGN) 是一种高度自动化的直接迁移(重新托管)服务 简化、加快和降低将应用程序迁移到 AWS 的成本的解决方案。它 允许公司直接迁移大量物理、虚拟或云服务器,而无需 兼容性问题、性能中断或转换窗口过长。MGN 复制源 服务器添加到您的 AWS 账户中。当您准备好时,它会自动转换并启动您的 AWS 上的服务器,因此您可以快速从成本节约、生产力、弹性和 云的敏捷性。一旦您的应用程序在 AWS 上运行,您就可以利用 AWS 服务和 能够快速轻松地重新构建或重构这些应用程序 - 这使得 直接迁移:实现现代化的快速途径。


image-20240525145142931

2.2 VPC对等连接

VPC 对等连接是两个 VPC 之间的网络连接,通过此连接,您可以使用私有 IPv4 地址或 IPv6 地址在两个 VPC 之间路由流量。这两个 VPC 中的实例可以彼此通信,就像它们在同一网络中一样。您可以在自己的 VPC 之间创建 VPC 对等连接,或者在自己的 VPC 与其他AWS账户中的 VPC 之间创建连接。VPC 可位于不同区域内(也称为区域间 VPC 对等连接)。


image-20240619151127011

VPC 对等连接可以帮助您促进数据的传输。例如,如果您有多个AWS账户,则可以通过在这些账户中的 VPC 间建立对等连接来创建文件共享网络。您还可以使用 VPC 对等连接来允许其他 VPC 访问您某个 VPC 中的资源。


当您跨不同 AWS 区域在 VPC 之间建立对等关系时,不同 AWS 区域中的 VPC 中的资源(例如 EC2 实例和 Lambda 函数)可以使用私有 IP 地址相互通信,无需使用网关、VPN 连接或网络设备。这些流量保留在私有 IP 空间中。所有区域间流量均经过加密,没有单点故障或带宽瓶颈。流量一直处于全球AWS骨干网络中,不会经过公有 Internet,这样可以减少面临的威胁,例如常见攻击漏洞和 DDoS 攻击。区域间 VPC 对等连接提供了一种简单经济的方式,可在区域间共享资源或为实现地理冗余性而复制数据。


创建 VPC 对等连接,无需付费。通过保留在可用区内的 VPC 对等连接进行的所有数据传输(即使是在不同账户之间)都是免费的。通过跨可用区和区域的 VPC 对等连接进行的数据传输需支付费用。

三、实验架构示意图

image-20240525145238580

四、实验具体操作步骤

4.0 创建访问密钥

目标账户中,创建访问密钥。

image-20240523155142773

image-20240523155314941

image-20240523155349152

4.1 创建VPC资源

说明:在原始账号目标账号下面各创建一个对应的VPC,用作跨账号迁移过程中使用的VPC。

导航至 VPC 控制面板,创建VPC等资源。如下图所示。

4.1.1 在源账号上创建VPC

在原始账号上面创建VPC等资源。original-vpc:172.16.0.0/16

image-20240523115531718

image-20240523115621683

image-20240523115722952

4.1.2 在目标账号上创建VPC

同理,在目标账号上创建VPC等资源。target-vpc:10.0.0.0/16

image-20240523115950501

image-20240523120040601

image-20240523120108096

4.2 创建对等连接✨

4.2.1 发起对等连接请求

在原始账号或者目标账号发起对等连接请求即可(即由任意一方发起即可)。本操作将在目标账户中进行操作。

image-20240523120557300

image-20240523120840010

image-20240523120927208

4.2.2 接受对等连接请求

目标账号中,导航至 VPC 控制面板中,选择对等连接,点击接受请求

image-20240523121914956

image-20240523122223386

image-20240523122247279

至此,完成对等连接。

4.2.3 更新路由表条目

在原始账号和目标账号中的路由表添加对等连接的路由条目。

依次点击①②③,开始编辑路由。

image-20240523130851111

在其中一个账号中,添加对等连接的路由条目。

image-20240523143754261

image-20240523143827875

在另一个账号中,也添加对等连接的路由条目。

image-20240523144150214

image-20240523144241186

4.3 创建安全组

在原始账号和目标账号中创建所需要的安全组migration-security-group,留到后面使用。

安全组名称:migration-security-group

安全组ID:sg-0cc3aa9ed251920f8

VPC ID:vpc-091f0fa21e6112c

image-20240523144412746

  • 安全组名称:migration-security-group
  • 安全组ID:sg-067532200ef35639b
  • VPC ID:vpc-04238b2db26d82924

image-20240523144510435

4.4 创建EC2实例

说明:在原始账号下创建EC2实例(名称:migration_ec2_test)当作跨账号迁移的迁移云主机使用;

导航至 EC2 控制面板,开始创建EC2实例。

image-20240523145934438

image-20240523145952580

image-20240523150007717

image-20240523150123504

4.5 创建并关联弹性IP地址

image-20240523150253526

image-20240523150325474

image-20240523150356681

image-20240523150435385

ssh连接EC2实例测试。

image-20240523150641210

4.6 在EC2实例创建应用服务

在EC2实例上,安装NextCloud、Tomcat两项服务。用作跨账号迁移EC2实例过程中是否会导致业务应用中断或影响;

image-20240523154324630

image-20240523154342691

4.7 使用MGN解决方案迁移EC2实例✨

注意:此操作需要在目标账号中操作进行。

导航至 Amazon Application Migriation Service 控制面板。

image-20240522134405591

4.7.1 设置服务初始化

image-20240522134427864

image-20240522134505633

image-20240525115456751

温馨提示:建议在添加源服务器之前,先设置好复制模板、启动模板、启动后模板。

4.7.2 设置复制模板

image-20240523161331317

image-20240523161258664

4.7.3 添加源服务器

image-20240522134735519

要将您的源服务器添加到此控制台,您需要在其上安装 AWS 复制代理。使用以下选项构造安装命令,然后复制命令并下载安装程序。

image-20240523155631590

填写 AWS 复制代理安装。

image-20240523160208663

# 下载 安装程序 方法是使用此命令:
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

image-20240527102333563

等待代理AWS复制代理在源服务器上安装完成。此过程需要等待几分钟。

image-20240523160557028

显示successfully,表示复制代理已在源服务器上安装完成。

image-20240523162224076

在控制面板中,可以显示源服务器的相关迁移信息。

image-20240523162158329

等待数据复制完成。

image-20240523162451329

image-20240523162632667

数据复制状态:初始同步 42% | 剩余15 分钟

image-20240523163411007

在目标账号中 可以查看到卷中含有此SSD磁盘和快照。

image-20240523163114355

image-20240523163635520

数据复制状态:初始同步 100% | 正在创建快照

image-20240523163943725

数据复制状态:正常

image-20240523172532423

当数据复制状态显示正常,复制进度显示为初始复制已完成,即可进入下一步操作。

image-20240523172647264

4.7.4 设置启动模板

image-20240523161455983

image-20240523161529499

⚠️设置默认版本。

image-20240523180233802

若没有设置成默认模板,在启动测试实例会出现如下报错:An error occurred (InvalidSubnetID.NotFound) when calling the DescribeSubnets operation: The subnet ID 'subnet-0f944574db05e97bd' does not exist


image-20240523180529633

4.7.5 启动测试实例

image-20240523172833790

image-20240523172848042

image-20240523172927153

image-20240523174258366

image-20240523182012332

image-20240523182037215

image-20240523182117037

image-20240523182445488

image-20240523182219871

4.7.6 启动割接实例

image-20240523182610139

image-20240523182642039

image-20240523182702249

image-20240523183754955

割接完成,在目标账号中,可以看到割接过来的EC2实例,且原始账号中的EC2实例正常运行不受影响。

image-20240523184119961

image-20240523184403922

在这里插入图片描述

完成割接。

image-20240523184613386

image-20240523184834841

4.7.7 设置启动后模板(可选)

image-20240523170049129

image-20240523170114336

image-20240523170232811

4.8 跨账号迁移弹性IP地址

注意:弹性IP地址支持跨AWS账号且在同一AWS区域迁移,但不支持跨AWS区域迁移。

image-20240523185145239

image-20240523185201712

image-20240523185217988

image-20240523185326843

image-20240523185524354

image-20240523185541711

在目标账号中,接受转移。

image-20240523190011060

五、实验过程中的问题

问题① 源服务器停滞问题

若出现如下错误,点击复制下拉框,选择编辑复制设置

image-20240523161623422

image-20240523161724260

image-20240523161842364

解决方法:先停止数据复制,再开始数据复制。

image-20240523162015217

image-20240523161920047

image-20240523162123356


问题② 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

image-20240523193310745

https://serverfault.com/questions/334670/cannot-import-ec2-keypair-length-exceeds-maximum-via-aws-console-from-existing

image-20240525120514618

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCMREtMXMkhxBF2RE11i0+saO+DL8WLbK64UXzNtd1oXCOrIy6v18lkOx8+gchjs5s9KrLZuMPuHstu+WH1T+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3h8YXXUJyH1KVooiqu8ANBq9KBnUs0B2L6hLV0VZy5

在目标账号中,导入原始账号下,该EC2实例SSH远程连接的密钥对。

image-20240523172428204

image-20240523172449311

image-20240523192725882

image-20240523192755714

问题③ EC2实例是否支持跨AWS区域迁移?

支持。

问题④ 弹性IP地址是否支持跨账号且能跨AWS区域迁移?

不支持。

只支持跨账号同一AWS区域之间迁移。

六、参考链接

1️⃣什么是 AWS Application Migration Service?- 应用程序迁移服务

2️⃣如何使用新的 AWS Application Migration Service 进行直接迁移 | 亚马逊AWS官方博客

3️⃣使用 MGN 连接器简化 亚马逊云科技 应用程序迁移服务复制代理部署 | 亚马逊云科技 云运营与迁移博客

4️⃣ 什么是 VPC 对等? - Amazon Virtual Private Cloud