如何提高 OpsWorks 节点的启动时间?

Posted

技术标签:

【中文标题】如何提高 OpsWorks 节点的启动时间?【英文标题】:How to improve OpsWorks node's boot time? 【发布时间】:2013-12-19 04:47:17 【问题描述】:

我喜欢 AWS OpsWorks,但我现在面临的一大缺点是启动时间:节点启动速度非常慢。

在我的情况下,对于 t1.micro 实例,我的说明书开始运行大约需要 10 分钟(尽管从 EC2 控制台视图来看,该实例应该在大约 2 分钟后准备就绪:在此之后可以通过 SSH 访问它短期内)。也可以参考this topic。

我尝试使用自定义 AMI,但遇到了另一个问题:节点一直在启动。但这可能是我在创建 AMI 时的错。

回到最初的问题,

【问题讨论】:

【参考方案1】:

就我而言,使用 m1.small,我按照 this doc 创建了一个自定义 AMI。

我认为它一直启动的原因是 opsworks-agent 文件仍然存在。请参阅要从 AWS OpsWorks 实例创建自定义 AMI 下的第 4 步,您需要停止代理并删除它的文件。

整个周期从大约 25 分钟缩短到大约 10 分钟。到第 11 分钟,它处于 LB 健康检查阶段。

希望对您有所帮助。

【讨论】:

很高兴知道为什么实例永远挂起。我将尝试您的解决方案并返回结果。谢谢! 太棒了!它就像一个魅力。它在 t1.micro 实例上为我节省了 6 分钟。非常感谢。【参考方案2】:

(无法评论。需要 50 分)我不明白。如果删除代理,使用 OpsWorks 有什么意义?该代理允许您根据需要更新实例并添加配方。更不用说基于预定义配置添加实例了。我错过了什么吗?

【讨论】:

我不确定。这是为了创建新的 AMI,所以我猜 OpsWorks 想要一个纯 AMI,并且会在启动时以某种方式在该实例上安装新代理。问候。 Opsworks 对于创建和设置机器以从中创建 AMI 仍然很有用。如果您需要更新 AMI,最好能够更新您的 Opsworks 配置和配方并从头开始创建新实例,然后手动更新您的 AMI。【参考方案3】:

如果您的实例无法启动,请在此处查看我的答案:

AWS Opworks Instances not starting when created from Custom AMI on EC2

也许会解决你的问题...

【讨论】:

【参考方案4】:

虽然未在此线程上明确指定,但您似乎是从 Amazon linux 或已提供的 Ubuntu 实例创建自定义 AMI。 就我而言(这也是我最终来到这里的原因),我直接从常规 EC2 实例创建了自定义 AMI,但在将近 14 小时后,该实例仍然无法启动。我确保我删除了任何其他可能阻碍我们的配置,例如 ELB/VLC 配置和自定义配方。实例基本卡在设置阶段。

在启动时卡住的一个可能原因是,自定义 AMI 是从具有 Opworks 代理的映像创建的,该代理应仅链接到该映像。在此处查看文档: http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html 但这不是我的情况。

我将尝试使用预定义的亚马逊图像并从那里开始。

【讨论】:

更新:我能够让 Amazon Linux 12.9 实例从启动到运行设置。我只花了时间写上面的原始帖子。我们是否有可能也必须从常规 EC2 Ami 中删除代理?这没有任何意义,但谁知道呢,也许是其他东西阻止了自定义 AMI 的启动。顺便说一句,我原来的自定义 AMI 实例来自 t1.micro 实例上的 RHEL 6.5 32 位。里面没有安装任何花哨的东西。 嗨,einarc。正如 mrclmrvn 在他的回答中指出的那样,您需要停止代理并删除它的文件。 @TungNguyen Hi Tung。我知道,我把它放在我的第一条评论上,但它被管理员删除了。有关我遇到的问题的更多详细信息,请参见此处。虽然默认 AMI 工作正常,但我无法让它与 EC2 中的自定义 AMI 一起工作:***.com/questions/27005004/…

以上是关于如何提高 OpsWorks 节点的启动时间?的主要内容,如果未能解决你的问题,请参考以下文章

我的 OpsWorks 实例在关闭五分钟后自行启动 - 为啥?

启动实例的 OpsWorks 角色

如何启动基于负载的 opsworks 实例?

从 EC2 上的自定义 AMI 创建 AWS Opsworks 实例时未启动

Opsworks 实例无法启动:状态:start_failed:没有这样的食谱:apt

使用 Chef + Berkshelf 在 OpsWorks 上运行 Python 时出错