从 EC2-Classic 迁移到 VPC - Amazon Elastic Compute Cloud

从 EC2-Classic 迁移到 VPC

我们将于 2022 年 8 月 15 日停用 EC2-Classic。为避免工作负载中断,我们建议您在 2022 年 8 月 15 日之前从 EC2-Classic 迁移到 VPC。有关更多信息,请参阅博客文章 EC2-Classic Networking is Retiring - Here's How to Prepare

要从 EC2-Classic 迁移到 VPC,您必须在 VPC 中迁移或重新创建 EC2-Classic 资源。

将资源迁移到 VPC

您可以将部分资源迁移或移动到 VPC。某些资源只能从 EC2-Classic 迁移到位于同一区域和同一 AWS 账户中的 VPC。如果无法迁移资源,则必须创建新资源以供在 VPC 中使用。

先决条件

开始之前,您必须拥有 VPC。如果您没有默认 VPC,则可以创建非默认 VPC。有关更多信息,请参阅创建 VPC

安全组

如果您希望 VPC 中的实例具有与 EC2-Classic 实例相同的安全组规则,则可以使用 Amazon EC2 控制台将现有 EC2-Classic 安全组规则(包括默认规则)复制到新的 VPC 安全组。默认安全组无法删除,将由系统在 EC2-Classic 停用时代表您删除。

您只能将安全组规则复制到相同区域内相同 AWS 账户中的新安全组。如果您使用不同的区域或不同的 AWS 账户,则必须创建新的安全组并自行手动添加规则。有关更多信息,请参阅适用于 Windows 实例的 Amazon EC2 安全组

将您的安全组规则复制到新安全组

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Security Groups (安全组)

  3. 选择与您的 EC2-Classic 实例关联的安全组,再选择操作,然后选择复制到新项目

    注意

    要标识 EC2-Classic 安全组,请检查 VPC ID 列。对于每个 EC2-Classic 安全组,列中的值为空或 - 符号。

  4. Create Security Group (创建安全组) 对话框中,为您的新安全组指定名称和说明。从 VPC 列表中选择您的 VPC。

  5. Inbound (入站) 选项卡会使用您 EC2-Classic 安全组中的规则进行填充。您可以根据需要修改这些规则。在 Outbound (出站) 选项卡中,已自动为您创建允许所有出站流量的规则。有关修改安全组规则的更多信息,请参阅适用于 Windows 实例的 Amazon EC2 安全组

    注意

    如果您在 EC2-Classic 安全组中定义了引用其他安全组的规则,则您无法在 VPC 安全组中使用相同规则。请将该规则修改为引用同一 VPC 中的安全组。

  6. 选择 Create (创建)

弹性 IP 地址

您可以迁移已分配的以供在 EC2-Classic 中使用的弹性 IP 地址以便与 VPC 一起使用。您不能将弹性 IP 地址迁移到另一个区域或 AWS 账户。您不能迁移在 24 小时之前分配给您的账户弹性 IP 地址。

在迁移弹性 IP 地址时,该地址会计入 VPC 的弹性 IP 地址限制。如果某个弹性 IP 地址会导致您超出限制,则不能迁移该地址。要迁移弹性 IP 地址,则不得将该地址与实例关联。有关解除弹性 IP 地址与实例的关联的更多信息,请参阅解除弹性 IP 地址的关联

在您执行相关命令来移动或还原弹性 IP 地址后,弹性 IP 地址的迁移过程可能需要花费几分钟时间。使用 describe-moving-addresses 命令可查看您的弹性 IP 地址是仍在移动还是已完成移动。移动完成后,您可以在 Elastic IPs(弹性 IP)页面查看弹性 IP 地址的分配 ID。如果弹性 IP 地址处于移动状态超过 5 分钟,请联系 AWS Support

标识已分配的以供在 EC2-Classic 中使用的弹性 IP 地址

打开 Amazon EC2 控制台。在导航窗格中选择 Elastic IPs(弹性 IP),然后选择该弹性 IP 地址对应的复选框。在 Summary(摘要)页面上,检查 Scope(范围)是 EC2-Classic 还是 VPC

使用 Amazon EC2 控制台移动弹性 IP 地址

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Elastic IPs

  3. 依次选择弹性 IP 地址、ActionsMove to VPC scope

  4. 在确认对话框中,选择 Move Elastic IP

AMI 和实例

AMI 是用于启动 Amazon EC2 实例的模板。您可以基于现有 EC2-Classic 实例创建自己的 AMI,然后使用该 AMI 在 VPC 中启动实例。

识别 EC2-Classic 实例

如果您有实例同时在 EC2-Classic 和 VPC 中运行,则可以识别您的 EC2-Classic 实例。

Amazon EC2 控制台

在导航窗格中选择实例。在 VPC ID 列中,每个 EC2-Classic 实例的值为空或 - 符号。如果 VPC ID 列不存在,请选择齿轮图标并将列设为可见。

AWS CLI

使用以下 describe-instances AWS CLI 命令。--query 参数只会显示 VpcId 的值为 null 的实例。

