想升级配置却担心数据丢失?升级了实例却遇到了没想到的报错?别着急,这篇文章详细教你怎么避免这些常见错误,安心升级业务配置!
开始之前,我们先来看一下这篇文章涵盖哪些内容?
01
机型升级之前需要确认的事项
对实例做任何升级修改之前请先通过 EBS 快照以及 AMI 的方式做好数据备份,如果是对生产环境的实例做修改请先在测试环境确认无误之后再进行。
01
确认自己的存储类型
查看准备升级的实例详情的 根设备类型 属性:
如果值是 ebs,则该实例使用的是由EBS 支持的 AMI:
由于EBS是持久性存储,升级实例类型时对EBS卷上数据无影响,不需要做特殊操作;
检查下一部分的 软件兼容性 ;
如果值是 instance store,则该实例使用的是由实例存储支持的 AMI:
由于实例存储是临时性存储,实例停止之后该卷上数据会丢失,如果有重要数据需要 提前对实例存储做备份;
可以选择手动将实例存储卷上数据备份到EBS,参考文档《如何将 Amazon EC2 实例上的实例存储卷备份到 Amazon EBS?》 ;
可以选择创建由实例存储支持的AMI,后续再使用该AMI创建新的实例类型,参考文档《创建由实例存储支持的 Linux AMI》;
02
确认软件兼容性
确保在升级到特定的实例类型前,先安装必要的驱动。主要包含两类,一是增强联网(ENA驱动),二是 NVMe驱动。
1) 增强联网:新一代实例类型提供增强联网功能,进一步提高带宽和每秒数据包数 (PPS) 性能,并不断降低实例间的延迟。另外使用增强联网不收取任何额外费用。
如果您需要从上一代实例类型升级到以下新一代实例类型,请提前安装 Elastic Network Adapter (ENA) 驱动来实现增强联网。新一代实例类型最多支持 100 Gbps 的网络速度。如果不安装ENA模块直接修改到以下实例类型可能会导致新实例无法启动:A1, T3, T3a,C5, C5d, C5n, m4.16xlarge, M5, M5a, M5ad, M5d, M5dn, M5n, R4, R5, R5a, R5ad, R5d, R5dn, R5n,F1, G3, G4, H1, I3, I3en, Inf1, P2, P3, u-6tb1.metal, u-9tb1.metal, u-12tb1.metal, u-18tb1.metal, u-24tb1.metal, X1, X1e, and z1d。
在 Linux 实例上启用ENA 增强联网,具体安装步骤:参考文档《在 Linux 实例上启用 Elastic Network Adapter (ENA) 增强联网》
首先检查目前实例是否启用了增强联网;
如果没有ENA驱动,请根据文档中步骤安装;
实例升级前,再次执行第一步中的检查步骤确保现实例AMI已经开启ENA驱动;
在 Windows 实例上启用ENA 增强联网,参考文档《在 Windows 实例上启用 Elastic Network Adapter (ENA) 增强联网》
如果您需要升级到C3、C4、D2、I2、M4 (m4.16xlarge 除外) 和 R3 实例类型,请启用 Intel 82599 虚拟功能 (VF) 接口实现增强联网,最多支持 10 Gbps 的网络速度。如果不安装 VF 接口模块直接修改到该实例类型可能会导致新实例无法启动。
在 Linux 实例上启用VF接口增强联网,具体安装步骤参考文档《在 Linux 实例上启用 Intel 82599 VF 接口增强联网》
首先检查目前实例是否启用了增强联网;
如果没有VF接口,请根据文档中步骤安装;
实例升级前,再次执行第一步中的检查步骤确保现实例AMI已经开启VF接口;
在 Windows 实例上启用VF接口增强联网,参考文档《在 Windows 实例上启用 Intel 82599 VF 接口增强联网》
2) NVMe: 基于 Nitro 的实例(参考文档《实例类型
》)上EBS 卷显示为 NVMe 块储存设备,设备名称为 /dev/nvme0n1、/dev/nvme1n1
如果您需要升级到以下实例类型,需要安装 NVMe 驱动程序才能访问 NVMe 卷:A1、C5、C5d、C5n、G4、I3en、Inf1、M5、M5a、M5ad、M5d、M5dn、M5np3dn.24xlarge、R5、R5a、R5ad、R5d、R5dn、R5n、T3、T3a 和 z1d
Linux 实例安装 NVMe模块参考文档《Linux 实例上的 Amazon EBS 和 NVMe》
请注意自己旧实例对应的AMI类型,不同系统安装指令不同
Windows 实例安装 NVMe模块参考文档《Windows 实例上的 Amazon EBS 和 NVMe》
PS:升级到C5/M5可以使用运行 c5_m5_checks_script来检查驱动是否安装完整。
03
确认网络配置
无论您采用哪种升级方式,实例升级都需要Stop(停止)实例。若实例分配了Public IPv4(公有 IPv4),则此操作会导致此地址发生变化;若实例绑定的是Elastic IP(弹性IP)则不受影响。
如果您在应用中 没有使用任何实例的IP地址或DNS,则无需修改代码。
如果您在的应用中 使用了实例的Public IPv4 (公有IPv4) 地址,您需要 修改代码 来使用新分配的Public IPv4地址,请在升级前确保客户端代码能够更新。如果您希望今后实例的 IP 地址可以固定,而不是每次 Stop 都会更换,则请使用 弹性 IP 地址(参考文档《弹性 IP 地址》)。
如果您的应用中 使用了弹性IP地址 指向实例
如果实例可以直接通过Stop实例来修改实例类型升级则无需修改代码
如果无法直接升级(如采用 Instance Storage 或者虚拟化技术不兼容等),需要从原实例解绑弹性IP并绑定到新实例,无需修改您的代码。注意:新实例和旧实例在同一个VPC才能使用旧实例的弹性IP,更多信息参考本篇文章《更改实例类型》。
如果您的应用中 使用了实例的 Private IPv4(私有IPv4) 地址
如果实例可以直接通过 Stop 操作来修改实例类型升级则无需修改代码
如果无法直接升级(如旧实例为 Instance Storage 或者虚拟化技术不兼容等)需要删除实例重新创建,您可以在备份数据之后先删除原实例,然后在相同的子网启动新实例并指定原来的Private IPv4地址;您也可以在创建新实例的时候不指定Private IPv4地址从而获得新的Private IPv4地址,然后修改代码来使用新的Private IPv4地址,请在升级前确保您的业务代码能够更新。
02
调整实例类型的方法
在做完了上述检查之后,具体该如何做实例机型的升级呢?基于您的原有实例存储类型的不同,此章节介绍两种不同的方法。请根据自己的旧实例的实例类型 (instance type) 选择对应的方法哦。
01
调整由 Amazon EBS 支持的实例的大小
如果您的原有实例为 EBS 支持的实例类型,直接在控制台修改实例大小就可以啦。具体步骤如下。
开始之前:如果新实例类型需要现有实例上未安装的驱动程序,您必须先安装驱动程序 (参考上一章节的 Step 2 )。
打开 Amazon EC2 控制台。在导航窗格中,选择 Instances。
选择所需实例,然后依次选择 Actions、Instance State、Stop。在确认对话框中,选择 Yes, Stop。注意,根据您的实例大小以及负载的不同,停止实例可能需要几分钟时间。
在实例处于选中状态时,依次选择 Actions、Instance Settings 和 Change Instance Type (修改实例类型)。如果实例状态不是 stopped 的情况下,此操作是被禁用的。
在 Change Instance Type 对话框中,执行以下操作:
从 Instance Type 中,选择您所需的实例类型。如果列表中未显示您所需的实例类型,则说明它可能与您的实例配置(虚拟化类型或者 AMI 架构)不兼容,请选择与之相兼容的实例,或者查看本章节 3.实例修改的限制以及解决方法 解决。
(可选)如果您选择的实例类型支持 EBS 优化(参考文档《Amazon EBS 优化的实例》),则可以选择 EBS-optimized (EBS 优化) 以启用 EBS 优化,或者取消选择 EBS-optimized (EBS 优化) 以禁用 EBS 优化。如果您选择的实例类型默认情况下已经过 EBS 优化,则 EBS 优化已选中,您无法取消选择。
选择 Apply 以接受新设置。要重启已停止的实例,请选择该实例,然后依次选择 Actions、Instance State 和 Start。在确认对话框中,选择 Yes, Start。等待实例进入 running 状态,可能需要几分钟时间。
02
迁移由实例存储支持的实例
请注意!如果您的实例类型为实例存储(Instance Storage)且希望数据保留,请务必严格按照 Step 1 的方式做备份,否则实例停止之后该卷上数据会 全部丢失。
如果您采用的是 EBS 的快照 (snapshot) 的持久化方式,请先从实例中分离卷,之后就可以将分离后的卷附加到新的实例 (请参阅 将 Amazon EBS 卷与实例分离)。
如果您采用的是创建 AMI 的方式
打开 Amazon EC2 控制台并在导航窗格中选择 AMI。从筛选条件列表中,选择我拥有的,然后选择您在上一步中创建的映像。请注意,AMI Name (AMI 名称) 是您在注册映像时指定的名称,而 Source (源) 是您的 Amazon S3 存储桶。如果没有看到上一步创建的 AMI,请确保您选择的是在其中创建了 AMI 的 区域。
选择 Launch。在您为实例指定选项时,务必选择您所需的新实例类型。如果无法选择您所需的实例类型,则说明它与您创建的 AMI 的配置不兼容 (例如,由于虚拟化类型不同)。您还可以指定从原始实例中分离的任何 EBS 卷。实例进入 running 状态可能需要等待几分钟时间。
如果不再需要用以创建映像的原有实例,则您可将其终止。选择实例并二次确认您选择终止的是原始实例而不是新实例 (例如,检查名称或启动时间)。依次选择 Actions (操作)、Instance State (实例状态) 和 Terminate (终止)。
03
实例修改的限制以及解决方法
如果您的目标实例类型未在修改实例的下拉框中看到,则可能是因为目标实例与旧实例的虚拟化或者ARM架构不兼容,具体限制以及解决方法如下。
01丨虚拟化类型限制
AMI的虚拟化类型为PV的实例不能升级到AMI虚拟化类型为HVM的实例。您可以在EC2控制台的实例详情中可以看到实例的虚拟化(Virtualization)属性,如下图所示:
02丨AMI架构限制
使用ARM架构AMI的实例只能升级到支持ARM架构AMI的实例
使用32位AMI的实例只能升级到支持32位AMI的实例
实例AMI类型的查看方法如下图所示:
03丨 解决方法
创建 EBS 快照并创建 AMI。创建 AMI 时可以选择与原有实例不同的虚拟化类型 ( PV/HVM ) 和 AMI 架构 ( x64 即 x86_64,x32即i386,ARM即arm64)。
03
也想升级对实例对应的磁盘容量怎么办?
针对不同的存储类型(实例存储 & EBS)和使用类型(根卷 & 非根卷),如何升级实例的存储容量?
首先提醒大家,EBS在创建好之后不可以缩容。如果确实用不到这么大的磁盘,只能先创建一个新卷,然后将数据同步过去。所以,在建立EBS卷时,请按照实际需求指定存储卷大小。
01
确认存储卷类型
在升级容量前,请先确认 存储卷类型 ,查看方法如下图所示。
02
具体修改方法
对于实例存储来说,它提供的是临时性块级存储,无法在启动实例后更改。此时,如果您希望扩展实例存储空间,可通过将 instance store 转换为 EBS 的方式来完成,具体方法请参考此文档《如何将 Amazon EC2 实例上的实例存储卷备份到 Amazon EBS?》。
对于EBS类型的Root device(根卷)的调整,请参考此文档《如何扩展 Amazon EC2 Linux 实例的 Amazon EBS 根卷?》。对于其他非根卷EBS磁盘的调整,具体如下:
1) 如果您使用的是支持的实例类型(见下方列表),则可以利用弹性卷的功能,在不分离 Amazon EBS 卷、不停机的情况下直接修改卷的大小、性能和卷类型,具体步骤请参考此文档《对您的 EBS 卷请求修改》。此时,实例不会停机,只是卷的 IOPS 等性能会受到影响,因此,建议在非业务高峰期执行此操作。
所有 当前一代实例
上一代实例系列 C1、C3、CC2、CR1、G2、I2、M1、M3 和 R3
2) 如果非以上实例类型,则需要先Stop (停止) 实例,修改卷至希望的大小和类型,然后重新 Start (启动)实例,具体步骤请参考 此文档《对您的 EBS 卷请求修改》。
03
扩展文件系统
实例启动之后,可以检查文件系统大小,看实例是否识别这个更大的卷空间。在 Linux 上,请使用 df -h 命令检查文件系统大小。如果大小没有反映新扩展的卷,则必须扩展设备的文件系统,以便实例可以使用新的空间,具体操作请参考此文档《调整卷大小后扩展 Linux 文件系统》;对于Windows系统来说,可以参考此文档《如何扩展 Amazon EC2 Windows 实例的 Amazon EBS 根卷?》。
04
修改EBS卷的其他限制
对于修改 EBS ,还存在其他限制,如下方所列,所有限制请参考此文档《修改卷时的要求》。
作为 根卷 附加到实例的 gp2 卷无法修改为 st1 或 sc1 卷。如果分离了 gp2 并将其修改为 st1 或 sc1,则无法将其作为根卷附加到实例。
修改卷后,等待至少六个小时并确保卷处于 in-use/available 状态,然后再对同一个卷进行其他修改。
在现有 io1 卷上预配置超过 32,000 IOPS 后,您可能需要执行分离和附加卷或者重新启动实例来实现全部性能改进。
在尝试调整超过 2 TiB 的引导卷大小之前,通过 sudo gdisk -l /dev/xvda 在您的实例上运行以下命令来决定该卷是使用 MBR 分区还是使用 GPT 分区。MBR 分区方案仅支持最高 2 TiB 的 引导卷 大小。具体限制与解决方案请参考此文档《修改卷时的要求》。
04
常见问题 Q&A
Q:如何实现不停机升级?
A:建议使用负载均衡加新增机器方法。也就是原来小机型添加到负载均衡器中,升级机器一样是加到负载均衡器,再把原来的小机型关掉即可。
Q:实例升级到C5/M5之后无法启动?
A:检查是否安装增强联网驱动 (ENA) / 以及AMI 的enaSupport属性是否启用;检查NVMe 模块是否安装;也可以运行官方检查脚本c5_m5_checks_script 来做检查。
Q:控制台EBS卷扩容成功之后服务器上看不到?
A:服务器上的文件系统需要做扩展,参考文档《调整卷大小后扩展 Linux 文件系统》。
Q:挂额外EBS无法识别?
A:可能是由于卷UUID重复,使用 mount -o nouuid 命令挂载新卷,参考 文档。
更多文章相关阅读可访问以下网址
《如何将 Amazon EC2 实例上的实例存储卷备份到 Amazon EBS?》
http://dwz.date/as8e
《创建由实例存储支持的 Linux AMI》
http://dwz.date/as8f
《在 Linux 实例上启用 Elastic Network Adapter (ENA) 增强联网》
http://dwz.date/as8h
《在 Linux 实例上启用 Intel 82599 VF 接口增强联网》
http://dwz.date/as8q
《在 Windows 实例上启用 Intel 82599 VF 接口增强联网》
http://dwz.date/as8t
《实例类型》
http://dwz.date/as8u
《Linux 实例上的 Amazon EBS 和 NVMe》
http://dwz.date/as8v
《Windows 实例上的 Amazon EBS 和 NVMe》
http://dwz.date/asYM
《弹性 IP 地址》
http://dwz.date/as8x
《更改实例类型》
http://dwz.date/as8z
《Amazon EBS 优化的实例》
http://dwz.date/as82
《如何扩展 Amazon EC2 Linux 实例的 Amazon EBS 根卷?》
http://dwz.date/as85
《对您的 EBS 卷请求修改》
http://dwz.date/as87
《调整卷大小后扩展 Linux 文件系统》
http://dwz.date/as88
《修改卷时的要求》
http://dwz.date/as89
END
马上点击“阅读原文”
探索 19 种产品,利用免费套餐
在 AWS 中国(宁夏)区域开始构建
4月课程一览
时间 | 简介 |
4 月 28 日 | 在 10 的 60 次方的世界里,人工智能寻找未来的新药 |
4 月 28 日 | Amazon SageMaker - 机器学习赋能创新 |
4 月 29 日 | 如何在 AWS 上构建最小授权保障数据资源安全 |
点击查看课程详情
后台回复关键词【活动】
或点击菜单栏【AWS近期活动】
热门云计算活动任你挑!
扫码关注
“ AWS云计算 ”
云上干货任你挑