我有一个流星.js 应用程序,它可以很好地作为单实例部署,但现在我想设置基础架构以启用和自动创建更多实例(每个客户端 1 个)。
我打算为每个部署保留一个为给定客户端保留的子域。
我想我必须:
- 为每个客户检索所需的子域(通过一些注册站点)
- 捆绑应用程序
- 在单独的端口上部署一个实例,每个端口都有一个单独的数据库
- 设置反向代理以将子域转发到适当的内部端口
- 设置一些东西来监视进程并在它们崩溃或重新启动时重新启动它们
- 当应用程序代码更新和发布时,自动重新捆绑和部署到所有实例
据我所知,我认为适合这项工作的工具在编排系列(Capistrano、Fabric、Func、Rundeck)中,但我不明白他们负责哪些部分以及哪些部分是/应该留给其他人工具。
我的很多问题都来自不知道如何连接这些步骤和/或是否应该连接它们。其他人则来自于不知道最佳实践是什么,或者不知道在哪里可以学习围绕做这类事情的设计模式。
例如:
- 我知道如何在命令行上捆绑应用程序,但该步骤是否应该是 shell 脚本、python 脚本或 ruby 的一部分......部署中的第 2 步也是如此(我知道如何在命令行上执行此操作但不是如何自动化它)
- 我想我可以设置一个反向代理,但我不知道可以动态修改或配置哪些反向代理工具,以及是否有任何脚本语言适合进行动态配置。
- 我不知道在更新/重新部署应用程序时需要或应该考虑哪些因素。
基本上,似乎有许多工具和相当多的方法来做这些事情,但很少有关于哪些工具可以很好地协同工作或如何正确地做到这一点的指导。如果我不觉得选择一组可以很好地协同工作的工具实际上是掷骰子,我会非常积极地学习必要的工具和语言。