1

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

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

这是指令:

  1. 当 master 启动时,给它一个指向 worker 代码的符号链接。
  2. 部署新代码后,更新符号链接
  3. 向 master 发送信号:fork new workers!
  4. Mater 告诉旧工人关闭,从新代码中分叉新工人。
  5. 母校进程永不停止运行

说明来源-> 幻灯片编号 39

4

1 回答 1

1

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

  • 将会话令牌存储在数据库中,而不是存储在内存数组或其他东西中。这将允许用户在您交换版本后保持登录状态。

  • 在 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而不会放弃任何请求。

于 2017-10-07T17:32:56.087 回答