上篇实现了 LINUX中NGINX反向代理下的TOMCAT集群(http://www.cnblogs.com/yuanjava/p/6850764.html)

这次我们在上篇的基础上实现session 共享问题

Nginx机器:192.168.1.108

两台tomcat机器分别是:192.168.1.168

192.168.1.178

一:测试session共享问题

在原index.jsp页面添加如下代码

SessionId:<%= session.getId() %>
<% String username =(String)session.getAttribute("username");
if(!"".equals(username)&& username!=null){
out.print("------username is "+session.getAttribute("username"));
} else {
out.print("------start username is null");
session.setAttribute("username", "lxs");
out.print("------now username is "+session.getAttribute("username"));

}

%>

此时,通过nginx 访问时 第一次访问的是 178那台机器

再次刷新时,访问了168那台机器

可以看出,此时 session 是不共享的,在集群下,分别创建了session

二:用redis实现 session 共享

实现  session 共享的方法有很多种,此次用的是把session存在 redis 中实现共享。

1.安装redis (如何安装请看http://www.cnblogs.com/yuanjava/p/6793251.html)

redis也是安装在192.168.1.108,跟Nginx安装在同一台机器了

2.把需要的jar包分别拷贝到 两个tomcat 的lib目录下

3. 修改 context.xml 里的内容

分别在tomcat/conf/context.xml里添加如下内容

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />

<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"

host="192.168.1.108"

port="6379"

database="0"

maxInactiveInterval="60" />

其中className 是固定的,取得是 jar包里的实现的类

host 是redis 的主机名  port是redis端口  database 是把session存放在redis的第几个库里,maxInactiveInterval表示session存活时间

4.再次测试session共享

经过前三步,已经实现了redis下的session共享问题,再次测试

分别启动redis,nginx,以及tomcat 再次访问http://192.168.1.108:7777/nginxTest/

此时nginx 首先转发到178那台机器,此时,session里的 username是为空的,然后往

username里存放了一个值,然后打印出了值

再次访问http://192.168.1.108:7777/nginxTest/,此时nginx 转到了168那台机器

此时 sessionid 跟178的一样。同时username 也是有值的,直接打印出了 值

这说明了 此时session 是共享的,同时在redis里也存进去了对应session

用redis实现TOMCAT集群下的session共享的更多相关文章

  1. nginx整合tomcat集群并做session共享----测试案例

    最近出于好奇心,研究了一下tomcat集群配置,并整合nginx,实现负载均衡,session共享,写篇记录,防止遗忘.---------菜鸡的自我修炼. 说明:博主采用一个web项目同时部署到两台t ...

  2. Tomcat 集群中 实现session 共享的三种方法

    前两种均需要使用 memcached 或 redis 存储 session ,最后一种使用 terracotta 服务器共享. 建议使用 redis ,不仅仅因为它可以将缓存的内容持久化,还因为它支持 ...

  3. 【nginx+tomcat集群】Nginx1.12.2+Tomcat7集群+负载均衡+Session共享

    今天想着将项目优化一下,就想的实现集群分布,在本机测试:利用nginx+tomcat实现 通过上一篇博客(http://www.cnblogs.com/qlqwjy/p/8535235.html),N ...

  4. Nginx+tomcat集群中,session的共享

    nginx,tomcat集群后多个session分配到同一个应用 单节点低负荷的情况下,我们通常把一个WEB应用打成WAR包放WEB应用服务器,如TOMCAT下运行就行了(如图1).但随着用户量的增加 ...

  5. Redis存储Tomcat集群的Session

    Redis存储Tomcat集群的Session 如何 做到把新开发的代码推送到到生产系统中部署,生产系统要能够零宕机.对使用用户零影响. 设想 是使用集群来搞定,通过通知负载均衡Nginx,取下集群中 ...

  6. Nginx+Tomcat+Memcached 实现集群部署时Session共享

    Nginx+Tomcat+Memcached 实现集群部署时Session共享 一.简介 我们系统经常要保存用户登录信息,有Cookie和Session机制,Cookie客户端保存用户信息,Sessi ...

  7. Shiro+Redis实现tomcat集群session共享

      一.背景 当我们使用了nginx做项目集群以后,就会出现一个很严重的问题亟待解决,那就是:tomcat集群之间如何实现session共享的问题,如果这个问题不解决,就会出现登陆过后再次请求资源依旧 ...

  8. tomcat集群时统计session与在线人数

    tomcat集群时,原来通过HttpSessionListener实现类监听session的创建和销毁来统计在线人数的方法不再有效,因为不是每个人登陆都会在同一个tomcat服务器上,而在另一台tom ...

  9. Apache + Tomcat + mod_jk实现集群服务及session共享

    实现效果:用apache 分发请求到tomcat中的对应的项目 原理:

随机推荐

  1. Linux - 函数的栈帧

    栈帧(stack frame),机器用栈来传递过程参数,存储返回信息,保存寄存器用于以后恢复,以及本地存储.为单个过程(函数调用)分配的那部分栈称为栈帧.栈帧其实是两个指针寄存器, 寄存器%ebp为帧 ...

  2. Extjs6组件——Form大家族成员介绍

    本文基于ext-6.0.0 一.xtype form一共有12种xtype,下面来一一举例说一下. 1.textfield 这个是用的最多的form之一. { xtype: 'textfield', ...

  3. 2017年4月 TIOBE 编程语言排名

    2017年4月 TIOBE 编程语言排名 Hack是Facebook 在三年推出的PHP方言,在2017年4月首次进入TIOBE编程语言排行榜前50位. Hack原是Facebook的内部项目,与20 ...

  4. PROFINET有什么用

    “工业4.0”是当前制造业最热门的话题,所以不谈这个话题都不好意思跟同行们打招呼.“工业4.0”里面的一个重要内容是智慧工厂,工厂流水线设备之间通信,无论是传统的有线连接还是先进的无线连接与分布式控制 ...

  5. ashMap源码阅读与解析

    目录结构 导入语 HashMap构造方法 put()方法解析 addEntry()方法解析 get()方法解析 remove()解析 HashMap如何进行遍历 导入语 HashMap是我们最常见也是 ...

  6. 'k1': 大于66的所有值, 'k2': 小于66的所有值

    #!/usr/bin/env python # -*- coding: utf-8 -*- #有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值 ...

  7. vs2015c++/MFC入门知识全集/实例规范书籍视频下载孙鑫c++对话框计算器基础控件使用教程系列

    VIP教程可免费看.可免费下载前部分试看教程地址:http://dwz.cn/4PcfPk免费下载地址:http://dwz.cn/mfc888 本课程目录 67章 [MFC项目开发第01天]Wind ...

  8. C++ 常见的 Undefined symbols for architecture *

    出现 Undefined symbols for architecture x86_64: 的原因 1.函数申明了,却未被定义. 2.申明的虚函数未被实现. NOTE: a missing vtabl ...

  9. 基于Kubernetes的WAF集群介绍

    Kubernetes是Google开源的容器集群管理系统.它构建Docker技术之上,为容器化的应用提供资源调度.部署运行.服务发现.扩容缩容等整一套功能,可看作是基于容器技术的PaaS平台. 本文旨 ...

  10. How to change current process to background process

    Situation: there is a script or command is running, but we need to close current box/windows to do o ...