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

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

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

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

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

  1. 一台 Linux 服务器(推荐 CentOS 7+ 或 Ubuntu 20.04),并已安装 Nginx。未安装可使用命令:yum install nginx -y 或 apt 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
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意