基于Nginx+lua的蓝绿发布系统

作者: 小程故事多 | 来源:发表于2018-02-05 20:09 被阅读1034次

一、什么是蓝绿发布

蓝绿部署是不停老版本,部署新版本然后进行测试,确认OK,将流量切到新版本,然后老版本同时也升级到新版本。

1、特点
蓝绿部署无需停机,并且风险较小。

2、蓝绿发布的注意事项
当你切换到蓝色环境时,需要妥当处理未完成的业务和新的业务。如果你的数据库后端无法处理,会是一个比较麻烦的问题;

可能会出现需要同时处理“微服务架构应用”和“传统架构应用”的情况,如果在蓝绿部署中协调不好这两者,还是有可能会导致服务停止。
需要提前考虑数据库与应用部署同步迁移 /回滚的问题。
蓝绿部署需要有基础设施支持。
在非隔离基础架构( VM 、 Docker 等)上执行蓝绿部署,蓝色环境和绿色环境有被摧毁的风险。

二、为什么需要蓝绿发布系统

1、新项目和新需求非常多
2、新需求的上线过程是,先上线一台服务器然后观察会不会出问题,如果没有问题则全部上线。
3、分流是关键,但是动态分流是痛点。

三、老分流方案

image.png

方案存在的问题点:
1、nginx.conf配置文件里各种if、set和rewrite,并且容易配置出错。
2、修改完配置文件后,重启或者reload后才能生效。
3、不能实现太复杂的逻辑。
4、不能实现一些特殊分流方式。

四、新分流方案

image.png

功能说明:

  • 采用Redis存放分流策略
  • 分流策略包括按时间来分流,比如每分钟分流多少笔订单,还有按权重分流,比如新老系统之间的比例是1:9
  • 采用OpenResty+lua,整体性能优秀。

单台压测结果:


image.png

相关文章

  • 基于Nginx+lua的蓝绿发布系统

    一、什么是蓝绿发布 蓝绿部署是不停老版本,部署新版本然后进行测试,确认OK,将流量切到新版本,然后老版本同时也升级...

  • argocd蓝绿/金丝雀发布之rollout

    简介: 蓝绿发布金丝雀发布是当下互联网发布系统不可绕过的话题。本文演示基于argocd的蓝绿/金丝雀发布的组件ro...

  • k8s 更新策略:灰度发布和蓝绿发布

    如何实现蓝绿部署? 蓝绿部署中,一共有两套系统:一套是正在提供服务系统,标记为“绿色”;另一套是准备发布的系统,标...

  • 发布策略

    常见的发布策略有蓝绿发布、红黑发布、金丝雀(灰度)发布、滚动发布等。 蓝绿发布 概念:蓝绿发布是一种以最小的停机时...

  • 蓝绿发布

    蓝绿发布的意义整个发布过程,用户没有感受到任何宕机或者服务重启。蓝绿发布的过程第0步:部署以前的配置 第1步: 把...

  • 蓝绿发布

    在多数互联网应用的场景下,用户是不间断访问的,所以应用的更新升级不能像传统项目那样停机重启,而是使用更加平滑的方式...

  • kubernetes蓝绿发布

    蓝绿发布 不关闭旧环境的情况下启动新环境,通过更新service将流量切换到新环境上。 发布更新 1、在原有的de...

  • 网关调研

    网关gatewayshenyukong核心技术javajava基于Nginx+Lua管理界面无有konga动态更新...

  • 蓝绿部署、红黑部署、AB测试、灰度发布、金丝雀发布、滚动发布的概

    在有关微服务、DevOps、Cloud-native、系统部署等的讨论中,蓝绿部署、A/B 测试、灰度发布、滚动发...

  • 蓝绿发布/灰度发布与Argo Rollouts

    蓝绿发布/灰度发布与Argo Rollouts 蓝绿发布: 当前版本 v1 正常运行 将新版本 v2 所有副本全部...

网友评论

本文标题:基于Nginx+lua的蓝绿发布系统

本文链接:https://www.haomeiwen.com/subject/qhxdzxtx.html