node.js - 零停机部署 Nodejs 应用程序

标签 node.js deployment uptime downtime

我有一个 Nodejs 应用程序,其中包括用于正常运行时间的集群和用于错误处理的域。

现在为了实现零停机部署,我有一条指令,但我需要帮助将此指令转换为 Nodejs 代码(请提供一个示例)。

这是说明:

  1. 当master启动时,给它一个指向worker代码的符号链接(symbolic link)。
  2. 部署新代码后,更新符号链接(symbolic link)
  3. 向master发送信号: fork 新的worker!
  4. Mater 告诉旧的工作线程关闭,从新代码中 fork 出新的工作线程。
  5. Mater进程永不停止运行

Instruction source -> 幻灯片编号 39

最佳答案

对于 100% 的正常运行时间,无论您使用哪种语言,道路或多或少都是相同的:

  • 将 session token 存储在数据库中,而不是内存中的数组或其他内容中。这将允许用户在您交换版本后保持登录状态。

  • 在 Docker 容器内运行服务器

  • 当您需要运行新的服务器版本时,使用代理来处理交换容器。

我写了easy-deploy来准确处理这个问题,这样我就不需要每次都担心设置代理。

部署版本 1

easy-deploy -p 80:80 -v some/path:other/path my-image:1

要部署新版本,只需使用更新的标签名称运行命令

easy-deploy -p 80:80 -v some/path:other/path my-image:2

代理已处理完毕。 my-image:1 将被 my-image:2 替换,而不会让任何请求丢失。

关于node.js - 零停机部署 Nodejs 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44353368/

相关文章:

node.js - 从/提供静态文件

node.js - Webpack 未捆绑输出 JS 文件

ruby-on-rails - Heroku 应用程序的数据库管理

Golang 检索应用程序正常运行时间

node.js - Expressjs多线程

sql - 按belongsToMany关系字段过滤

git - 如何将 Ansible Git 安装到现有目录中

java - 找不到基本类 weblogic.Deployer

php - 使用wget向php发送数据

gnu-make - 如何在多核 Linux 机器上使用 GNU make --max-load?