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

从 EC2-Classic 迁移到 VPC

如果您的 AWS 账户是在 2013 年 12 月 4 日之前创建的,您可能在某些 AWS 区域中具有 EC2-Classic 支持。一些 Amazon EC2 资源和功能(如增强联网和较新的实例类型)需要 Virtual Private Cloud (VPC)。有些资源可在 EC2-Classic 和 VPC 之间共享,而有些则不能。有关更多信息,请参阅在 EC2-Classic 和 VPC 之间共享和访问资源。我们建议您迁移到 VPC 以充分利用仅限于 VPN 的功能。

要从 EC2-Classic 迁移到 VPC,您必须在 VPC 中迁移或重新创建 EC2-Classic 资源。您可以完全迁移和重新创建资源,也可以使用 ClassicLink 随时间推移执行增量迁移。

获取默认 VPC 的选项

默认 VPC 是一个已配置并可供您使用的 VPC,并且仅在仅限 VPC 的区域中可用。对于支持 EC2-Classic 的区域,您可以创建一个非默认 VPC 来设置您的资源。但是,如果您不希望自行设置 VPC,或者您对 VPC 配置没有特定要求,则可能希望使用默认 VPC。有关默认 VPC 的更多信息,请参阅 Amazon VPC 用户指南 中的默认 VPC 和默认子网

以下是当您拥有的 AWS 账户支持 EC2-Classic 时使用默认 VPC 的选项。

切换到仅限 VPC 的区域

如果您希望使用现有账户在默认 VPC 中设置资源,并且您不需要使用特定区域,请使用此选项。要查找具有默认 VPC 的区域,请参阅 检测支持的平台

创建新的 AWS 账户

新的 AWS 账户仅支持 VPC。如果您想要在每个区域中拥有默认 VPC 的账户,请使用此选项。

将您的现有 AWS 账户转换为仅限 VPC

如果您希望在现有账户的每个区域中都有默认 VPC,请使用此选项。您必须先删除所有 EC2-Classic 资源,然后才能转换账户。还可以将某些资源迁移到 VPC。有关更多信息,请参阅将资源迁移到 VPC

转换 EC2-Classic 账户

  1. 删除或迁移(如果适用)您已创建的可供在 EC2-Classic 中使用的资源。这些功能包括:

    • Amazon EC2 实例

    • EC2-Classic 安全组(不包括您无法自行删除的默认安全组)

    • EC2-Classic 弹性 IP 地址

    • Classic Load Balancer

    • Amazon RDS 资源

    • Amazon ElastiCache 资源

    • Amazon Redshift 资源

    • AWS Elastic Beanstalk 资源

    • AWS Data Pipeline 资源

    • Amazon EMR 资源

    • AWS OpsWorks 资源

  2. 转到 AWS Support 中心:console.aws.amazon.com/support

  3. 选择 Create case (创建案例)

  4. 选择账户和账单支持

  5. 对于类型,选择账户。对于类别,选择将 EC2 Classic 转换为 VPC

  6. 根据需要填写其他详细信息,然后选择提交。我们将审核您的请求并与您联系,指导您完成后续步骤。

将资源迁移到 VPC

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

先决条件

开始之前,您必须拥有 VPC。如果您没有默认 VPC,则可以使用以下方法之一创建非默认 VPC:

  • 在 Amazon VPC 控制台中,使用 VPC 向导创建新的 VPC。有关更多信息,请参阅 Amazon VPC 控制台向导配置。如果您希望使用其中一个可用配置选项快速设置 VPC,请使用此选项。

  • 在 Amazon VPC 控制台中,根据您的要求设置 VPC 的组件。有关更多信息,请参阅 VPC 和子网。如果您对 VPC 有特定要求 (如特定数量的子网),请使用该选项。

安全组

如果您希望 VPC 中的实例具有与 EC2-Classic 实例相同的安全组规则,则可以使用 Amazon EC2 控制台将现有 EC2-Classic 安全组规则复制到新的 VPC 安全组。

