我有一个 Nodejs 应用程序,其中包括用于正常运行时间的集群和用于错误处理的域。
现在为了实现零停机部署,我有一条指令,但我需要帮助将此指令转换为 Nodejs 代码(请提供一个示例)。
这是说明:
- 当master启动时,给它一个指向worker代码的符号链接(symbolic link)。
- 部署新代码后,更新符号链接(symbolic link)
- 向master发送信号: fork 新的worker!
- Mater 告诉旧的工作线程关闭,从新代码中 fork 出新的工作线程。
- 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/