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