我正在尝试将我的MEANjs应用程序部署到生产中
到目前为止,我已经使用jenkins、git、rsync等将项目复制到远程服务器。
在最后一步,我只需要打电话给
- 停止myMeanjsApp
- 用新版本的应用程序替换文件夹
- 调用启动myMeanjsApp
但这意味着停机时间,我正在努力避免,所以
1.我该如何避免这种情况
2.是否有任何良好的实践工作流程?
我见过,但我不确定这是否是我的路或者还有其他简单的方法吗?
通常,通过创建运行升级版本软件的新虚拟机来升级大规模web应用程序。然后将新的虚拟机添加到负载平衡器中(手动或自动)。然后,运行旧版本的虚拟机将从负载平衡器池中删除,并且当对旧vm的所有正在进行的请求都完成时,可以销毁vm。例如,像ELB和自动缩放组这样的AWS功能使其成为升级软件的一种有吸引力的方式。
即使你只有一台服务器,你也可以通过将新版本启动到不同的端口来完成同样的操作
如果必须将代码替换到位,那么零npm模块是一种公平的方法。
对于某些应用程序,可以选择简单地停止接受新连接,并在最后一次连接完成后使用新版本重新启动。
对于某些应用程序,您可以随时终止旧版本并启动新版本。这完全取决于您的需求和环境。