amazon-web-services - AWS 现场实例/重启更快
问题描述
我正在使用 AWS 现货实例,并希望获得与按需实例相同的“停止/启动/设置”速度。对于按需实例,根 EBS 卷会保留下来,因此一旦我安装了所有软件包,后续的启动/设置就会很快。
但是,对于现场实例,我得到“无法停止 Spot 实例”(为什么不停止?)。而且我看不到使用现有根卷启动 Spot 实例的方法。
我发现的一个部分解决方法是在“/data”下安装一个现有的辅助卷,在那里安装软件包,然后在现场实例重新启动时重新安装该卷。但是,这是有限制的,因为有些软件包喜欢安装到“/”中,有什么建议吗?
解决方案
停止 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/
推荐阅读
- bash - 如何创建一个包含变量的配置文件bash脚本
- list - EF Core 按相关数据对列表进行排序
- http - 如何使用网络浏览器从带有 URL 的网站获取网页?
- javascript - 为什么 str.replace 不想改变这个 <> 符号?
- shell - Shell 脚本 cut -d " " -f4 file.txt 命令
- arrays - Excel查找/数组
- jquery - jquery ui从web sql自动完成
- php - 如何在使用 curl 和 php 加载页面后使用 javascript 更改发送 xhr 请求的页面的 XHR 请求 URL 路径?
- javascript - 如何从春天获得参数?(其余 Javascript)
- maven - 无法将工件 org.grails.plugins:tomcat:zip:7.0.55.2 从/到 grailsCentral (https://repo.grails.org/grails/plugins)