AI服务灰度发布实操:零基础用Nginx实现逐步切换版本

为什么AI服务需要灰度发布

AI服务(如模型推理、图像识别)一旦上线新版本,如果直接全量替换,可能因模型质量问题或配置错误导致大面积服务异常。
灰度发布让你先让一小部分用户使用新版本,观察无误后再逐步放量,这是降低上线风险的标准做法。

本文使用 Nginx 反向代理 作为流量网关,通过权重或 Cookie 策略控制新旧版本的分流比例。
整套方案无需额外付费组件,单台服务器也能跑通,适合零基础入门。

做好这些准备让灰度发布更顺利

  1. 一台 Linux 服务器(推荐 CentOS 7+ 或 Ubuntu 20.04),并已安装 Nginx。未安装可使用命令:yum install nginx -yapt install nginx
  2. 两个版本的 AI 服务 以 HTTP 端口方式运行,例如旧版本监听 5001 端口,新版本监听 5002 端口。可以是 Python Flask、FastAPI 等框架启动的容器或进程。
  3. 一个简单的健康检查接口:确保每个服务都有 /health 端点返回200,便于 Nginx 检测存活状态。
  4. 确保服务器防火墙已放行 Nginx 端口(默认80)和两个服务端口。

逐步调整流量到新版本:两种常用方法

方法一:基于权重的分批发布

修改 Nginx 配置文件(通常位于 /etc/nginx/nginx.conf/etc/nginx/conf.d/ 下新建 .conf 文件),
使用 upstream 块定义两个后端,
并设置 weight 参数控制流量比例。

upstream ai_servers {
    server 127.0.0.1:5001 weight=90;   # 旧版本占90%流量
    server 127.0.0.1:5002 weight=10;   # 新版本占10%流量
}

server {
    listen 80;
    server_name your-domain.com;
    location / {
        proxy_pass http://ai_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

保存后执行 nginx -t 测试配置是否正确,然后 systemctl reload nginx 使生效。
此时约10%的请求会进入新版本。
观察无问题后,逐步调高新版本的 weight(如30、50、100),直到完全切换。

方法二:基于 Cookie 的指定用户灰度

如果你只想让带特定 Cookie 的用户(如内部测试人员)访问新版本,可以使用 Nginx 的 map 指令结合 if 判断。

map $cookie_gray_group $backend {
    default  127.0.0.1:5001;  # 默认走旧版
    "new"    127.0.0.1:5002;  # 携带 Cookie: gray_group=new 的用户走新版
}

server {
    listen 80;
    server_name your-domain.com;
    location / {
        proxy_pass http://$backend;
    }
}

你可以在用户登录或访问时由应用端设置 Cookie gray_group=new,只有这些用户的请求会命中新版本。
这种方式适合定向测试,验证通过后再转为全量。

灰度发布最容易踩的四个坑

  • 没有统一健康检查:如果新版本服务崩溃,Nginx 仍会分发请求到故障端口,导致部分用户报错。务必在 upstream 里加上 max_fails=3 fail_timeout=30s 参数。
  • 会话状态不一致:AI 服务如果是无状态的,直接分流没问题;如果依赖本地存储或内存会话,需要确保用户请求始终路由到同一版本。这时优先使用 Cookie 灰度或者配置 sticky session 插件。
  • 权重调整后未 reload:修改 Nginx 配置后必须 reload 而不是 restart,否则可能导致连接中断。
  • 日志监控缺失:新版本的问题可能只有少量用户遇到。建议在 Nginx 日志中记录转发到的 upstream 地址,方便事后排查。可以在 proxy_set_header X-Upstream $upstream_addr; 并开启访问日志格式化。

用一小部分用户验证新AI服务效果

  1. 功能测试:以测试身份访问服务(如携带特殊 Cookie),确认新版本推理结果正确。
  2. 压力测试:使用 Apache Bench 发出少量请求,观察新版本服务延迟与旧版本对比:ab -n 100 -c 10 http://your-domain.com/
  3. 错误日志检查:查看 Nginx 错误日志 /var/log/nginx/error.log 和 AI 服务自身日志,确认无异常。
  4. 逐步放量:权重从 10% 起步,每观察 1-2 小时无报错,增加至 30%、50%、100%。整个过程可线上完成,无需停机。

如果你正在处理 AI 服务的版本升级,建议先按本文步骤在测试环境跑通流程,再迁移到生产。
遇到异常时优先回看避坑部分,尤其是日志和健康检查项。
成功完成一次灰度后,你可以继续学习蓝绿部署或金丝雀发布等进阶策略。

分享到:
上一篇
零基础搭建AI部署自动化流水线完整指南
下一篇
AI蓝绿部署零停机方案:从环境搭建到平滑切换全步骤
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意