在更改 EC2 Linux 实例的实例类型之前,我需要采取哪些步骤?

上次更新日期:2021 年 9 月 13 日

我的系统需要比当前 Amazon Elastic Compute Cloud(Amazon EC2)实例上的可用 CPU 或内存更多的 CPU 或内存。在调整实例大小之前应采取哪些步骤来确保成功过渡?

简短描述

通过更改 EC2 Linux 实例的实例类型,您可以更改:

  • CPU 内核数量
  • RAM 的量
  • 分配的实例存储空间量
  • Amazon Elastic Block Store(Amazon EBS)优化
  • 增强型联网
  • GPU 内核数
  • FPGA
  • 机器学习加速器

注意:最佳实践是维持实例和数据的备份。在更改您的基础设施之前,考虑创建 AMI创建 EBS 卷的快照

解决方法

在更改实例类型或实例系列之前,请验证当前实例类型与新实例类型是否兼容。更改实例类型时,以下常见问题会导致兼容性问题。有关兼容性问题的完整列表,请参阅更改实例类型的兼容性

验证兼容性后,您可以更改 Amazon EBS 支持的实例的实例类型

停止您的实例

更改实例类型之前,您必须停止实例。停止实例前,确保了解以下内容:

  • 如果您的实例受实例存储支持或具有包含数据的实例存储卷,则在实例停止时数据将丢失。如果要从一个实例存储支持的实例迁移到另一个实例存储支持的实例,您必须迁移实例存储支持的实例。有关更多信息,请参阅迁移实例存储支持的实例
  • 如果您的实例是 Amazon EC2 Auto Scaling 组的一部分,停止实例可能会终止实例。如果您使用 Amazon EMR、AWS CloudFormation 或 AWS Elastic Beanstalk 启动实例,您的实例可能是 AWS Auto Scaling 组的一部分。在这种情况下,是否会发生实例终止取决于您的 Auto Scaling 组的实例缩减保护设置。如果您的实例是 Auto Scaling 组的一部分,则在开始执行解决步骤之前,暂时从 Auto Scaling 组中删除该实例
  • 如果您未使用弹性 IP 地址,则停止并重启实例会更改实例的公有 IP 地址。在将外部流量路由到您的实例时,最佳做法是使用弹性 IP 地址而不是公有 IP 地址。如果您使用 Route 53,您可能必须在公有 IP 更改时更新 Route 53 DNS 记录

增强型联网

如果要转换为支持增强联网的实例,安装所有必需的驱动程序并在当前实例上启用增强联网。有关更多信息,请参阅 Linux 上的增强联网

基于 Nitro 的实例类型

如果您计划将实例更改为基于 Nitro 的实例类型,请执行以下操作:

  • 检查您的实例上是否安装了 NVMe 和 ENA 模块。
  • 检查 /etc/fstab 中列出的任何块储存设备是否与 NVMe 块储存设备名称(/dev/nvme1/dev/nvme2 等)兼容。
  • Amazon Elastic Block Store(Amazon EBS)卷将作为 NVMe 设备公开给这些实例类型,并且设备名称也会在停止/启动事件时发生变化。为避免卷不匹配,请使用文件系统 UUID 或标签挂载文件系统。

要自动执行这些检查,请运行 NitroInstanceChecks 脚本。有关详细信息,请参阅为何我的 Linux 实例在我将其类型更改为基于 Nitro 的实例类型后未启动?按照运行 NitroInstanceChecks 脚本部分中的说明进行操作。

在运行脚本并进行必要的更新之后,请验证 /etc/udev/rules.d/70-persistent-net.rules 中的驱动程序条目是否已设置为 ?ENA

使用文本编辑器来访问该文件。以下示例使用 vi 编辑器。

vi /etc/udev/rules.d/70-persistent-net.rules

正确的条目如下所示:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="01:23:45:67:89:ab", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0

最新一代实例上的联网

最新一代实例只能在 Virtual Private Cloud (VPC) 中启动。如果您的当前实例是 EC2-Classic 实例,则将实例迁移到 VPC 中的 Linux 实例

混合 EC2 架构

如果您的实例的源 AMI 是为特定架构构建的,则您只能创建同一架构的实例类型。为特定架构构建的 AMI 示例可能包括 32 位(i386)、64 位(x86_64)或 64 位 ARM(arm64)。如果您的实例运行的是为 mac1 实例类型创建的 AMI,情况亦是如此。您无法在实例类型之间移动这些映像。