灰度发布-基于nginx的cookie实现

1、概念

灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

更详细的解释大家可以自行百度一下。

http://baike.baidu.com/link?url=KToM_9SSL7N71bNRoGojDcq4N6JaZBzn37N5406H1OqcUsvveC9yASbqCWIkVqu3x9_wIfyKok4dN646yhRH5Lw-QP9LT4b4YGMj_vqDA7-qDkP_ECjCFaixQzMY-BHW

2、目前实现的方式有三种

  1. nginx+lua:根据访问者ip地址区分,由于公司出口是一个ip地址,会出现访问网站要么都是老版,要么都是新版,采用这种方式并不适合;
  2. nginx:根据权重来分配,实现很简单,也可以尝试;
  3. nginx:根据cookie分流,灰度发布基于用户才更合理(本例子采用该种方式)。

3、前期准备
安装Nginx;
安装浏览器cookie插件(非必选)

这里写图片描述

 插件下载地址:
http://www.editthiscookie.com/start/

测试的两台服务器分别为:

default 127.0.0.1:18080
test_1 127.0.0.1:18080
test_2 127.0.0.1:28080

需要监听的端口为:80,根据转发过来的cookie(约定为:test_version_code),对应的值来判断跳转,具体如下:

判断如果,test_version_code = t1 , 则跳转到 127.0.0.1:18080;
判断如果,test_version_code = t2 , 则跳转到 127.0.0.1:28080;
    upstream test_1{
        server 127.0.0.1:18080 max_fails=1 fail_timeout=60;
    }
    upstream test_2{
        server 127.0.0.1:28080 max_fails=1 fail_timeout=60;
    }
    upstream default{
        server 127.0.0.1:18080 max_fails=1 fail_timeout=60;
    }


    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;


        #match cookie
        set $group "default";
        if ( $http_cookie ~* "test_version_code=t1" ) {
                set $group test_1;
        }
        if ( $http_cookie ~* "test_version_code=t2" ) {
                set $group test_2;
        }


        location / {
            root   html;
            index  index.html index.htm;
            #gray
            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;
        }

4、验证

打开谷歌浏览器cookie编辑插件,如下图:

这里写图片描述

我们验证一下是否设值cookie值正确,F12即可看到:

这里写图片描述

浏览器地址栏输入:http://172.20.15.122/index.jsp

这里写图片描述

结束。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值