【问题标题】:Amazon EC2 + Auto Scaling + Load Balance + Rails + Deploy [closed]Amazon EC2 + Auto Scaling + 负载平衡 + Rails + Deploy [关闭]
【发布时间】:2012-08-10 21:18:05
【问题描述】:
我对 Amazon EC2 中的 Auto Scaling 有一些疑问。
- 我每天从 GitHub 多次在我的应用程序中运行部署,我需要编译资产管道以将静态数据发送到 Amazon S3。如何将我的应用程序(更新)复制到其他 actives 服务器?
- 对于由 Auto Scaling 启动的新服务器?
希望他们能帮助我,谢谢!
【问题讨论】:
标签:
ruby-on-rails
deployment
amazon-ec2
load-balancing
autoscaling
【解决方案1】:
尝试使用Chef 或Puppet 等配置管理工具。
我不确定是否有任何现成的解决方案可用于 AWS Auto Scaling 实例。
但是通过使用实例用户数据和厨师,可以复制更新的部署。
【解决方案2】:
我假设您已为应用程序确定了启动配置。我们这样做的方式是使用新的代码库创建一个新的 AMI。然后更新启动配置以反映新的 AMI。
当我们准备好开始更新时,我们只需终止负载均衡器中的实例,并让启动配置启动新 AMI 的新实例。
例如,假设您的启动配置声明您至少有 8 个实例,最多有 12 个实例。假设您目前正在运行 10 个实例。我们将终止(或仅从负载均衡器中删除)一些实例以低于最小实例(例如 4 个实例)。然后这将启动两个新实例以满足最小启动配置。一旦这些在负载均衡器中成功,我们可能会终止另外 4 个实例,并让 4 个新实例启动。然后最后终止最后两个实例。
这允许将新的 AMI 分阶段部署到生产环境中,同时最大限度地减少对服务器集群的负载影响。当然,如果您需要更新数据库架构或类似的情况,您需要硬停机进行切换,这会略有不同,因为您需要更改启动配置,终止所有实例,进行数据库迁移,然后启动新实例