Amazon EC2、Auto-Scaling、AMI,有没有更简单的方法?

Posted

技术标签:

【中文标题】Amazon EC2、Auto-Scaling、AMI,有没有更简单的方法?【英文标题】:Amazon EC2, Auto-Scaling, AMIs, is there an easier way? 【发布时间】:2015-04-11 10:09:03 【问题描述】:

我在我的 Amazon EC2 实例上有一个生产 Rails 应用程序,并设置了负载均衡器和自动扩展(我手动完成了这一切,没有使用 Elastic Beanstalk。我还使用了 Dokku 来简化部署。)。不过我很困惑。当需要并使用 Auto-scaling 构建新实例时,似乎我需要构建一个 AMI,然后将新实例(通过 auto-scaling 构建)设置为使用此 AMI。

但必须有更简单的方法。我错过了什么吗?使用 Heroku,您只需添加一个测功机和 BAM,就完成了。每次部署到生产环境时,我真的需要复制我的 AMI 并将其设置为我的自动缩放映像吗?是否有我应该使用的命令、工作流或部署后脚本?

【问题讨论】:

【参考方案1】:

您需要指定一个包含生产节点基本设置的 AMI。通常的最佳实践是使用用户数据脚本配置自动缩放。因此,当新的 AMI 在自动缩放期间启动时,它会读取用户数据(云初始化/新贵)。用户数据脚本可以从 git 或任何源代码控制中提取代码并运行必要的预部署命令。您不能在每次部署代码时都将新的 AMI 配置复制到您的 Auto Scaling 配置中。

我希望拥有一个主 AMI 和某种自动化(如用户数据脚本)是有意义的,它会在启动生产节点后立即运行特定命令,然后附加到 ELB。

【讨论】:

【参考方案2】:

有一篇博客文章介绍了使用 Opsworks here 进行基于 dokku 的部署。其他 Dokku 维护者之一 (Michael Hobbs) 在生产中使用此设置。

注意:我是 Dokku 维护者之一,josegonzalez。

【讨论】:

以上是关于Amazon EC2、Auto-Scaling、AMI,有没有更简单的方法?的主要内容,如果未能解决你的问题,请参考以下文章

Ansible:将正在运行的 EC2 实例添加到 Auto-scaling 组

如何在不使用 Auto-scaling 的情况下在一个区域的 3 个不同 AZ 中启动三个相同的 EC2 实例

我应该如何配置 AWS Auto-Scaling Group mixed_instances 策略以仅允许具有多个 EC2 instance_types 的 Spot 实例?

Capistrano 和 Auto-Scaling AWS

如何在 Amazon 的 EC2 上运行 Java 服务器?

将子域与 Amazon EC2 公有 DNS 地址一起使用?