我正在尝试在 AWS 中构建更具动态/可扩展性的系统。我已经在 AutoScaling组中启动了 2个实例,其中最小实例数是 2 ,而最大值为 5 ,并在其前面带有负载均衡器。我在前两个实例中已启用了“终端保护” ,因为它们将成为我用于通过Capistrano部署 Rails应用程序的 >。
问题是我不确定使自动伸缩组中的所有实例保持最新状态的最佳方法是什么,以便它们运行相同版本的应用程序。
我已经搜索了许多技术,以下是我认为适用的技术,但仍然不知道哪种技术最好。
1- AWS CodeDeploy:看起来很酷,使用 Blue / Green Deployment 看起来很不错,停机时间为零。我不知道是否有经验法则,但是我认为部署时间有点长,我不确定是否会适用于需要发布修补程序的情况。
2-通过脚本:我也不知道如何使用AWS来实现这一点,但是,想法是将新代码上传到我的2个“主(?)”实例中,>
这种方法的问题在于,它需要一些手动操作,我不想太多依赖。
3-使用用户数据::使用带有新数据版本的用户数据运行新实例。我认为这不是一个好方法,因为可能还会有其他实例在运行旧代码。
那么,这些是我到目前为止看到的解决方案,哪一个是最佳解决方案?
干杯!
答案 0 :(得分:2)
我最终使用了一个扩展gem(我的应用程序是用ruby编写的)进行部署。我已经在使用Capistrano
进行部署了,然后我发现了elbas
这个在内部执行以下操作的宝石:
这基本上是第二个选项(通过“脚本”选项),找到对我有用的宝石,消除了手动处理事物的挑战。
希望这会有所帮助,加油!