【问题标题】:Move EBS volume to new instance on instance failure在实例失败时将 EBS 卷移动到新实例
【发布时间】:2013-05-20 12:55:09
【问题描述】:

如果一个 EC2 实例出现故障,而自动扩展启动了一个新实例,我如何将旧 EBS 卷自动移动到新实例?

EBS 卷可能包含大量数据,并且备份不是即时的,因此自动重新定位卷可能是保存数据的最佳方式。

【问题讨论】:

  • 你能解释更多关于你想要完成的事情吗? ec2 单元应被视为可分配对象。话虽这么说,你可以编写 aws api 来做任何事情。
  • 每个 EBS 卷有很多很多 GB 的数据。重建并不容易。如果 EC2 实例出现故障,我需要该数据快速在另一个实例上可用。 S3 不是一个选项,因为我需要快速随机访问。

标签: amazon-web-services amazon-ec2


【解决方案1】:

如果一个 EC2 实例出现故障,而自动扩展启动了一个新实例,我如何将旧 EBS 卷自动移动到新实例?

没有自动执行此操作的 API 调用。但是你可以编写一个守护进程来启动一个带有正确参数的新盒子。

不幸的是,如果您关心灾难恢复,那么您想做的并不是一个好策略:

1) 当一个盒子死掉时,EBS 卷可能会在分离状态下“卡住”几个小时(我实际上已经看到超过 24 小时)。

2) 如果您的 zone 出现问题,您可以轻松地在其他 zone 中启动实例,但您不能在 zone 之间移动驱动器。

您最好从快照启动,这样可以解决这两个问题。

(您也可以考虑使用分布式文件系统,如 CEPH、GFS、AFS 等)

【讨论】:

  • +1 表示分布式文件系统建议。每个节点及其附加块应该是一次性的。
【解决方案2】:

我认为您正在寻找的是 S3。如果您认为某些数据需要由其他 ec2 实例共享。那么您应该将该数据保存在 S3 上而不是 EBS 卷本身上。任何 EC2 实例都可以轻松访问 S3 上的数据,即使位于网络位置之外,延迟也非常小。 EBS 卷应该与该 EC2 本身相关联。

【讨论】:

    【解决方案3】:

    Autoscaling 不仅应该启动一个新实例,还应该将相同的 EBS 卷附加到它。只要先前的 EC2 实例终止,AWS 就会自动分离 EBS 卷。如果您使用的是 Elastic Beanstalk,我建议您使用 ebextensions。否则,您应该依赖OpsWorks

    或通过 SDK/API 手动执行此附件。

    【讨论】:

    • 这是真的吗?有人可以确认吗?有链接吗?
    • 根据我的经验,这不是真的。区域 2c 中的 EC2 实例失败并终止。 Autoscaling(在 Elastic Beanstalk 下)在区域 2a 中启动了新实例。该区域中不存在 EBS 卷,无法自动或手动附加。
    猜你喜欢
    • 1970-01-01
    • 2012-03-10
    • 2014-11-03
    • 2018-05-27
    • 2018-12-29
    • 2013-10-28
    • 2013-06-24
    • 2017-03-01
    • 1970-01-01
    相关资源
    最近更新 更多