首页 > 解决方案 > AWS 现场实例/重启更快

问题描述

我正在使用 AWS 现货实例,并希望获得与按需实例相同的“停止/启动/设置”速度。对于按需实例,根 EBS 卷会保留下来,因此一旦我安装了所有软件包,后续的启动/设置就会很快。

但是,对于现场实例,我得到“无法停止 Spot 实例”(为什么不停止?)。而且我看不到使用现有根卷启动 Spot 实例的方法。

我发现的一个部分解决方法是在“/data”下安装一个现有的辅助卷,在那里安装软件包,然后在现场实例重新启动时重新安装该卷。但是,这是有限制的,因为有些软件包喜欢安装到“/”中,有什么建议吗?

标签: amazon-web-servicesamazon-ec2autoscaling

解决方案


停止 Spot 实例的功能仅在 AWS 抢占实例时可用。用户不能请求停止 Spot 实例,只能终止它们。这会强制从 S3 重新获取以在每次启动时创建根卷。由于块是延迟加载的,因此每次启动的体验都会有不同的延迟。

要在没有任何 S3 损失的情况下获得 EBS 卷,这些卷必须预先存在并在启动时安装到 Spot 实例。

获得“温暖”根卷的感觉的一种解决方案是将chroot与附加卷一起使用。

每个 AMI 都有一个快照 ID。该快照 ID 可以配置为 1 个或多个 EBS 独立卷。这些卷将像停止的按需实例一样运行。如果目的是获得速度而不是更高级别的安全性,则在安装卷后,将系统路径绑定到 chroot 位置。在大多数情况下,类似于以下内容将起作用:

mount -o bind /proc /mnt/myMount/proc
mount -o bind /sys /mnt/myMount/sys
mount -o bind /dev /mnt/MyMount/dev
mount -o bind /dev/pts /mnt/MyMount/dev/pts
mount -o bind /tmp /mnt/MyMount/tmp

mount -o bind /run /mnt/MyMount/run
mount -o bind /run/lock /mnt/MyMount/run/lock
mount -o bind /dev/shm /mnt/MyMount/dev/shm

最后,使用chroot配置 ssh以使用挂载路径作为 root:

Match User ubuntu
    ChrootDirectory /mnt/dlami

现在,当 Spot 实例启动并安装卷时,用户将被放置在附加的 EBS 上,其中块仅从 S3 检索一次(与按需一样)并保留在实例关联之间。可以终止 Spot 实例,并且新实例可以重新挂载“热”存储。

您需要有一个系统来匹配现有的 EBS 卷与新的 Spot 请求,以及负责附加卷和设置 chroot 的 UserData 或 API 调用。

在 Spotinst,我们认为这是一个令人兴奋的用例,并在此处写了一篇博客进一步详细介绍:https ://blog.spotinst.com/2018/10/09/imagenet-ec2-spot/


推荐阅读