aws ec2 describe-instances --query 'Reservations[*].Instances[?VpcId==`null`]'

创建 AMI

确定您的 EC2-Classic 实例后,您可以通过该实例创建 AMI。

创建 Windows AMI

有关更多信息,请参阅创建自定义 Windows AMI

创建 Linux AMI

用于创建 Linux AMI 的方法取决于您的实例的根设备类型,以及实例运行时所在的操作系统平台。要查明您实例的根设备类型,请转到 Instances 页面,选择您的实例,然后在 Description (描述) 选项卡上的 Root device type (根设备类型) 字段中查看信息。如果值为 ebs,则说明您的实例是由 EBS 提供支持。如果值为 instance-store,则说明您的实例是由实例存储提供支持。您还可以使用 describe-instances AWS CLI 命令查明根设备类型。

下表为您提供用于基于实例的根设备类型和软件平台创建 Linux AMI 的选项。

重要

一些实例类型同时支持半虚拟化 (PV) 和硬件虚拟机 (HVM) 虚拟化,而其他实例类型只支持其中之一。如果您计划使用 AMI 启动与当前实例类型不同的实例类型,请验证该实例类型是否支持 AMI 提供的虚拟化类型。如果 AMI 支持 PV 虚拟化,而您要使用支持 HVM 虚拟化的实例类型,则您可能必须在基础 HVM AMI 上重新安装软件。有关 PV 和 HVM 虚拟化的更多信息,请参阅 Linux AMI 虚拟化类型

实例根设备类型 操作
EBS

从实例创建由 EBS 支持的 AMI。有关更多信息,请参阅创建由 Amazon EBS 提供支持的 Linux AMI

实例存储

使用 AMI 工具从实例创建由实例存储支持的 AMI。有关更多信息,请参阅创建实例存储支持的 Linux AMI

实例存储

将由实例存储支持的实例转换为由 EBS 支持的实例。有关更多信息,请参阅将实例存储支持的 AMI 转换为由 Amazon EBS-backed AMI

(可选)共享或复制您的 AMI

要使用 AMI 在新的 AWS 账户中启动实例,您必须首先与新账户共享 AMI。有关更多信息,请参阅特定 AWS 共享共享 AMI

要使用 AMI 在不同区域的 VPC 中启动实例,您必须首先将 AMI 复制到该区域。有关更多信息,请参阅复制 AMI

(可选)在 Amazon EBS 卷上存储您的数据

您可以创建 Amazon EBS 卷并使用它备份和存储实例中的数据 – 如同使用物理硬盘一样。Amazon EBS 卷可以与同一可用区中的任何实例附加和分离。您可以将卷与 EC2-Classic 中实例分离,并将它附加到在同一可用区内的 VPC 中启动的新实例。

有关 Amazon EBS 卷的更多信息,请参阅以下主题:

要备份 Amazon EBS 卷上的数据,可以拍摄卷的定期快照。有关更多信息,请参阅创建 Amazon EBS 快照。如果您需要,可以从快照创建 Amazon EBS 卷。有关更多信息,请参阅从快照创建卷

将实例启动到 VPC 中

创建 AMI 后,您可以使用 Amazon EC2 启动向导在 VPC 中启动实例。实例将具有与现有 EC2-Classic 实例相同的数据和配置。

注意

您可以利用此机会升级到当前一代实例类型

在 VPC 中启动实例

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在控制面板上,选择启动实例

  3. Choose an Amazon Machine Image (选择一个Amazon 系统映像) 页面上,选择 My AMIs (我的 AMI) 类别,然后选择您创建的 AMI。或者,如果您从另一个账户共享了 AMI,请在所有权筛选列表中选择与我共享。选择您从 EC2-Classic 账户共享的 AMI。

  4. Choose an Instance Type 页面上,选择实例的类型,然后选择 Next: Configure Instance Details

  5. Configure Instance Details (配置实例详细信息) 页面中的 Network (网络) 列表中选择您的 VPC。从 Subnet (子网) 列表中选择所需子网。配置您需要的任何其他详细信息,然后完成向导中的后续页面,直至到达配置安全组页面。

  6. 选择选择现有组,然后选择您为 VPC 创建的安全组。选择 Review and Launch

  7. 查看实例详细信息,然后选择 Launch 以指定密钥对并启动实例。

有关您在向导的每个步骤中可以配置的参数的更多信息,请参阅使用旧的启动实例向导启动实例

Amazon RDS 数据库实例

您可以将 EC2-Classic 数据库实例移到同一个账号、同一个区域的 VPC 中。有关更多信息,请参阅 Amazon RDS 用户指南 中的更新数据库实例的 VPC

Classic Load Balancer

您可以将 EC2-Classic 中的 Classic Load Balancer 迁移到 VPC 中的 Classic Load Balancer,或者可以将 Classic Load Balancer 迁移到 Application Load Balancer 或 Network Load Balancer。有关更多信息,请参阅 Elastic Load Balancing 用户指南中的迁移 Classic Load Balancer

使用 AWSSupport-MigrateEC2ClassicToVPC 运行手册

