首页 > 系统相关 >Nginx+Lua实现代码灰度发布

Nginx+Lua实现代码灰度发布

时间:2024-08-26 21:50:42浏览次数:7  
标签:20 tomcat Nginx soft 9090 Lua 灰度 node1 root

Nginx+Lua实现代码灰度发布

使⽤ Nginx 结合lua实现代码灰度发布

灰度发布是⼀种将新版本的软件或功能逐步推⼴给⼀⼩部分⽤户,以进⾏测试和评估它们的反应的⽅法。实
际上,它是⼀种渐进式的部署⽅法,可以逐步将新版本或功能逐步发布给不同的⽤户群体,直到所有⽤户都
可以使⽤这个新版本或功能。

这种⽅法通常⽤于⼤规模应⽤程序和⽹站,以确保新的功能和修复⼯作的质量,并降低和减少出现故障或负
⾯反应的⻛险。在灰度发布期间,团队可以监测应⽤程序或⽹站的性能并调整它们,以便可以全⾯推⼴给所
有⽤户。

按照⼀定的关系区别,分不分的代码进⾏上线,使代码的发布能平滑过渡上线

1.⽤户的信息cookie等信息区别
2.根据⽤户的ip地址, 颗粒度更⼴

实践架构图

image-20230609102116061

执⾏过程:

1.⽤户请求到达前端代理Nginx, 内嵌的lua模块会解析Nginx配置⽂件中Lua脚本
2.Lua脚本会获取客户端IP地址,查看Memcached缓存中是否存在该键值
3.如果存在则执⾏@java_test,否则执⾏@java_prod
4.如果是@java_test, 那么location会将请求转发⾄新版代码的集群组
5.如果是@java_prod, 那么location会将请求转发⾄原始版代码集群组
6.最后整个过程执⾏后结束

实践环境准备:

系统 服务 地址
CentOS7 Nginx+Lua+Memached 192.168.1.170
CentOS7 Tomcat集群8080_Prod 192.168.1.152:8080
CentOS7 Tomcat集群9090_Test 192.168.1.152:9090

1.安装两台服务器 Tomcat ,分别启动 8080 和 9090 端⼝

jdk下载
链接: https://pan.baidu.com/s/1rBd5lAIn0Cn-JrgJDy00IQ?pwd=94he 提取码: 94he

192.168.1.152服务器操作

[root@tomcat-node1-20 ~]# pwd
/app/soft
[root@tomcat-node1-20 ~]# ll
-rw------- 1 root root 194151339 4⽉ 28 21:20 jdk-8u231-linux-x64.tar.gz
[root@tomcat-node1-20 ~]# tar xf jdk-8u231-linux-x64.tar.gz -C /app
[root@tomcat-node1-20 ~]# cd /app/ && mv jdk1.8.0_231 jdk1.8
[root@tomcat-node1-20 ~]#cat /etc/profile.d/jdk.sh
export JAVA_HOME=/app/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

[root@tomcat-node1-20 ~]# chmod +x /etc/profile.d/jdk.sh
[root@tomcat-node1-20 ~]# source /etc/profile
[root@tomcat-node1-20 ~]# java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)

#安装tomcat
[root@tomcat-node1-20 ~]# mkdir /soft/src -p
[root@tomcat-node1-20 ~]# cd /soft/src
[root@nginx ~]# wget https://mirrors.tuna.tsyuanhua.edu.cn/apache/tomcat/tomcat-9/v9.0.74/bin/apache-tomcat-9.0.74.tar.gz --no-check-certificate

[root@tomcat-node1-20 src]# tar xf apache-tomcat-9.0.74.tar.gz -C /soft
[root@tomcat-node1-20 src]# cd ..
[root@tomcat-node1-20 soft]# mv apache-tomcat-9.0.74/ tomcat-8080
[root@tomcat-node1-20 soft]# /soft/tomcat-8080/bin/startup.sh

#启动9090
[root@tomcat-node1-20 soft]# cp -r tomcat-8080 tomcat-9090
[root@tomcat-node1-20 soft]# cd tomcat-9090/conf/
[root@tomcat-node1-20 soft]# vim server.xml
#修改⼀下内容
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
/>
#最新的内容
<Server port="8006" shutdown="SHUTDOWN">
<Connector port="9090" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8444"
maxParameterCount="1000"
/>

[root@tomcat-node1-20 conf]# cd ..
[root@tomcat-node1-20 tomcat-9090]# cd bin/
[root@tomcat-node1-20 bin]# sh startup.
sh: startup.: 没有那个⽂件或⽬录
[root@I bin]# sh startup.sh
Usyuan CATALINA_BASE: /soft/tomcat-9090
Usyuan CATALINA_HOME: /soft/tomcat-9090
Usyuan CATALINA_TMPDIR: /soft/tomcat-9090/temp
Usyuan JRE_HOME: /app/jdk1.8
Usyuan CLASSPATH: /soft/tomcat-9090/bin/bootstrap.jar:/soft/tomcat-9090/bin/tomcat-juli.jar
Usyuan CATALINA_OPTS:
Tomcat started.
[root@tomcat-node1-20bin]# netstat -lntup |egrep 9090
tcp6	 0 		0 :::9090 		:::* 		LISTEN
19153/java
//注意tomcat默认监听在8080端⼝, 如果需要启动9090端⼝需要修改server.xml配置⽂件

