生产中更新nodejs,停机时间为零

Gre*_*een 5 node.js

有几个软件包可以在生产模式下更新节点js应用程序,停机时间为零(或正常重新加载),例如pm2.

但是,是否可以更新节点js本身,例如从LTS版本4.x更新到生产中的新版本6.x,停机时间为零?

Off*_*rmo 6

只要具有冗余,只要您想要更新任何内容,就可以通过零停机更新生产.我们每天都在工作.

只要安装节点是部署过程的一部分,升级节点就是例行程序,例如使用nvm

当然,您需要多台服务器.

先决条件:假设您的代码是版本1.0,在dev中升级node.js,测试您的代码,保留所需的节点版本(package.json,.nvmrc或您的安装脚本需要的任何内容)并将其添加到1.1额外检查您的服务器操作系统有节点6的要求.(例如,Centos 6无法安装节点4)

通用零停机时间滚动部署过程,假设您在服务器场中有4台服务器:

  1. 从服务器场中删除服务器1.如果使用持久连接(websocket),请指示此服务器的现有客户端重新连接(到服务器2,3和4)
  2. 将1.1版部署到新服务器.这应该包括重新安装节点(例如nvm install)直接连接到它并检查一切正常.
  3. 对服务器2执行相同操作(从服务器场移除,信号客户端,部署新版本),因此我们没有单点故障.您的应用仍然由服务器3和4提供服务
  4. 将服务器1和2放回服务器场并删除3和4.如果需要,请重新连接Signal 3/4客户端.
  5. 升级服务器3和4并将它们放回服务器场中

完成.所有服务器都已升级,如果您的应用程序编码良好,客户端也没有注意到任何内容.