Nginx+Tomcat+Redis负载均衡Session共享实现

Nginx+Tomcat+Redis实现负载均衡与Session共享之五 — Nginx+Tomcat+Redis实现Session共享 前言:       本系列文章的目的,在于记录下来本人本次实现Nginx+Tomcat+Redis实现负载均衡,tomcat集群并同时解决Session共享整个流程的攻坚细节。在这个过程中也在网上搜索了许多资料,但是发现许多资料都不完全,有许多遗漏,学习使用起来会碰到许多错误却没有解决办法。秉着一个交流学习的原则,这次我将从Java的JDK安装起到整个集群的实现,将每一个细节点都记录下来。使学习 阅读详情

转载:点击打开链接

原文是在CentOS6.9系统运行,不过我在win10下也跑成功

第一步Nginx+Tomcat 实现负载均衡的测试

  •  相关软件环境
软件名称版本号版本说明
Java1.7linux版本
Tomcat 80817.xlinux版本
Tomcat 80827.xlinux版本
Redis3.2.9linux版本
Nginx1.12.0linux版本
CentOS6.9----------
MySql系统自带----------

链接: https://pan.baidu.com/s/1i5U3srj 密码: hkda 这个是centos网盘地址。其他的在博文底部有给出下载地址

  • 软件版本环境截图

  • 实践测试环境说明

使用的是VMware Workstation 挂载了CentOS6.9版本的虚拟机。这个版本的虚拟机里面自带了mysql,所以不需要下载安装。

Java 安装教程 http://www.cnblogs.com/haoliansheng/p/5832979.html

Redis 安装教程 http://jingyan.baidu.com/article/6dad507510ea07a123e36e95.html

Tomcat在安装好Java之后再解压即可。为了做Nginx负载均衡。需要2个Tomcat。本人分别为8081 8082端口做2个Tomcat。需要修改server.xml 只截取了部分内容

  

  <Server port="8015" shutdown="SHUTDOWN"><!--这里需要修改tomcat的关闭端口 默认是8005-->
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.JasperListener" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  <Service name="Catalina">
   <!--这里需要修改tomcat的访问端口 默认是8080-->
    <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <!--这里需要修改tomcat的代理端口 8443不用更改-->
    <Connector port="7009" protocol="AJP/1.3" redirectPort="8443" />

修改完即可。启动Tomcat 8081 & 8082  cd到bin目录下  执行 ./startup.sh 即可 想看启动相关内容 则执行 ./catalina.sh 命令截图如下

那么现在就可以访问Tomcat了。左图8081 右图 8082 部署了2个相同的项目。

               

  • 接下来可以Nginx的安装了。

有可能需要安装一些库  命令如下

yum -y install pcre-devel openssl openssl-devel
yum install gcc gcc-c++ ncurses-devel perl
yum install -y zlib-devel

tar解压nginx。进入到nginx目录

输入 make 命令。等待执行完成后。输入make install 。基本到这里就安装完成。那么来启动一下。验证nginx是否成功。nginx默认端口为80

  • 配置Nginx 以达到负载均衡的效果。5种配置方式
序号方式名称方式说明(1 2 3实践测试过)
1轮询

默认配置

upstream xsdemo{  
server 192.168.110.128:8081;  
server 192.168.110.128:8082;  
}  

2weight(权重)

正向代理 设置权重

upstream xsdemo{  
server 192.168.110.128:8081 weight=10;  
server 192.168.110.128:8082 weight=10;  
}  

3ip_hash 

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session(并不是共享session解决)的问题。  

upstream xsdemo{ 

ip_hash;
server 192.168.110.128:8081 weight=10;  
server 192.168.110.128:8082 weight=10;  
}  

4fair按后端服务器的响应时间来分配请求,响应时间短的优先分配
5url_hash按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效
  • 博文采用第一种测试。修改nginx的配置文件 nginx.conf 大概在33行上下。upstream是固定写法后面的 xsDemo可以自定义。但是要与下面的localtion proxy_pass http://xsDemo http://后面的对应。区分大小写。保存以后。重启nginx。如果tomcat没启动。则先启动tomcat后再启动nginx
upstream xsDemo {
	server 192.168.110.128:8081;
	server 192.168.110.128:8082;
	}
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
	     proxy_pass http://xsDemo;
        }
  • 看下效果 第一次是8081 再刷新8082 来回刷新来回切换。这就是轮询配置方式的负载均衡

  

  • 使用ip_hash 可以解决session的问题。但是只能做唯一服务器访问。这样不算是负载均衡。所以这里不再做测试给演示看。可以自行测试。

