在 Amazon ElasticBeanstalk 中使用 docker 或自定义 AMI

Use docker or custom AMI in Amazon ElasticBeanstalk

我正在将一个应用程序迁移到 Amazon,ElasticBeanstalk 似乎是合适的工具。

此应用程序需要一些未安装在默认 AMI 中的包,我找到了两种为我的应用程序生成完整环境的方法:

我的问题是,推荐的选项是什么?

我担心与自动缩放相关的性能或部署时间等问题(会有多个实例)

我想知道是否有人知道真正的优缺点或每个选项(理论上两个选项都是 "equals")。 我也知道这两种方法(自定义 AMI 和 Docker),但从未在高负载环境中尝试过。

经过一段时间尝试不同的选项后,我有了足够的信息来回答自己。

我发现更好的是 Elastic Beanstalk,而不是使用自定义 AMI,然后使用 ebextensions 自定义实例 使用 ebextensions,您可以完全自定义您的实例(包、文件……一切)。好处是您的实例将自动更新并且您不会失去对实例的控制。缺点是你必须绑定到 amazon elastic beanstalk。

我还注意到 docker 是不必要的额外层。对开发非常有用,但对生产有点头疼,因为您失去了对实例的控制。

我的选择(根据我的个人经验)是使用默认的 amazon ami,然后使用 ebextensions 自动自定义它们。

AWS documentation on creating custom AMIs for Elastic Beanstalk 包含有关如何正确创建自定义 AMI 的步骤。介绍很好地讨论了 AMI 与配置文件的优缺点:

A custom AMI can improve provisioning times when instances are launched in your environment if you need to install a lot of software that isn't included in the standard AMIs.

Using configuration files is great for configuring and customizing your environment quickly and consistently. Applying configurations, however, can start to take a long time during environment creation and updates. If you do a lot of server configuration in configuration files, you can reduce this time by making a custom AMI that already has the software and configuration that you need.

A custom AMI also allows you to make changes to low level components, such as the Linux kernel, that are difficult to implement or take a long time to apply in configuration files. To create a custom AMI, launch an Elastic Beanstalk platform AMI in Amazon EC2, customize the software and configuration to your needs, and then stop the instance and save an AMI from it.

它显然因用例而异,但听起来一般推荐的方法是使用配置,除非您需要对环境进行足够大的修改以至于启动时间成为一个因素。还应该考虑他们的团队可能需要将配置文件与应用程序代码分开。