自动将EBS卷附加到新的竞价型实例?


14

我正在尝试EC2竞价型实例,并且需要在终端之间保留一些数据。现在,据我了解,当当前价格高于我的最高价时。出价,它将自动终止。我假设我拥有的所有初始化脚本都将在关机时运行,以便可以在卸载之前将数据推送到EBS。

我的问题是,价格下跌后,如何将相同的EBS卷自动安装到新的竞价型实例上,因为它没有我第一次会加载到根卷上的任何初始化脚本?

我必须创建一个自定义AMI,还是有其他方法可以实现此目的?

Answers:


11

如果您只是想让实例在每次运行时都以固定的起点开始,那么您可以:

  1. 创建您自己的AMI并每次将其作为实例运行,或者

  2. 指定一个用户数据脚本,该脚本将在每次从标准基本AMI启动新实例时按照您的要求安装和配置软件。

如果需要在两次实例运行之间保持状态,则需要将数据保存在实例/ AMI之外的某个位置。例如:

  1. 数据可以在S3,SimpleDB,DynamoDB,RDS等上保持最新状态。

  2. 您可以指定一个永久的EBS卷,实例在启动时会动态附加并挂载。这可以通过用户数据脚本来完成。


指定一个安装用户数据脚本听起来很有趣。当竞价请求自动启动新实例时怎么办?我已经有一个永久的EBS卷存储数据,并可能会继续使用
杰夫·

1
创建竞价请求时,可以指定应传递给每个新竞价型实例的用户数据。
埃里克·哈蒙德

啊,我没意识到用cloud-init放#!首先在用户数据中执行一个脚本。谢谢
Jeff 2012年

3
@Jeff:是的,我发明了流行的AMI并采用了它:-) alestic.com/2009/06/ec2-user-data-scripts
Eric Hammond,

沿着这条线,是否可以使竞价型实例在启动时将特定的EBS卷挂载为其根磁盘?
德里克·莫里森

5

查看ec2-spotter项目在GitHub上。创建它是为了解决您描述的问题。

@mcenzm的答案中描述的问题(第1至第4个问题)是真实的,可以在ec2-spotter中正确处理。


不赞成这样做的Dunno,但这意味着我可以停止浪费时间尝试编写代码!爱它。
杰里米(Jeremy)

3

我已经尝试了一段时间,但EC2竞价型实例和附加存储仍然存在许多问题。

  1. 您要附加的卷可能与实例不在同一区域?无法在启动时指定区域。
  2. 使用init脚本进行内部附加会起作用,但是有点异步,因此您需要对其进行测试或 sleep 10说。
  3. 我不明白为什么AWS控制台显示“分区”作为主要的块设备。也许否认我们在另一个分区上盗版Windows映像?(sda1而非sda)。祝你找到分区表好运。

    在此处输入图片说明

  4. 当前很难从外部控制的角度使用CLI进行附加,这使得难以使用快照进行版本控制。

  5. 因此,通常我将... tar.bz2备份到另一个框中,然后在启动时填充“工作区”。这仅对少量数据有用,因此用两个数据量作为新ami的基准是一个好主意。无论如何,竞价型实例确实适合“工作单元”或“可重新启动”的工作,因此,从服务器获取工作的概念已得到很好的确立。鉴于您在极端等待9分钟才能启动,因此您可能不介意格式化(越小越好)磁盘。

    1. EBS仍然很脆弱,您需要为“优化”支付额外的费用。它比尝试在90年代左右上载已完成的工作(实例价格过高)快得多。

    2. 我怀疑任何“弹性文件”产品都将改变这一切。


1
1.指定与AZ区域绑定的子网。2.等到/ dev / xvdx出现很容易。3.这有什么关系?
Morgan Christiansson

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.