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

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、容器云原生、运维自动化等方面。
承接各类运维环境部署、方案设计/实施、服务代运维工作,欢迎沟通交流 !

http://www.lryc.cn/news/516439.html

相关文章:

  • nginx正向代理从安装到使用一网打尽系列(二)使用
  • Bash Shell的操作环境
  • Python爬虫基础——认识网页结构(各种标签的使用)
  • 如何实现一个充满科技感的官网(二)
  • GNU链接器简介
  • 欧几里得算法(简单理解版,非严格证明)
  • Mac软件介绍之录屏软件Filmage Screen
  • Ubuntu cuda-cudnn中断安装如何卸载
  • CSS——7.CSS注释
  • 鸿蒙APP之从开发到发布的一点心得
  • 某小程序sign签名参数逆向分析
  • 智能风控/数据分析 聚合 分组 连接
  • Unity3D PBR光照计算公式推导详解
  • 行为树详解(6)——黑板模式
  • Vue.js与其他框架有哪些兼容性?
  • Java 8 Stream 介绍
  • Java NIO、AIO分析
  • pip下载包出现SSLError
  • 零成本的互联网创业创意有哪些?
  • linux ubantu重启桌面
  • DeepSeek重新定义“Open“AI
  • iOS - 自旋锁
  • web应用网站如何启用http2请求
  • python进阶06:MySQL
  • mac 使用zip2john破解zip压缩包密码
  • 若依中Feign调用的具体使用(若依微服务版自身已集成openfeign依赖,并在此基础上定义了自己的注解)
  • 【算法题系列】LeetCode 5.最长回文子串|JavaScript 5种思路实现
  • 基于ROS先验地图的机器人自主定位与导航SLAM
  • nginx 1.6.3配置虚拟主机与rewrite-location匹配规则
  • 1130-host ... is not allowed to connect to this MySql serve