什么是更好的:在启动时配置实例或启动预先支持的映像?

时间:2018-05-27 22:45:16

标签: amazon-web-services amazon-ec2 amazon-ecs

我正在开发云解决方案。我没有经验,所以我想向一些专业人士询问最佳实践。当前的问题主要与自动缩放组功能有关。

我已经阅读了大量的howtos和指南,并得出结论,在ASG中配置/配置实例的唯一方法是:

  • 预先烘烤AMI;
  • 使用user_data字段。

所以,我们假设,我有一个自动缩放组。我想配置它启动的实例,例如,使用chef-solo(或ansible-local,但据我所知,厨师是aws的更好选择)。

我只看到两种方法:

  • 使用packer并在本地预烘焙图像(使用chef-solo提供商),然后使用全新创建的AMI更新ASG配置;
  • 使用基本Amazon AMI并在启动时使用user_data脚本配置图像:安装chef-solo,从git获取cookbook,在机器上运行chef-solo。

你认为什么是更好的选择?为什么?此外,我感兴趣的是,当我的厨师烹饪书配置发生变化时,如何在ASG中更新已经运行的实例。

另外,如果你知道更好的选择,请留在这里。我愿意讨论。

1 个答案:

答案 0 :(得分:2)

这取决于您的使用案例。

预扩展的AMI在扩展时可能会更快启动,但如果您需要对代码或配置进行微小的更改,则需要烘焙另一个AMI。如果您正在安装应用程序服务器并部署应用程序,则使用用户数据(无论是使用直接操作系统命令还是使用Chef或其他内容)可能需要更长的时间,并且您还可能引入外部依赖关系进行扩展:如果GitHub存储库脱机,该怎么办?或者必要的下载被阻止?

因此,如果放大速度很重要,请考虑预先制作的AMI。如果您能够容忍合理的扩大规模,请看混合方法:

  • 将厨师DK和您需要的任何其他大型物品烘焙到您的AMI中。例如,您可以将应用程序服务器安装到AMI中,然后让Chef通过用户数据对其进行配置。
  • 确保您的依赖项,脚本和可部署的文件(如WAR文件)位于可靠的存储库(如S3)中。

最好的建议是尝试这两种方法来获取一些指标,看看它们如何适合您的用例。