我正在尝试在 中构建一个更动态/可扩展的系统AWS .我已推出 2 个实例 在 AutoScaling 组 哪里最小实例数是 2 和 最大是 5 与 负载均衡器在他们面前。我有 启用“终止保护”在前两个实例中,因为它们将是我用于 的实例。正在部署 我的 通过 Capistrano 应用 Rails .
问题是我不确定让我的自动缩放组中的所有实例保持最新状态的最佳方法是什么,以便它们运行相同版本的应用程序。
我已经搜索了许多技术,以下是我认为适用但仍然不知道哪个是最好的。
1- AWS CodeDeploy:看起来很酷,使用 蓝/绿部署 看起来它可以在零停机时间的情况下完成这项工作。我不知道这是否有经验法则,但在我看来,部署时间有点长 ,我是不确定 如果是 当我需要发布修补程序时适用 .
2- 通过脚本:我也不知道如何使用 AWS 实现这一点,但是,这个想法是当一个新代码上传到我的 2 个“主(?)”实例时,
这种方法的问题在于它 需要一些手动操作 我不想太依赖它。
3- 使用用户数据:使用拉取新版本代码的用户数据运行新实例。我不认为这是一个好方法,因为可能会有其他实例已经在运行旧代码。
所以这些是我迄今为止看到的解决方案,哪一个是最好的解决方案?
干杯!
最佳答案
我最终使用了一个扩展 gem(我的应用程序是用 ruby on rails 编写的)进行部署。我已经在使用 Capistrano
为了部署,然后我发现了 gem elbas
它在内部执行以下操作:
这基本上是第二个选项(通过 Script 选项),找到一个为我做这件事的 gem,消除了手动处理事情的挑战。
希望这有帮助,干杯!
关于ruby-on-rails - 部署新代码后,如何让 AWS Auto-scaling Group 中的所有实例保持更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52407196/