fumingxia 发表于 2018-11-11 12:43:29

Nginx 灰度发布(基于cookies)

背景介绍
  灰度发布,主要任务是从产品用户群中按照一定策略选取部分用户,让他们先行体验新功能或版本。
灰度作用
  及早获得用户的意见反馈,完善产品功能,提升产品质量
  让用户参与产品测试,加强与用户互动
  降低产品升级所影响的用户范围
灰度策略
  其实就是什么的请求应该路由到我们的灰度版本(灰度机器)上来。这个往往是业务强相关的。比如对于API来说,一般有如下几个需求:
  基于用户标识
  基于用户IP
  ……
灰度实现方式
  灰度发布一般有三种方式 nginx+lua,nginx根据cookie分流,nginx 根据权重来分配
  nginx+lua根据来访者ip地址区分,由于公司出口是一个ip地址,会出现访问网站要么都是老版,要么都是新版,采用这种方式并不适合
  nginx 根据权重来分配,实现很简单,也可以尝试
  nginx根据cookie分流,灰度发布基于用户才更合理
灰度实施
nginx基于用户标识的灰度发布才更合理
123456789101112131415161718192021upstream A {    server 127.0.0.1:8360;}upstream B {    server 127.0.0.1:8361;}server {    listen 80;    server_namelocalhost;    set $group A;    if ($http_cookie ~* "version_id=new"){      set $group B;    }    location / {      proxy_pass http://$group;      proxy_set_header   Host             $host;      proxy_set_header   X-Real-IP      $remote_addr;      proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;      indexindex.html index.htm;    }}  
  前端nginx服务器监听端口80,需要根据cookie转发,查询的cookie的键(key)为"version_id(该键由开发负责增加),如果该cookie值(value)为new则转发到B,其他则转发到A。

页: [1]
查看完整版本: Nginx 灰度发布(基于cookies)