您只能将安全组规则复制到相同区域内相同 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 账户。有关更多信息,请参阅从 EC2-Classic 迁移弹性 IP 地址

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

在 Amazon EC2 控制台中,选择导航窗格中的弹性 IP。在范围列中,值为标准

或者,使用以下 describe-addresses 命令:

aws ec2 describe-addresses --filters Name=domain,Values=standard

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 支持的 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

通过 ClassicLink 功能可以更容易地管理到 VPC 的增量迁移。借助 ClassicLink,您能够将 EC2-Classic 实例链接到您账户中同一区域的 VPC,从而允许您的新 VPC 资源使用私有 IPv4 地址与 EC2-Classic 实例进行通信。然后,您可以按每次一个组件的方式迁移功能,直到应用程序完全在 VPC 中运行。

如果您无法承受迁移期间的停机时间(例如,如果您的多层应用程序具有无法中断的进程),请使用此选项。

有关 ClassicLink 的更多信息,请参阅 ClassicLink

要有效地使用 ClassicLink,您必须先确定必须迁移到 VPC 的应用程序组件,然后确认迁移功能的顺序。

例如,您的一个应用程序依赖于演示 Web 服务器、后端数据库服务器以及用于交易的身份验证逻辑。您可以决定从身份验证逻辑开始迁移过程,然后是数据库服务器,最后是 Web 服务器。

然后,您可以开始迁移或重新创建资源。有关更多信息,请参阅 将资源迁移到 VPC

配置新的实例并在 VPC 中提供您的应用程序的功能之后,可以使用 ClassicLink 在新 VPC 实例与您的 EC2-Classic 实例之间启用私有 IP 通信。首先,您必须为 ClassicLink 启用 VPC。

为 VPC 启用 ClassicLink

  1. 打开 Amazon VPC 控制台 https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择 Your VPCs

  3. 选择 VPC。

  4. 依次选择操作启用 ClassicLink

  5. 当系统提示进行确认时,选择启用 ClassicLink

在 VPC 中启用 ClassicLink 后,您可以将 EC2-Classic 实例链接到 VPC。该实例必须处于 running 状态。

将实例链接到 VPC

  1. 打开 Amazon EC2 控制台 https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Instances

  3. 选择一个或多个正在运行的 EC2-Classic 实例。

  4. 依次选择操作ClassicLink链接到 VPC

  5. 选择 VPC。控制台只会显示启用了 ClassicLink 的 VPC。

  6. 选择要与您的实例关联的一个或多个安全组。控制台只会显示启用了 ClassicLink 的 VPC 的安全组。

  7. 选择链接

根据应用程序的大小和必须迁移的功能,重复前面的步骤,直到将应用程序的所有组件都从 EC2-Classic 迁移到 VPC 中。

在 EC2-Classic 与 VPC 实例之间启用内部通信之后,您必须将应用程序更新为指向 VPC 中迁移的服务,而不是 EC2-Classic 平台中的服务。此操作的确切步骤取决于应用程序的设计。通常,这包括更新目标 IP 地址以指向 VPC 实例 (而不是 EC2-Classic 实例) 的 IP 地址。

完成此步骤并测试应用程序是否从 VPC 正常工作之后,您可以终止 EC2-Classic 实例并为 VPC 禁用 ClassicLink。还可以清理您不再需要的任何 EC2-Classic 资源,以避免为这些资源产生费用。例如,您可以释放弹性 IP 地址并删除与您的 EC2-Classic 实例关联的卷。

示例:迁移简单的 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 和子网。第二个向导配置创建具有一个私有子网和一个公有子网的 VPC,并在公有子网中为您启动和配置一个 NAT 设备。有关更多信息,请参阅 Amazon VPC 用户指南 中的具有公有和私有子网 (NAT) 的 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 服务器关联。有关更多信息,请参阅从 EC2-Classic 迁移弹性 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 资源以使它们停止产生费用。