nginx-灰度发布策略(split_clients)

一. 简述:

   基于客户端的灰度发布(也称为蓝绿部署或金丝雀发布)是一种逐步将新版本的服务或应用暴露给部分用户,以确保在出现问题时可以快速回滚并最小化影响的技术。对于 Nginx,可以通过配置和使用不同的模块来实现基于客户端的灰度发布策略。

二. 关于split_clients模块:

split_clients 模块允许您根据客户端的哈希值(如 IP 地址或其他标识符)将流量分配到不同的后端服务器。这对于进行百分比控制的灰度发布非常有用。

 测试环境:

  3个web服务(nginx):
     10.2.2.250:8080-------------->用于控制用户请求地址(灰度/线上环境)
     10.2.2.250:8081---------------> 灰度环境
     10.2.2.250:8082---------------> 线上环境

  灰度环境部署:
         请求地址:  http:10.2.2.250:8081/index.html
         内容:     one------> 8081

  线上环境部署(nginx安装过程略):
         请求地址:  http: 10.2.2.250:8082/index.html
         内容:  two-----------> 8082

  

8080,配置片段:

http {
    .....................

    geo $remote_addrs {
        #default "106.38.84.18";
        default "114.18.54.8";
    }


    split_clients "${remote_addrs}" $request_type {
        20% "one";
        * "two";
    }

    upstream test_one {
        server 127.0.0.1:8081 max_fails=1 fail_timeout=60;
    }

    upstream test_two {
        server localhost:8082 max_fails=1 fail_timeout=60;
    }

    server {
        listen       8080;
        server_name  localhost;

................................

        if ($request_type = "one") {
            set $group test_one;
        }

        if ($request_type = "two") {
            set $group test_two;
        }

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

}

测试: 

根据定义不同的$remote_addrs值,会进行hash ,分配到不同的分组。
优缺点:

优点:   部署快(nginx默认已集成模块),配置简单,不需要其他部门同事配合,不需要考虑自定义分流工具的风险。

缺点:   从绝对上来说没法具体通过用户请求量的百分比做分流(比如某一个ip段[如10.0.0.x]的请求为主要请求量,ip的hash结果均在一个范围内,这种情况下,有可能都会分流到一个环境上[灰度或线上])。


 

 ----------------------------------------------------------------------------------------------

深耕运维行业多年,擅长linux、容器云原生、运维自动化等方面。
承接各类运维环境部署、方案设计/实施、服务代运维工作,欢迎沟通交流 !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值