首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Nginx灰度发布—-【cookie】、【IP】

灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。...AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。...灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。...A/B测试流程 Nginx根据Cookie实现灰度发布 ---- 根据Cookie查询Cookie键为version的值,如果该Cookie值为V1则转发到tomcat1,为V2则转发到tomcat2...根据来路IP实现灰度发布 如果是内部IP,则反向代理到tomcat2(预发布环境);如果不是则反向代理到tomcat1(生产环境) upstream tomcat1 { server

1.2K20

Nginx灰度发布----【cookie】、【IP】

灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。...AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。...灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。...A/B测试流程 Nginx根据Cookie实现灰度发布 ---- 根据Cookie查询Cookie键为version的值,如果该Cookie值为V1则转发到tomcat1,为V2则转发到tomcat2...根据来路IP实现灰度发布 如果是内部IP,则反向代理到tomcat2(预发布环境);如果不是则反向代理到tomcat1(生产环境) upstream tomcat1 { server

1.2K11
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Ingress-nginx灰度发布功能详解

    灰度能力是业务快速发布过程中不可或缺的一种能力,如果出现问题,灰度能够保证其影响范围。...ingress-nginx灰度发布介绍 因为平台中暂未使用ServiceMesh,所以就Kubernetes入口控制器Ingress-Controller下手,寻找灰度发布的功能, https://github.com...具体支持的发布功能如下所示: 名称 类型 解释 nginx.ingress.kubernetes.io/canary "true","false" 开启灰度发布功能,如果没有开启此属性,则如下属性不生效...nginx.ingress.kubernetes.io/canary-by-cookie string 基于 Cookie 的流量切分,适用于灰度发布与 A/B 测试。...总结 本文主要介绍了为什么使用灰度发布,如何使用Ingress-nginx进行灰度发布,最后通过示例详细介绍了Ingress-nginx annotation灰度发布配置和使用,如有问题,关注公众号,加我微信

    1.9K10

    Nginx基础 - Nginx+Lua实现灰度发布与WAF

    1.Nginx加载Lua环境 默认情况下Nginx不支持Lua模块, 需要安装LuaJIT解释器, 并且需要重新编译Nginx, 建议使用openrestry 1)环境准备 1[root@localhost...重定向 6ngx.print 输出响应内容体 7ngx.say 输出响应内容体,最后输出一个换行符 8ngx.header 输出响应头 9 3.Nginx+Lua实现代码灰度发布 使用Nginx结合lua...实现代码灰度发布 按照一定的关系区别,分不分的代码进行上线,使代码的发布能平滑过渡上线 1.用户的信息cookie等信息区别 2.根据用户的ip地址, 颗粒度更广 1执行过程: 21.用户请求到达前端代理...调用灰度发布Lua脚本 1[root@localhost ~]# vim /usr/local/nginx/lua/dep.lua 2--获取x-real-ip 3clientIP = ngx.req.get_headers...42return 43end 44--否则调用local-@java_prod 45ngx.exec("@java_prod") 46return 47 5)使用Memcache set IP, 测试灰度发布

    1.6K20

    基于 Nginx+lua+Memcache 实现灰度发布

    一、灰度发布原理说明 灰度发布在百度百科中解释: 灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。...AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面 来。...灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。...这里的用于WEB系统新代码的测试发布,让一部分(IP)用户访问新版本,一部分用户仍然访问正常版本,其原理如图: ?...下面访问 Nginx,效果符合预期,我的IP已经在 memcached 中存储值,所以请求转发给执行灰度测试代码的主机。 ? 从memcached删除我的主机IP值。 ?

    99310

    基于 Nginx 实现灰度发布与AB测试

    判断只要某个实例的接口返回5xx的状态码,即把该实例下线(nginx不会把流量转发到该实例) 发布流程 目的主要是为了发布的时候能够平滑发布,所以QA与开发人员在发布得时候按照如下步骤操作: 1、打开系统的...(发布dll、配置文件时,IIS站点会短暂重启) 7、QA同学走查灰度的A实例服务器,保证它正常运行,如此循环,直到所有服务器都发布。...设计师设计的功能,用户不一定完全接受,一旦上线新版本,收到一大堆的吐槽,都是用户呀,如果能在小范围人群内进行灰度试用,完成平稳的过度和使用反馈之后,优化后再上到生产会更好一点。...所以这边需要思考和设计一套统一的技术方案,未来无论云办公还是其他的业务系统,都能通过灰度发布在可指定的小范围内先进行体验和功能验证。...proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; index index.html index.htm; } } 优缺点: 1、配置简单,原资源平台的灰度升级就是根据

    1.9K21

    灰度发布

    灰度发布,对于大厂来说是必不可少的,对于我这种从来没有灰度发布过的,并不是很清楚,估计也有很多人不知道这个东西。以前只是直到灰度发布,这次稍微了解一下。...灰度发布是指新版本或者新功能通过一定策略选取一些用户,让他们先使用,通过使用情况对功能、性能、稳定性等指标评估是否扩大范围直至全面发布灰度发布开始到结束期间的这一段时间,称为灰度期。...nginx这块我不会,所以也不知道能不能实现两个分支nginx静态代理。理论上来说是没有问题。 其实针对大型的系统,还有蓝绿部署、滚动发布等,还有专门的测试云服务提供商。...灰度发布除了代码层面之外,对服务这块要求还是蛮大的,灰度发布不同于预发布灰度发布是直接让线上用户参与,而一般预发布发布到线上,由测试人员进行测试。...当然,会使用灰度发布的,一般来说都是千万级别用户的项目了,虽然很想使用灰度发布,但还是需要考虑实际场景,也希望以后能有机会使用灰度发布。 (完)

    1.5K30

    灰度发布

    1、什么是灰度发布 以下是百度词条的解释: 灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。...灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。...2、为什么要灰度发布 灰度发布的主要目的是保证系统的可用性。因为每一次线上变更都无法保证系统100%的无bug,所以变更后要在线上小范围验证,等没问题再全面放开。...3、常用的灰度发布方式有哪些 1、按机器灰度 ? 线上有多台机器,先将新功能代码部署到其中的1台或多台机器,然后绑定到这些机器进行测试,测试完没问题再部署到所有机器。...还要考虑的是在新代码机器测试的用户数据是加密的,而线上其他机器没有发布,则这些用户访问其它机器功能是不正常的,所以这个也只能限定进行灰度的用户是内部用户。

    2.5K62

    如何通过ingress-nginx实现应用灰度发布

    灰度发布:在一套集群中存在稳定和灰度两个版本,灰度版本可以限制只针对部分人员可用,待灰度版本测试完成后,可以将灰度版本升级为稳定版本,旧的稳定版本就可以下线了,我们也称之为金丝雀发布。...这里主要给大家分享如果通过ingress-nginx controller实现灰度发布。 本文大纲如下。...如何通过ingress-nginx实现灰度发布 ingress-nginx是Kubernetes官方推荐的ingress controller,它是基于nginx实现的,增加了一组用于实现额外功能的Lua...为了实现灰度发布,ingress-nginx通过定义annotation来实现不同场景的灰度发布,其支持的规则如下: nginx.ingress.kubernetes.io/canary-by-header...实现灰度发布的方法以及咱们自己的实现思路,这里来探讨一下灰度发布有哪些发布场景。

    1.3K40

    灰度发布

    什么是灰度发布 介绍灰度发布流程之前我先一句话介绍一下什么是灰度发布灰度发布就是,线上app无需停机就可以保证运行的是经过测试的稳定版本,且我们在冒烟测试时也不会影响到线上App的运行。...为什么我们要搞灰度发布 线上的服务每次都是我来构建,我可以非常负责任的讲,冒烟测试时不重新发布的几率很小,而且很多时候需要我去定位线上问题,这个过程我不知道你们痛不痛苦,反正我是很痛苦。...为了能让用户有更好的体验,也为了我不在那么痛苦所以我们急需要一款灰度发布系统。...灰度发布系统怎么搞 一个很简单的理论,同时准备两份服务,让符合规则的请求路由到灰度接口,不符合规则的路由到之前发布的服务就好了哇~ 图片 代码实现 熟悉SpringCloudGateway的同学对于...让符合规则的请求路由到灰度接口,不符合规则的路由到之前发布的服务就好了哇~,对于这个简单的需求我们只要在path断言不变的前提下在增加一个管理规则的断言不就可以了吗,以指定请求头包含指定value的规则为例

    1.8K30

    灰度发布

    灰度发布浅析 定义 灰度发布就是已一种平滑过渡的方式来发布,通过切换线上新旧版本之间的路由权重,逐步从旧版本切换到新版本;比如要上线新功能,首先只是更新少量的服务节点,通过路由权重,让少部分用户体验新版本...灰度发布 一个系统往往有接入层比如nginx(Openresty),网关层比如zuul,以及服务层比如各种rpc框架;在这几层都有路由功能,也就是说这几层都可以做灰度;接入层可以使用nginx+lua来实现灰度...,以及redis;为了方便模拟在redis里面配置白名单,如果在白名单里面就走8082,不在则走8081; Openresty配置 需要在Openresty中配置支持lua,以及相关路由的lua脚本,nginx.conf...具体可以参考官方文档:旧路由规则 测试 启动zookeeper,然后分别启动两台生产者,启动消费者时通过修改tag然后观察路由; 总结 本文分别从接入层,网关层,服务层这三层简要的介绍了通过路由规则来实现灰度发布...;已每层比较典型的中间件来介绍具体如何去实现简单的灰度发布;总体来说就是使用中间件的路由功能,动态加载外部自定义的一些路由策略脚本,以此来达到灰度发布的目的。

    1.7K30

    ingress-nginx实现灰度和金丝雀发布

    日常工作中我们经常需要对服务进行版本更新升级,为此我们经常使用到的发布方式有滚动升级、分批暂停发布、蓝绿发布以及灰度发布等不同的发布操作。...所以下面介绍下,通过配置nginx annotations来实现不同场景下的发布和测试。...发布场景 场景一 假设当前线上环境我们已经有一套服务Service A对外提供7层服务,此时我们新开发了一些新的特性,需要灰度发布上线一个新的版本Service A',但是我们暂时又不希望简单地直接替换掉...场景二 假设当前线上环境我们已经有一套服务Service B对外提供7层服务,此时我们修复了一些问题,需要灰度发布上线一个新的版本Service B',但是我们又不希望简单直接地将所有客户端流量切换到新版本...针对以上多种不同的应用发布需求,nginx Ingress 支持了多种流量切分方式: 基于Request Header的流量切分,适用于灰度发布以及AB测试场景 基于Cookie的流量切分,适用于灰度发布以及

    5.3K40

    游戏灰度发布

    ,蓝绿部署、滚动部署、灰度发布、金丝雀发布。。。...整个游戏的链条上,似乎大家都已经习惯,开发习惯,玩家也习惯 习惯麻痹了一切,没有提出更好的策略,大家都这么玩啊,无所谓啦~ 方案 细思极恐,我们应该,也需要做得更好 灰度发布/金丝雀发布 灰度发布是在原有版本可用的情况下...灰度发布/金丝雀发布由以下几个步骤组成: 准备好部署各个阶段的工件,包括:构建工件,测试脚本,配置文件和部署清单文件。 从负载均衡列表中移除掉“金丝雀”服务器。...在之前的架构图中,稍作修改,在玩家与Gameserver之间增加一层ha-proxy,这样就有了灰度发布的基础 玩家不再直接与game-server直连,而是与ha-proxy 透明性 对玩家来说,发版本就是透明的...,发版本时,不再需要停机,入口也不需要关闭,7*24玩耍 流量灵活切换 灰度百分比,可以灵活控制,这里面又涉及到路由规则,复杂了,可以先百分百切换 快速迭代 玩家无感,出现bug,可以快速修复,快速上线

    1.1K30

    一、灰度发布

    一、灰度发布   灰度发布是一种发布方式,也叫金丝雀发布,起源是矿工在下井之前会先放一只金丝雀到井里,如果金丝雀不叫了,就代表瓦斯浓度高。原因是金丝雀对瓦斯气体很敏感。...灰度发布的做法是:会在现存旧应用的基础上,启动一个新版应用,但是新版应用并不会直接让用户访问。而是先让测试同学去进行测试。...这种实现原理主要根据用户请求中的 Cookie 是否存在灰度标示 Cookie去判断是否为灰度用户,再决定是否返回灰度版本服务 nginx.ingress.kubernetes.io/canary:可选值为...代表是否开启灰度功能 nginx.ingress.kubernetes.io/canary-by-cookie:灰度发布 cookie 的 key。当 key 值等于 always 时,灰度触发生效。...nginx.ingress.kubernetes.io/canary-weight:值是字符串,为 0-100 的数字,代表灰度环境命中概率。

    1.6K20

    关于灰度发布

    所以感觉应该算是一种通用系统吧~ 为什么要有灰度发布系统?...两者还是有一些区别的,小流量上线一般做的是系统的彻底升级,和灰度发布不一样。也即是前面提到的,灰度发布期间,线上的系统两套代码在同一台新发布的机器上也同时存在。...灰度发布一般人都比较熟悉的案例可能是微软的操作系统升级吧,其实腾讯qq或者微信发布也差不多。不过说到操作系统升级,灰度发布感觉还有另外的一层意思。可以控制用户流量对网络或者系统的负载的影响。...继续来说互联网公司的灰度发布系统。 一般的灰度发布都会有一些策略,其实就是分类/桶策略。...现在我们也有替代方案,即MurmurHash算法,下面是摘录的简介: MurmurHash算法:高运算性能,低碰撞率,由Austin Appleby创建于2008年,现已应用到Hadoop、libstdc++、nginx

    2.3K30

    灰度发布方案

    一、灰度发布定义 灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。...灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。 ? 二、实现思路方向 1、在代码中做。...三、nginx灰度方案说明 Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器。 ? nginx.conf ?.../intro.html 新浪微博开源项目 git地址:https://github.com/CNSRE/ABTestingGateway ABTestingGateway是一个可以动态设置分流策略的灰度发布系统...nginx实现的灰度系统中,分流逻辑往往通过 rewrite 阶段的 if 和rewrite 指令等实现,优点是性能较高,缺点是功能受限、容易出错,以及转发规则固定,只能静态分流。

    11.2K41

    StatefulSet灰度发布

    灰度发布(Gray Release)是一种流行的发布策略,可以使我们在不中断整个生产环境的情况下逐步将新版本的应用程序发布给一小部分用户,以确保它们能够正常运行。...因此,在灰度发布中,我们可以使用不同的副本集来分别部署新版本和旧版本的应用程序,并逐步增加新版本的副本集,以确保它们能够正确运行。...下面是一个基于StatefulSet的灰度发布示例:假设我们有一个名为web的StatefulSet,它有3个副本,使用的是RollingUpdate更新策略,版本号为v1,现在我们想要发布新版本的应用程序...,并使用灰度发布策略。...当我们想要进行灰度发布时,我们可以通过 StatefulSet 的 RollingUpdate 更新策略来实现。

    81410
    领券