#修改9090站点⻚⾯
[root@tomcat-node1-20]# cd /soft/tomcat-9090/webapps/ROOT
[root@@tomcat-node1-20 ROOT]# vim index.jsp
<title>9090-tomcat <%=request.getServletContext().getServerInfo() %></title>

image-20240826212117372

image-20240826212235102

image-20240826212315430

标签:20,tomcat,Nginx,soft,9090,Lua,灰度,node1,root
From: https://www.cnblogs.com/zgw03/p/18381637

相关文章

  • 合宙LuatOS产品规格书——Air700EAQ
    LuatAir700EAQ是合宙的LTECat.1bis通信模块,采用移芯EC716E平台,支持LTE3GPPRel.13技术。该模块专为满足小型化、低成本需求而设计,具备超小封装和极致成本优势。Air700EAQ支持移动双模,内置丰富的网络协议,集成多个工业标准接口,支持USB2.0,以及远程OTA固件升级。主要特点包......
  • 如何彻底卸载nginx
    彻底卸载Nginx包括删除Nginx软件包及其相关配置文件和目录。以下是针对不同操作系统的彻底卸载步骤:###1.在Ubuntu/Debian系统上1.**停止Nginx服务**:   ```bash   sudosystemctlstopnginx   ```2.**卸载Nginx软件包**:   ```bash   sudoapt-g......
  • LogicBench: Towards Systematic Evaluation of Logical Reasoning Ability of Large
    本文是LLM系列文章,针对《LogicBench:TowardsSystematicEvaluationofLogicalReasoningAbilityofLargeLanguageModels》的翻译。LogicBench:大型语言模型逻辑推理能力的系统评价摘要1引言2相关工作3LogicBench4结果和分析5结论局限性摘要最近......
  • centos 配置nginx
    1.检查系统版本,安装nginxcat/etc/redhat-release,//这个命令会显示你的CentOS发行版名称以及大致的版本号rpm-qCentOS-release,//这将返回当前安装的CentOS版本的具体编号uname-r,//内核的完整版本字符串。2.安装nginxsudoyuminstallepel-release-y#如果还没有安......
  • 科普文:软件架构Nginx系列之【万字详解Nginx功能模块功能、应用场景、实操配置】
    Nginx模块分类Nginx是高度模块化的,他的模块分为核心模块,标准模块,和第三方模块。如上图所示。其中标准模块又分为三类:HTTPmodule(web模块)StandardHTTPModule(标准模块)OptionalHTTPModule(可选模块)MailModule(邮箱模块)StreamModule(四层代理相关的模块)......
  • 科普文:软件架构Nginx系列之【万字详解Nginx防盗链】
    概叙盗链攻击是一种常见的网络安全威胁,不仅侵犯了内容创作者的版权,还可能会给原网站带来严重的损失。了解盗链攻击的原理和类型,采取有效的防范措施,是保护网站和服务的重要手段。通过技术和法律手段的结合,可以有效地防止和减轻盗链攻击的影响。随着技术的发展,防盗链的方法也......
  • 科普文:软件架构Nginx系列之【Nginx 核心架构设计和原理】
    概叙Nginx是什么Nginx(engineX)是一个开源的轻量级的HTTP服务器,能够提供高性能的HTTP和反向代理服务。与传统的Apache服务器相比,在性能上Nginx占用系统资源更小、支持高并发,访问效率更高;在功能上,Nginx不仅作为Web服务软件,还适用于反向代理、负载均衡等场景;在安装配置上,Nginx......
  • 银河麒麟系统V10(arm版)安装nginx-1.14.1说明
    #银河麒麟系统#、#nginx#随着2024年微软全球蓝屏事件的出现,系统安全越来越重要。目前很多企业开始尝试国产化操作系统上,本文介绍如何在国产化银河麒麟系统V10(arm)版上安装nginx-1.14.1。本资源是arm版本的nginx-1.14.1的rpm离线安装包(下载地址:银河麒麟系统arm版nginx-1.14.1-......
  • Nginx rewrite
    NginxrewriteURL组成http://www.wingsredevsecops.top/download?name=docker.pdf这个URL的格式可以分为以下⼏个部分:协议部分:指定了访问资源的协议,这个URL使⽤了默认的协议HTTP、HTTPS。域名部分:指定服务器的域名和顶级域名,这个URL的域名部分是www.wingsredevsecops.top......
  • Nginx缓存服务
    Nginx缓存服务7.1缓存配置语法proxy_cache配置语法Syntax:proxy_cachezone|off;Default:proxy_cacheoff;Context:http,server,location//缓存路径Syntax:proxy_cache_pathpath[levels=levels][use_temp_path=on|off]keys_zone=name:size[inactive=time]......