有几个软件包可以在生产模式下更新节点js app,停机时间为零(或正常重新加载),例如 pm2. 但是,是否可以更新节点js本身,例如从LTS版本4.x更新到生产中的新版本6.x,停机时间为零? 只要具有
但是,是否可以更新节点js本身,例如从LTS版本4.x更新到生产中的新版本6.x,停机时间为零?
只要具有冗余,只要您想要更新的任何内容,就可以通过零停机更新生产.我们每天都在工作.只要安装节点是部署过程的一部分,升级节点就是例程,例如使用nvm
当然,您需要多台服务器.
先决条件:假设您的代码是版本1.0,在dev中升级node.js,测试您的代码,保留所需的节点版本(package.json,.nvmrc或您的安装脚本需要的任何内容)并将其添加到1.1额外检查您的服务器操作系统有节点6的要求. (例如,Centos 6无法安装节点4)
通用零停机时间滚动部署过程,假设您在服务器场中有4台服务器:
>从服务器场中删除服务器1.如果你使用持久性
连接(websocket),发信号通知现有客户
服务器重新连接(到服务器2,3和4)
>将1.1版部署到新服务器.这应该包括重新安装节点(例如nvm install)直接连接到它
并检查一切都好.
>对服务器2执行相同操作(从服务器场中删除,发送信号客户端,部署新版本),这样我们就没有单点故障.您的应用仍然由服务器3和4提供服务
>将服务器1和2放回服务器场并删除3和4.如果需要,请重新连接Signal 3/4客户端.
>升级服务器3和4并将它们放回服务器场
完成.所有服务器都已升级,如果您的应用程序编码良好,客户端也没有注意到任何内容.