Nginx+tomcat集群使用redis共享session
一 :nginx负载均衡
当Tomcat当做独立的Servlet容器来运行时,可看做是能运行Java Servlet的独立Web服务器。
此外 Tomcat还可以作为其他Web服务器进程内或者进程外的Servlet容器,从而与其他Web服务器集成(Apache Nginx IIS 等)
集成的意义在于:对于不支持运行java Servlet的其他Web服务器,可以通过集成Tomcat来提供运行Servlet的功能。
——————————Tomcat与JavaWeb开发技术详解(孙卫琴的一本书)
Nginx 通过Tomcat来运行Servlet容器。也可以 对集群的tomcat的负载进行均衡。(在后台多个Tomcat进行集群时,nginx把来自客户端的请求 随机分发到某一台Tomcat上)
下面看一个简单的demo
nginx.conf负载均衡的关键配置
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream tomcatserver{
server 119.23.50.194:9080 weight=1;
server 119.23.50.194:8080 weight=2;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://tomcatserver;
}
}
}
配置表示,nignx的断开时80端口,也就是当我们直接输入ip的时候
会直接进入nginx的根路径。location / 通过proxy_pass指向server 119.23.50.194:9080(三分之一的概率);或者 server 119.23.50.194:8080(三分之二的概率);
概率可通过权重 weight配置。
思考:前端的请求会随机分发到不同的Servlet容器中。不同的tomcat session是不共享的。这样 会话跟踪会失败。
二 使用redis共享session
tomcat 集群中,可以把session放到redis数据库中,解决session不共享的问题
进入cd /home/tomcat/apache-tomcat-7/lib路径下
把redis和tomcat配置的jar添加进去
jedis-2.5.2.jar
tomcat-redis-session-manage-tomcat7.jar
commons-pool2-2.2.jar
cd /home/tomcat/apache-tomcat-7/conf/
修改 context.xml文件
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="119.23.50.194"
port="6379"
database="0"
password="sunkun1210"
maxInactiveInterval="60" />
修改cd /home/tomcat/apache-tomcat-7/webapps/ROOT/ 目录下的index.jsp(tomcat欢迎页) 方便我们测试
119.23.50.194:9080 tomcat主页上加以下代码
<%@ page session="true" %>
<h1>tomcat9080</h1>
session:<%=session.getId()%>
119.23.50.194:8080 tomcat主页上加以下代码
<%@ page session="true" %>
<h1>tomcat8080</h1>
session:<%=session.getId()%>
大家可以点击测试,观察 tomcat的端口虽然编号 但是sessionId没变
为了保证在集群系统中,会话数据能在redis进行存储。应该保证所有存放在会话范围内的所有属性都实现了java.io.Serializable接口。
Nginx+tomcat集群使用redis共享session的更多相关文章
- nginx+tomcat集群负载均衡(实现session复制)
转自:http://talangniao.iteye.com/blog/341512 架构描述 前端一台nginx服务器做负载均衡器,后端放N台tomcat组成集群处理服务,通过nginx转发到后面( ...
- Tomcat7.0.99集群使用Redis共享session方案
以前配置过给予多播的session共享方案,这回再配置一个redis共享session的. 先小小的炫耀一下: 相信大家要做Tomcat+Redis+session配置,遇到的头号麻烦就是编译的tom ...
- nginx+tomcat实现集群,redis实现session共享,软连接实现文件共享:http://blog.csdn.net/hua1586981/article/details/78132710
转载 2017年02月08日 16:52:41 730 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人未必了解. 说到反向代理,可能 ...
- 【nginx+tomcat集群】Nginx1.12.2+Tomcat7集群+负载均衡+Session共享
今天想着将项目优化一下,就想的实现集群分布,在本机测试:利用nginx+tomcat实现 通过上一篇博客(http://www.cnblogs.com/qlqwjy/p/8535235.html),N ...
- 160513、nginx+tomcat集群+session共享(linux)
第一步:linux中多个tomcat安装和jdk安装(略) 第二步:nginx安装,linux中安装nginx和windows上有点不同也容易出错,需要编译,这里做介绍 一.安装依赖 gcc open ...
- Nginx+tomcat集群中,session的共享
nginx,tomcat集群后多个session分配到同一个应用 单节点低负荷的情况下,我们通常把一个WEB应用打成WAR包放WEB应用服务器,如TOMCAT下运行就行了(如图1).但随着用户量的增加 ...
- 使用Nginx搭建Tomcat9集群,Redis实现Session共享
使用Nginx搭建Tomcat9集群,Redis实现Session共享 1.tomcat准备 首先准备两个tomcat9 ,修改配置文件server.xml 如果在多个服务器上分别启动tomcat 则 ...
- Nginx+Tomcat集群+session共享
Nginx+Tomcat集群+session共享 1)安装Nginx 2)配置多个Tomcat,在server.xml中修改端口(端口不出现冲突即可) 3)在nginx.conf文件中配置负载均衡池, ...
- Nginx+Tomcat集群配置
Nginx+Tomcat集群配置 一台虚拟机作为Nginx服务 两太虚拟机配置Tomcat+jdk环境 Nginx测试 启动: cd usr/local/nginx/sbin ./nginx ---& ...
随机推荐
- Quartz.Net进阶之七:QuartzNet其他的功能简述
一.介绍 今天是这个系列的最后一篇文章了,主要功能说的差不多了,我们来看看其他相关的内容.话说回来,虽然是这个系列的最后一篇文章,并不代表Quartz的东西就这么点,学习阶段,就这些了,如果以后有了使 ...
- MVC htmlAttributes and additionalViewData
@Html.TextBoxFor(m => m.UserName, new { title = "ABC" }) // 输出结果为 <input data-val=&q ...
- 使用QML绘制界面
1 使用QML设计登录界面 https://www.cnblogs.com/bhlsheji/p/5324871.html 2 使用QML实现下拉列表框 https://blog.csdn.net/ ...
- [Git] 拉开发分支的代码报错
Git拉开发分支的代码报错: fatal: The remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed ...
- java中函数的参数传递
转载 https://www.cnblogs.com/lixiaolun/p/4311863.html 转载https://www.cnblogs.com/wutianqi/p/8723582.ht ...
- this()基础用法
this()表示调用构造方法,此种调用只能用在构造方法中,即构造方法中调用构造方法this(实参). 1.this().this(实参)必须方法构造方法的第一行 2.在有参数构造方法中调用无参数构造方 ...
- the default terminal(gnome-terminal) start up fail
Platform: Ubuntu 16.04 LTS Reason: variable $LANG on system is empty Solution: localectl set-locale ...
- DecimalFormat 的用法
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字. DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字.Dec ...
- Appium+Python自动化 3 -获取 app 包名和 activity
方法一: ①手机通过USB连接电脑 ②打开手机上被测app ③在电脑上 dos命令窗口,输入命令 adb shell dumpsys window w | findstr \/ | findstr n ...
- Leetcode——Two Sum(easy)
题目:Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1] 代码: ...