【问题标题】:Zero downtime deploy with node.js and mongodb?使用 node.js 和 mongodb 进行零停机部署?
【发布时间】:2014-06-20 10:35:43
【问题描述】:

我正在从头开始构建一个可以对用户透明地更新和扩展的全球应用程序。

到目前为止的架构非常简单,应用程序的每个部分都有自己的进程并与其他槽套接字通信。

这样我可以为应用程序的每个部分生成任意数量的实例,并根据我的需要在全球范围内分发它们。

在系统的前端,我将有一个负载均衡器,它将用户路由到他们最近的实例,当新代码生成时,我的实例将使用新代码生成新进程并将新请求路由到它并正常关机。

非常感谢您的任何建议。

编辑:

问题是:在将节点部署到多个实例时,实现零停机时间的最佳(也是最简单)解决方案是什么?

关于应用程序:

https://github.com/Raynos/boot 用于“套接字”连接, http 用于 http 请求, 用于数据库的 mongo

我目前正在尝试的解决方案:

https://www.npmjs.org/package/thalassa(管理 haproxy 配置文件和应用程序实例),如果您不知道,请观看此演讲:https://www.youtube.com/watch?v=k6QkNt4hZWQ 并注意 crowsnest 正在被 https://github.com/PearsonEducation/thalassa-consul 取代

【问题讨论】:

  • 问题是什么?
  • 抱歉,如果不清楚。我现在说得很清楚了。

标签: linux node.js mongodb deployment


【解决方案1】:

只有在新旧节点之间共享的数据兼容时,才能实现零停机部署。

因此,如果您更改结构,则必须构建一个中间版本,该版本可以处理新旧数据结构,而无需使用新结构,直到您将所有节点替换为该中间版本。然后推出新版本。

可以使用负载均衡器将节点加入和退出生产环境(以及在节点上的所有会话过期之前的宽限期)(对您的应用程序了解不够)。

【讨论】:

  • 简单节点应用程序:使用github.com/Raynos/boot 进行“socket”连接,简单的http 服务器用于http 请求,mongo 用于数据库。
  • 在这种情况下,我共享数据,并且它是兼容的。它是一个远程 mongo 数据库。
  • 作为负载均衡器,我正在使用由 thalassa-aqueduct 管理的 haproxy,但正在寻找其他选项。理想情况下是 GUI 的一个选项,因为我会经常滚动许多实例和版本。
猜你喜欢
  • 1970-01-01
  • 2022-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多