当您的 Spot 实例在 AWS EC2 上死亡时,如何保留您的安装?

当您的 Spot 实例在 AWS EC2 上死亡时,如何保留您的安装?

我读了这个问题和答案:我的 EC2 Spot 实例卷会随实例一起消失吗?

因此,当我请求 Spot 实例时,我在 EBS 卷(它给我的标准卷)下添加了第二个卷,并取消选中了删除标签。

然后,我在实例准备就绪后通过 SSH 启动它,并安装我需要安装的内容(Tensorflow、iPython、Jupyter 等...用于机器学习的软件包)。

然后我用启动了一个 jupyter 笔记本jupyter notebook --certfile=~/certs/mycert.pem --keyfile ~/certs/mycert.key,创建了一个新笔记本,保存了它并终止了 Spot 实例,以测试所有这些安装和我的笔记本是否会保留在我使用 Spot 实例创建的第二个非删除卷上。

当我终止时,它确实确认第二个 EBS 卷不会被删除。

然后,我启动了另一个 Spot 实例,这次没有指定第二个 EBS 卷,并且我的所有安装和笔记本都不见了,当我尝试启动 jupyter 时出现“未找到命令”错误。

通过 SSH 启动实例后,我是否需要以某种方式“cd”到该特定卷?我所做的一切不是都会自动保存在第二个 EBS 卷上吗?我是否需要拍摄快照或创建第二个 EBS 卷的映像?

无论我的实例如何突然终止,最简单的保留我的安装和文件的方法是什么,并在以后从任何其他实例访问它们?我查看了 EBS 定价并且不介意支付每月每 GB 0.1 美元,我只是不确定如何让它发挥作用。

答案1

一般来说,您需要确保您关心的任何状态都存储在辅助 EBS 卷上。

不过,我要说的是,如果你手动在 Spot 实例上安装所有这些,那么你就做错了。这样做,你注定会失败,而且在失败的路上,你还要艰难地完成大量无聊的重复任务。

与其做你正在做的事情,不如启动一个按需实例,并根据软件安装、凭证、服务等配置它。然后创建一个 AMI。有了这个镜像,你就可以创建从初始启动开始就 100% 准备就绪的现货实例。

至于保留其他状态,您要么需要重新设计工作流程以将状态保留在 S3 上,要么将非删除 EBS 卷安装到文件系统上的某个位置,然后确保您的所有状态都存储在该文件系统上,以便可以将其连接并重新安装到未来的现货实例上。

答案2

随着 AWS 对现货实例的改进,您现在也可以停止或休眠实例,而不是终止实例。接受的答案中关于构建 AMI 的建议仍然适用,必须作为最佳实践来完成。

相关内容