-----------------------------------------------------------------------

第二步接做Redis+Session共享。

  • 上面有Redis的安装经验网址。自行查看即可。为了测试方便。允许远程访问虚拟机的redis。修改配置文件redis.conf 大概在55行左右。修改bind 后面的ip为 0.0.0.0 即可
Port           : 6379
Config file    : /etc/redis/6379.conf
Log file       : /var/log/redis_6379.log
Data dir       : /var/lib/redis/6379
Executable     : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
方便测试开启远程访问。并没有设置密码。修改6379.conf即可。增加密码验证 44行上下
# requirepass foobared 取消注释 修改foobared为您自己要设置的密码即可。
允许任何ip访问设置 55行上下  bind 127.0.0.1 修改为  bind 0.0.0.0 即可。修改这些之前建议停止redis。
  • 需要第三方jar来支持session共享
tomcat-redis-session-manager1.2.jar

https://github.com/jcoleman/tomcat-redis-session-manager

链接: http://pan.baidu.com/s/1i5iNDsx 密码: uyyj

commons-pool2-2.0.jar链接: http://pan.baidu.com/s/1i5iNDsx 密码: uyyj
jedis-2.7.2.jar链接: http://pan.baidu.com/s/1i5iNDsx 密码: uyyj

以上3个jar。需要放在tomcta的lib文件夹下面。切记是tomcat的lib下面。不是项目的lib下面。注意pool这个jar。如果有冲突会启动失败。所以要检查好

  • 还需要修改context.xml文件 切记tomcat关闭哦 context.xml文件存在于tomcat的conf文件夹下
<?xml version='1.0' encoding='utf-8'?>
<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />  
  <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"  
   host="192.168.110.128"  
   port="6379"  
   password="xiaoshuai" 如果设置了密码则在这里配置上
   database="0"  redis默认16个database 第一个是0 最后一个是15
   maxInactiveInterval="60" />  
</Context>
  • 到此。配置全部完成。然后再次启动tomcat 8081 & 8082 再启动nginx
  • 看图是不是真的session共享了

第一次登录到title为8888的tomcat服务器

第二次刷新页面不需要重新登录。但是title变成了9999的tomcat服务器

  • 这样就实现了轮询访问服务器。并且session共享。用户不需要再次重新登录了。
  • 看下redis里面的session是否和浏览器的一致

这样整个简单测试Nginx+Tomcat+Redis负载均衡Session共享实现 就已经完成了。

觉得好。可以打赏哦。是本作者亲测的。所以肯定都是运行有结果的。

https://my.oschina.net/xshuai/blog/916122

Nginx+Redis+Tomcat实现负载均衡项目session共享 本篇文章是继前三篇文章实现的基础上完成的,如果在阅读过程中,有没安装或没实现的功能,请参考前两篇博客。 Linux系统下Nginx的安装 :讲述nginx在Linux系统下的安装工程,以及设置为自启动服务。 Nginx反向代理转发tomcat :讲述nginx反向代理原理,转发tomcat实现过程以及动、静资源分离处理。 Nginx+Tomcat搭建高性能负载均衡集群:讲述nginx 阅读详情

相关推荐

Nginx+Tomcat+Redis搭建高性能负载均衡集群Session共享

超详细Nginx+Tomcat+Redis搭建高性能负载均衡集群Session共享搭建说明,按文档步骤可轻松搭建并实现session共享

Nginx+Tomcat+Redis负载均衡Session共享实现超级简单(CentOS6.9系统 Java版本)

个人小程序,可以微信扫一扫看看。谢谢支持第一步Nginx+Tomcat 实现负载均衡的测试 相关软件环境软件名称版本号版本说明Java1.7linux版本Tomcat 80817.xlinux版本Tomcat 80827.xlinux版本Redis3.2.9linux版本Nginx1.12.0linux版本CentOS6.9----------MySql系统自带----------链接: http

小帅丶的专栏 5953

nginx+tomcat+redis负载均衡及session共享

资源包含 nginx+tomcat+redis负载均衡及session共享,所需的jar包,redis桌面程序,以及相关的配置说明文档

Redis实战和核心原理详解(5)使用Redis存储Nginx+Tomcat负载均衡集群的Session

