AWS Spot实例/更快地重新启动

时间:2018-08-14 00:59:47

标签: amazon-web-services amazon-ec2 autoscaling

我正在使用AWS竞价型实例,并希望获得与按需实例相同的“停止/启动/设置”速度。对于按需实例,EBS根卷始终存在,因此,一旦我安装了所有软件包,随后的启动/设置就会很快。

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

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

1 个答案:

答案 0 :(得分:0)

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

要获得不带任何S3损失的EBS卷,这些卷必须预先存在并在启动时挂载到竞价型实例。

一种具有“温暖”根卷感觉的解决方案是将 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

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

您将需要拥有一个系统,以将现有EBS卷与新的现货请求以及UserData或API调用进行匹配,该系统将负责附加卷并设置chroot。

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