如何在 Amazon Auto-scaling 组中的多个 ec2 实例上部署和更新应用程序?

Posted

技术标签:

【中文标题】如何在 Amazon Auto-scaling 组中的多个 ec2 实例上部署和更新应用程序?【英文标题】:How to deploy and update app on multiply ec2 instances in Amazon Auto-scaling group? 【发布时间】:2014-01-28 04:34:47 【问题描述】:

您能否建议我可以通过哪些方式将代码更改从 SVN 部署到在自动扩展组中运行在 Amazon 负载均衡器后面的所有 ec2 实例? 当新的 ec2 实例在自动扩展组中自动启动时,我还需要将代码更新到最新版本。

我想使用“用户数据”在新机器上运行“svn up”。也许我可以使用 cron 在所有机器上定期运行“svn up”。 您能提出更好的解决方案吗?

【问题讨论】:

【参考方案1】:

在我看来,您不应该更新正在运行的实例上的代码,最好创建一个主 AMI,它已准备好所有更新的堆栈/代码,然后有条不紊地终止正在运行的实例并让 Auto Scaling 代码根据需要部署新实例,这实际上将部署您的新代码。

您可以将 AWS Cloudformation 用于此任务: http://aws.amazon.com/about-aws/whats-new/2013/02/20/announcing-new-aws-cloudformation-deployment-enhancements/

或 ElasticBeanStalk:

http://aws.amazon.com/about-aws/whats-new/2013/11/11/aws-elastic-beanstalk-announces-rolling-updates/

尝试使用谷歌搜索“AWS 滚动更新”以获得更多有用的链接。

【讨论】:

同意。我还要补充一点,您将更改push 到集群而不是让集群pull 从 SVN 更改更明智。如果您不想(或不能)使用 Elastic Beanstalk 的内置应用程序部署功能,您可以尝试使用 Capistrano 之类的工具来自动部署到机器集群。

以上是关于如何在 Amazon Auto-scaling 组中的多个 ec2 实例上部署和更新应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

Auto-Scaling 组不会在启动配置更改时更新

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

在 Terraform 销毁期间,terraform 在销毁 Auto-scaling 组之前尝试销毁 ECS 集群并且失败了

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

如何查找未使用的 Amazon EC2 安全组

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