环境:Cent OS 7.0(虚拟机环境)、Nginx 1.9.8、Redis 3.2.1一、背景在使用Nginx+Tomcat实现负载均衡的时候,由于Nginx对不同的请求分发到某一个Tomcat,Tomcat在运行的时候分别是不同的容器里,因为会出现session不同步或者丢失的问题。二、Nginx安装与配置1、Nginx安装网上的资源对于安装Nginx的介绍比较多,例如最简单的为:(1) 获取

徐刘根的博客 3万+

Nginx+Tomcat+Redis实现负载均衡、资源分离、session共享

Nginx+Tomcat+Redis实现负载均衡、资源分离、session共享

神经网络(十五)在VS Code下搭建PyTorch环境

pytorch在vscode中的配置和使用

就随便写写.... 5万+

Nginx+Tomcat+Redis实现应用服务器集群负载均衡和Session共享

1.实验环境和所需软件    1.Windows7环境    2.nginx 1.6.3    3.redis 2.6.2    4.Tomcat 7.0.56  2.配置Nginx          Nginx路径:E:\new\Tomcat_Nginx_Cluster\nginx-1.6.3\#Nginx所有用户和组,window下不指定 #user Adminstrato

逍遥飞鹤的专栏 4365

PCB Layout总结

PCB Layout作为硬件设计中的一个环节,也是很重要的一个环节;在硬件电路设计合理的情况下,他其实是影响性能的一个绝对重要的指标。现在很多的PCB Layout工程师都是按照硬件工程师或者PI SI工程师给出的约束规则来完成布局布线的,这些也就是俗称的 “拉线工”。他们重复而机械的完成一块块PCB设计,一段时间设计后,他们中的一些或许已经有了这样的一些经验:哪些要做等长,哪些要走粗、哪些要平...

xydlxd118的博客 2583

使用Nginx、Redis集群实现Tomcat集群负载均衡,session共享

1、配置多个Tomcat同时运行 1.1、修改环境变量 将tomcat 复制两份出来 #将之前解压的tomcat文件夹直接复制并重命名为‘apache-tomcat_2’、‘apache-tomcat_3’ cp -r apache-tomcat apache-tomcat_2 cp -r apache-tomcat apache-tomcat_3 复制代码修改环境变量,介入如下内容 vi /et...

weixin_33774308的博客 200

别再为模糊的3D重建头疼了!手把手教你用3DSlicer处理DICOM数据,搞定医学影像三维可视化

本文详细解析了医学影像三维重建中常见的模糊问题,并手把手教你使用3DSlicer处理DICOM数据,实现精准的三维可视化。从层厚设置到数据格式转换,再到重建算法选择和渲染参数微调,提供了一套完整的优化方案,特别适合临床医生和医学影像处理人员提升工作效率。

weixin_28693447的博客 251

Appstore 3.2(f)违规自救指南:从触发到申诉的完整应对策略

本文详细解析了Appstore 3.2(f)违规的应对策略,从触发原因到申诉流程,帮助开发者有效自救。文章涵盖隐瞒行为、账户关联和信息造假三大违规场景的判定逻辑,并提供申诉信写作的黄金法则和长期合规防御措施,确保开发者能够顺利通过苹果审核。

weixin_29304985的博客 664

使用nginx + tomcat + redis 实现集群

为什么要使用集群?集群有什么好处? 利用nginx对请求进行分流,将请求平均的分给不同的tomcat去处理,减少单个tomcat的负载量,提高tomcat的响应速度。   1 材料准备: tomcat 至少2个 redis 1个 nginx  1个  下载地址 http://nginx.org/ jar包           下载地址 https://pan.baidu.com...

. 2384

保姆级教程:用Vue3+Element Plus快速搭建Flowable流程定义管理后台界面

本文提供了一份详细的Vue3+Element Plus教程,指导开发者快速搭建Flowable流程定义管理后台界面。从项目初始化、核心页面设计到响应式数据处理,全面覆盖前端开发关键步骤,帮助提升企业级应用开发效率。

weixin_42662293的博客 480

Nginx+Tomcat+Redis负载均衡实现Session共享

Nginx+Tomcat+Redis负载均衡实现Session共享 环境描述 tomcat1:192.168.194.100:18080 tomcat2:192.168.194.100:28080 Nginx: 192.168.194.100:80 redis: 192.168.194.100:6379 1. Nginx安装与配置 【1】配置yum下载Nginx 第一步,在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo: cd /etc/yum.repos.d/

程序猿,攻城狮,大包子 396

Android Activity面试题最全解析(5万字长文)

