Linux服务器零停机部署方案:蓝绿发布与Nginx平滑切换实操
部署新版本为什么会有停机时间? 传统的部署方式是:停止旧服务 → 替换代码 → 启动新服务。在这个过程中,服务不可用的时间窗口少则几秒,多则几分钟。对于有用户在线的业务,任何停机都意味着请求失败和用户流失。 零停机部署的核心思想是:新旧版本同时运行,流量平滑切换,切换完成后再关闭旧版本,用户感知不到任何中断。 一、蓝绿部署原理 蓝绿部署维护两套完全相同的生产环境: 蓝环境(Blue):当前线上运行的版本 绿环境(Green):准备上线的新版本 部署流程:在绿环境部署和测试新版本 → 将 Nginx 流量从蓝切换到绿 → 观察绿环境运行稳定 → 将蓝环境保留作为回滚备用。整个切换过程通过修改 Nginx upstream 实现,用户无感知。 二、Nginx upstream 蓝绿切换配置 假设应用有两个版本同时运行: 蓝环境(当前版本):端口 3000 绿环境(新版本):端口 3001 sudo nano /etc/nginx/sites-available/myapp upstream app_blue { server 127.0.0.1:3000; } upstream app_green { server 127.0.0.1:3001; } # 当前激活的 upstream(修改这里实现切换) upstream app_current { server 127.0.0.1:3000; # […]