当前位置: 首页 > article >正文

nginx-灰度发布策略(基于cookie)

一. 简述:

   基于 Cookie 的灰度发布是一种常见的策略,它允许您根据用户的特定 Cookie 值将流量路由到不同的服务版本。这种方法可以确保只有满足条件的用户会看到新版本的功能,从而降低风险并便于监控和回滚。

二.  配置案例:

测试环境:  3个web服务(nginx):

            10.2.2.250:8080-------------->用于控制用户请求地址(灰度/线上环境)

            10.2.2.250:8081---------------> 灰度环境

            10.2.2.250:8082---------------> 线上环境

灰度环境部署(nginx安装过程略):

         请求地址:  http:10.2.2.250:8081/index.html

                 内容:     one------> 8081

线上环境部署(nginx安装过程略):

           请求地址:  http: 10.2.2.250:8082/index.html

                  内容:  two-----------> 8082

配置片段:

    add_header Set-Cookie 'request_id=vipkid';

    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 ($http_cookie ~* "request_id=vvv") {
            set $group test_one;
        }

        if ($http_cookie !~* "request_id=vvv") {
            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;
        }

测试:

  当cookie包含request_id=vvv时, 访问10.2.2.250:8080会upstream到8081:

  当cookie不包含request_id=vvv时,访问10.2.2.250:8080会upstream到8082;

原理:  开发添加cookie识别字段内容, 通过nginx获取cookie, 通过正则匹配,控制是否将请求upstream到对应的后端环境!

优点:  扩展/控制性较高(可通过自定义信息【如uid】方式),配置简单

缺点:  需要开发/项目组同事定义对应的cookie信息

             需要注意cookie缓存问题!  

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

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


http://www.kler.cn/a/471372.html

相关文章:

  • 基于phpstudy快速搭建本地php环境(Windows)
  • 行为模式10.职责链模式
  • thinkphp通过html生成pdf
  • [桌面运维]windows自动设置浅深色主题
  • stm32第一次烧录或者上电运行卡死问题分析
  • 导出中心设计
  • 02.02、返回倒数第 k 个节点
  • (长期更新)《零基础入门 ArcGIS(ArcMap) 》实验七----城市三维建模与分析(超超超详细!!!)
  • Docker镜像下载链接-开发工具集
  • 交换机划分Vlan配置
  • Objective-C语言的数据结构
  • 添加系统级res资源包
  • Apache Paimon-实时数据湖
  • pyhton 掩码 筛选显示
  • Python中的时间管理模块:whenever
  • nuxt3发请求
  • 秋叶大神中文版Stable Diffusion下载安装使用教程
  • PHP二维数组去除重复值
  • 9. C 语言 循环控制结构详解
  • Flutter 鸿蒙化 flutter和鸿蒙next混和渲染
  • 图漾相机基础操作
  • 更换WordPress主题的基础知识及注意事项
  • B-tree 数据结构详解
  • STM32 I2C硬件配置库函数
  • pytorch torch.isclose函数介绍
  • 基于单片机的室外休闲智能座椅设计(论文+源码)