Intent是Android中用于启动活动、服务或广播的一种消息对象。它包含了一系列键值对数据,用于描述操作的目的以及需要传递的信息。IntentString:字符串intfloatlong:基本数据类型Parcelable:实现了Parcelable接口的对象:实现了接口的对象示例代码如下:Java深色版本1// 创建Intent并传递数据");67// 启动新的Activity是一个XML标签,用于定义ActivityService或可以响应的Intent类型。它包含了。

大模型大数据攻城狮的专栏 804

Visual Studio调试技巧与实用方法总结(实战经验分享)

本文根据多年的项目实战经验,详细介绍一些Visual Studio常用的高效调试手段与技巧。

dvlinker的技术专栏 3万+

使用Nginx实现Tomcat负载均衡,并使用Redis实现session共享

本文简单介绍如何使用Nginx来实现Tomcat的负载均衡,使用Nginx来作为静态资源服务器,使用Redis来实现session的共享。搭建环境如下: 操作系统: RedHat Enterprise Linux 7 64位 jdk: jdk-8u92-linux-x64 nginx: nginx-1.10.3 tomcat:apache-tomcat-8.5.31 redis: r...

程序员的天堂 569

C++面向对象编程-继承与派生练习题

2、共同派生类 3、人员类Person的派生(虚基类的使用)

编程小鹏的博客 1193

Nginx+tomcat+redis实现高可用负载均衡session共享集群+redis哨兵监控

实验拓扑图 实验步骤: 一.做nginx和tomcat的代理 二.做keepalived+nginx的双机热备份,vip:192.168.10.100 三.做keepalived+redis的哨兵模式,vip:192.168.10.200 四.在tomcat上做会话保持实验环境: Keepalived主+nginx101:192.168.10.1 Keepalived从+nginx102:192....

qq_45592278的博客 1056

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

黑猴子的家:Nginx 结合 Tomcat 实现配置负载均衡,配合使用 redis 实现Session共享...

1、准备两个tomcat 2、修改 两个 tomcat 的 server.xml 文件 port 端口号要修改,两个tomcat 的端口号不能一样 tomcat1 (1)&lt;Server port="8015" shutdown="SHUTDOWN"&gt; (2)&lt;Connector URIEncoding="UTF-8" connectionTimeout...

黑猴子的博客 225

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

nginx+tomcat+redis 简单实现纵向负载均衡及session共享

最近工作很无聊,所以学习 nginx+tomcat+redis 实现负载均衡和session共享来充实一下,下面记载了我的实现过程和遇到的各种问题。1.实现负载均衡1.1.下载nginx,我使用的是Windows版本,下载地址 http://nginx.org/en/download.html    启动后控制台一闪而过,查看后台进程浏览器输入localhost则nginx已经启动,但是为什么会有...

freeSun90的博客 449

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Centos6.9 安装及配置 Nginx 实现负载均衡

一、依赖环境 运行以下命令即可完成完成安装:wget, vim-enhanced, make cmake gcc gcc-c++, pcre pcre-devel, zlib zlib-devel, openssl openssl-devel yum install -y wget yum install -y vim-enhanced yum install -y ma...

ZCF1024 的后宫 683

CentOS 7 安装 Nginx

nginx下载地址:http://nginx.org/en/download.html 一、安装依赖软件 一. gcc 安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: yum install gcc-c...

chuanwangjiu4622的博客 287

Nginx+Tomcat+Redis负载均衡会话保持

在之前的文章介绍了 Nginx 一个很重要的功能——代理,包括正向代理和反向代理。这两个代理的核心区别是:正向代理代理的是客户端,而反向代理代理的是服务器。其中我们又重点介绍了反向代理,以及如何通过 Nginx 来实现反向代理。那么了解了Nginx的反向代理之后,我们要通过Nginx的反向代理实现另一个重要功能——负载均衡,然后再此基础上再加一台redis非关系型数据库来保存客户端请求的数据,实现会话保持。

微笑的段嘉许的博客 1471

Redis + Tomcat + Nginx 集群实现 Session 共享

优质文章,及时送达作者 | 蕃薯耀链接 |www.cnblogs.com/fanshuyao一、Session共享使用tomcat-cluster-redis-session-manager插件实现插件地址见:https://github.com/ran-jit/tomcat-cluster-redis-session-manager该插件支持Tomcat7、Tomcat8、Tomcat9或者直...

公众号:Java后端 398
上一篇: java注解详解和自定义注解
下一篇: mybatis自动生成实体类与mapper文件
Yuwen_forJava
博客等级 码龄9年 28粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值