AWSSupport-MigrateEC2ClassicToVPC 运行手册将 EC2-Classic 实例迁移到 VPC。有关更多信息,请参阅如何将 EC2-Classic 实例迁移到 VPC?

示例:迁移简单的 Web 应用程序

在此示例中,您使用 AWS 托管您的园艺网站。为了管理您的网站,您在 EC2-Classic 中有三个正在运行的实例。实例 A 和 B 托管面向公众的 Web 应用程序,Elastic Load Balancing 用于对这些实例之间的流量进行负载均衡。您向实例 A 和 B 分配了弹性 IP 地址,从而可将静态 IP 地址用于这些实例上的配置和管理任务。实例 C 存储您网站的 MySQL 数据库。您注册了域名 www.garden.example.com,并且使用 Route 53 创建了一个托管区域,该区域具有与负载均衡器的 DNS 名称关联的别名记录集。


                EC2-Classic 中的 Web 应用程序

第一部分往 VPC 的迁移决定了适合您需要的 VPC 架构类型。在此情况中,您做出了以下决定:将一个公有子网用于您的 Web 服务器,而将一个私有子网用于您的数据库服务器。随着您网站的发展,您可以向子网添加更多 Web 服务器和数据库服务器。默认情况下,私有子网中的实例无法访问 Internet;但是,您可以通过公有子网中的网络地址转换 (NAT) 设备启用 Internet 访问。您可能需要设置 NAT 设备,以通过 Internet 为数据库服务器提供定期更新和补丁。将弹性 IP 地址迁移到 VPC,并在公有子网中创建负载均衡器来对 Web 服务器之间的流量进行负载均衡。


                VPC 中的 Web 应用程序

要将您的 Web 应用程序迁移到 VPC,您可以执行以下步骤:

  • 创建 VPC:有关更多信息,请参阅《Amazon VPC 用户指南》中的创建 VPC。有关 VPC 架构方案的信息,请参阅《Amazon VPC 用户指南》中的方案

  • 配置您的安全组:在 EC2-Classic 环境中,您将一个安全组用于 Web 服务器,并将另一个安全组用于数据库服务器。您可以使用 Amazon EC2 控制台将规则从每个安全组复制到用于您 VPC 的新安全组中。有关更多信息,请参阅安全组

    提示

    首先创建由其他安全组引用的安全组。

  • 创建 AMI 并启动新实例:从您的一个 Web 服务器创建一个 AMI,并从数据库服务器创建第二个 AMI。然后,在公有子网中启动替换 Web 服务器,并在私有子网中启动替换数据库服务器。有关更多信息,请参阅创建 AMI

  • 配置您的 NAT 设备:如果您使用的是 NAT 实例,则必须为其创建安全组,以便允许来自您的私有子网的 HTTP 和 HTTPS 流量。有关更多信息,请参阅 NAT 实例。如果您使用的是 NAT 网关,则会自动允许来自您的私有子网的流量。

  • 配置您的数据库:在 EC2-Classic 中从数据库服务器创建 AMI 时,该实例中存储的所有配置信息都已复制到 AMI。您可能必须连接到新的数据库服务器并更新配置详细信息。例如,如果您将数据库配置为向 EC2-Classic 中的 Web 服务器授予完全读取、写入和修改权限,则您需要更新配置文件以改为向新 VPC Web 服务器授予相同权限。

  • 配置您的 Web 服务器:您的 Web 服务器将具有与 EC2-Classic 中的实例相同的配置设置。例如,如果您将 Web 服务器配置为使用 EC2-Classic 中的数据库,请将您 Web 服务器的配置设置更新为指向您的新数据库实例。

    注意

    默认情况下,不会向在非默认子网中启动的实例分配公有 IP 地址,除非您在启动时另行指定。您的新数据库服务器可能没有公有 IP 地址。在这种情况下,您可以更新您 Web 服务器的配置文件以使用新数据库服务器的私有 DNS 名称。同一 VPC 中的实例通过私有 IP 地址互相通信。

  • 迁移您的弹性 IP 地址:在 EC2-Classic 中从您的 Web 服务器取消与弹性 IP 地址的关联,然后将这些地址迁移到 VPC。迁移这些地址后,您可在 VPC 中将其与您的新 Web 服务器关联。有关更多信息,请参阅弹性 IP 地址

  • 创建新负载均衡器:要继续使用 Elastic Load Balancing 对发送到实例的流量进行负载均衡,请确保您了解在 VPC 中配置负载均衡器的各种方法。有关更多信息,请参阅 Elastic Load Balancing 用户指南

  • 更新您的 DNS 记录:在公有子网中设置了负载均衡器之后,请验证 www.garden.example.com 域指向您的新负载均衡器。为此,请更新 DNS 记录和 Route 53 中的别名记录集。有关使用 Route 53 的更多信息,请参阅 Route 53 入门

  • 关闭您的 EC2-Classic 资源:验证了您的 Web 应用程序是否正在 VPC 架构内运行之后,可以关闭 EC2-Classic 资源以使它们停止产生费用。