终止 EC2 实例的最快方法

sch*_*der 0 amazon-ec2 amazon-web-services boto

我需要能够在一分钟内终止 EC2 实例。

当前过程每个实例只需不到 2 分钟,因为操作系统关闭过程需要 60 秒。如果可能的话,我想大大加快终止速度。

有谁知道加速terminate()EC2 功能的方法?有没有办法像其他虚拟化解决方案那样在没有关闭过程的情况下“拔掉插头”?

背景
在Boto中,我在处理子网删除或其他后续任务之前terminate()使用该wait_until_terminated()函数调用该函数。

但是,如果进程(如终止)花费的时间超过一分钟,我正在从 3rd 方 API 触发 boto,该 API 会超时。这意味着每次我终止时,API 都会返回错误。

我曾尝试与 3rd 方合作以增加超时时间,但诸如终止之类的事情不在他们预期的用例中,并且截至目前,3rd 方没有解决方案。

我尝试了 astop(Force=True)并且它快了一点,但仍然超过一分钟。

我试图强行删除 EBS 卷,但您必须先关闭实例,这使过程超过 1 分钟。

我试图在SSH'ing运行各种shutdownhalt命令参数,但我无法找到运行超过60秒的更快的操作系统命令。正在运行的服务已经最少,我无法进一步加速操作系统关闭。

我希望找到一种通过 AWS“拔掉插头”的方法。或者其他一些快速终止的方法。似乎终止需要关闭操作系统,这对我来说有点奇怪,当我无论如何都想点燃实例时。

Ani*_*ism 6

虽然我同意这肯定是一个 XY 问题,您应该以另一种方式解决这个问题,但有比使用shutdown. 没有理由等待 Linux 调用 init 脚本并发出TERMKILL到所有进程。

从历史上看,我相信killall -9 init或者一个神奇的 SysRq 键是最快的方法。但是,systemd列举了很多方式(man systemd),例如:

   SIGRTMIN+13
       Immediately halts the machine.

   SIGRTMIN+14
       Immediately powers off the machine.
Run Code Online (Sandbox Code Playgroud)

在找到 AWS 反应最快的选项之前,您可能需要测试几个选项,但是从 60 秒操作系统关闭到 1-5 秒应该足够简单。

  • 有趣的想法。终止操作系统,然后调用 AWS 终止 API 来终止 VM。 (2认同)
  • @Tim 如果实例设置为关闭时自动终止,则不需要调用 API (2认同)
  • 在学习了一些新东西之后,这为问题提供了一个很好的答案,这让我很伤心,你没有给它点赞 :( (2认同)