亚马逊AWS官方博客
利用Amazon ReplaceRootVolume替换实例EBS根卷
客户在使用EC2过程中,难免会碰到诸如根卷损坏或操作系统配置错误,导致无法连接和登录的情况。这会增加日常迁移、重建等繁杂的工作。尤其是客户在采用了存储优化实例(如i3、i3en、d2等)下,自建的服务下(如Hadoop、Kafka),数据丢失、拷贝等成本会非常高。
这些在实例存储上昂贵的数据复制操作、繁杂的迁移重建等工作,往往是客户无法承受的。现在依托Amazon ReplaceRootVolume新特性,将帮助客户解决上述问题,轻松应对出现的各种挑战。
Amazon ReplaceRootVolume新特性简介
ReplaceRootVolume是一个新特性,它允许客户替换EC2实例的EBS根卷,同时保留实例存储数据、网络和IAM配置。当实例由于启动卷问题而无法访问时,可以避免丢失、复制实例存储数据。在保留实例存储数据的同时,可以将根卷还原为以前的快照。
ReplaceRootVolume功能的使用非常便捷、快速,无需复杂的操作,下面一起来详细看看在d2机型上(其他机型是相同操作),如何配置和使用该功能。
Amazon ReplaceRootVolume配置
目前最新版的awscli已经支持ReplaceRootVolume相关操作的命令,所以第一步需要将awscli升级到最新的版本,具体介绍可以参考官方文档:
https://docs.thinkwithwp.com/zh_cn/cli/latest/userguide/install-cliv2.html
在awscli升级完成后,即可以开始使用ReplaceRootVolume创建任务了。
创建恢复任务
通过create-replace-root-volume-task命令,可以将实例的EBS根卷替换为最后一个已知的良好快照或启动状态。Create-replace-root-volume-task命令的输入包括instance-id和snapshot-id。Instance-id是必需的字段,snapshot-id是可选的。如果没有提供快照id,那么实例根卷将还原到其启动状态。
*如果根卷在创建了快照后,请至少保留一个快照文件,以作为恢复点。
下面的命令将实例 i-055c4533f35830923的根卷,恢复到其启动状态。
aws ec2 create-replace-root-volume-task [--region 实例所在区域] [--instance-id <实例ID>]
下面的命令将实例 i-055c4533f35830923的根卷,恢复到指定快照状态。
aws ec2 create-replace-root-volume-task [--region 实例所在区域] [--instance-id <实例ID>] [-snapshot-id <快照ID> ]
查询任务执行状态:
在执行完上述命令后,可以通过如下命令查看当前任务的状态:
aws ec2 describe-replace-root-volume-tasks –region “实例所在区域” –replace-root-volume-task-ids “执行完任务后输出中的TaskId” –filters Name=instance-id,Values=“实例ID”,“实例ID”
恢复完成后的工作
在恢复完成后,首先需要检查恢复的版本是否为预期版本
然后将实例存储重新挂载到对应挂载点(如恢复的系统版本已配置自动挂载,则无需手动挂载)
使用控制台执行恢复任务
上面介绍了如果使用命令行来执行ReplaceRootVolume操作,该操作同样也能在控制台便捷的执行。
-
- 通过在控制台中选取需要执行的EC2,在存储信息中,找到替换根卷。
-
- 进入替换功能页面后,选择快照ID,即可创建根卷恢复任务。
-
- 在EC2的存储信息栏中,可以看到当前任务的状态。
通过上述ReplaceRootVolume的操作方法和新的特性,简单替换根卷后,即可以高效、便捷、轻松的处理实例无法登陆、实例存储数据丢失风险和迁移成本高等问题。