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

Posted Java面试那些事儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Nginx+lua的蓝绿发布系统相关的知识,希望对你有一定的参考价值。

一、什么是蓝绿发布

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

1、特点

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

2、蓝绿发布的注意事项

当你切换到蓝色环境时,需要妥当处理未完成的业务和新的业务。如果你的数据库后端无法处理,会是一个比较麻烦的问题;可能会出现需要同时处理“微服务架构应用”和“传统架构应用”的情况,如果在蓝绿部署中协调不好这两者,还是有可能会导致服务停止。

需要提前考虑数据库与应用部署同步迁移或回滚的问题。

蓝绿部署需要有基础设施支持。

在非隔离基础架构( VM 、Docker 等)上执行蓝绿部署,蓝色环境和绿色环境有被摧毁的风险。

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

  1. 新项目和新需求非常多。

  2. 新需求的上线过程是,先上线一台服务器然后观察会不会出问题,如果没有问题则全部上线。

  3. 分流是关键,但是动态分流是痛点。

三、老分流方案

该方案存在的问题点:

  1. nginx.conf配置文件里各种if、set和rewrite,并且容易配置出错。

  2. 修改完配置文件后,重启或者reload后才能生效。

  3. 不能实现太复杂的逻辑。

  4. 不能实现一些特殊分流方式。

四、新分流方案

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

功能说明:

  1. 采用Redis存放分流策略

  2. 分流策略包括按时间来分流,比如每分钟分流多少笔订单,还有按权重分流,比如新老系统之间的比例是1:9

  3. 采用OpenResty+lua,整体性能优秀。

单台压测结果:

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

原文链接:https://www.jianshu.com/p/e2c4cb323b21


Java面试那些事儿
长按关注,分享最有趣的Java知识点。


推荐阅读:


以上是关于基于Nginx+lua的蓝绿发布系统的主要内容,如果未能解决你的问题,请参考以下文章

nginx安装luajwt模块,通过lua验证jwt实现蓝绿发布样例

如何定义一个nginx lua函数

实战 | ​基于“Nginx+Lua”组件的应用系统灰度发布

新书《Nginx实战:基于Lua语言的配置开发与架构详解》开始发售

基于 access_by_lua_block 中设置的 ngx.var 的动态 Nginx 上游

nginx lua模块安装 让nginx支持lua