Centos7下Nginx+Tomcat配置反向代理,使用redis解决session一致性问题

一、session一致性问题

       使用集群方案解决网站高并发问题时,就会部署多台应用服务器。当用户第一次通过客户端(如:浏览器)访问服务器时,服务器会创建对应的session,

使用Nginx反向代理,假如用户A第一次访问站点,被反向代理到服务器一处理,服务器一创建对应sessionA记录信息,用户A再次访问站点时,被反向代理到服务二处理,

而服务器二没有记录用户A的session信息,就会新创建sessionB,导致用户A之前操作丢失。

       我们可以通过让多个服务器统一到同一个地方新建session和取session,来解决session不一致的问题。

二、基于上篇搭建好Nginx+Tomcat环境信息,可以使用memcached解决session一致性问题

      Linux下Nginx+Tomcat配置反向代理

三、Redis简介

  REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

四、配置

      1、安装Redis,默认端口为6379

cd  /usr/local/redis/
wget http://download.redis.io/releases/redis-4.0.8.tar.gz
tar  xzf redis-4.0.8.tar.gz
cd  redis-4.0.8
make

      2、启动,并且修改/usr/local/redis/redis-4.0.8/redis.conf 的bind值,改为本机ip

./redis-server  --protected-mode no

      3、上传jar包到tomcat的lib目录下,实现让多个服务器统一到redis新建session和取session

            jar包可以去github查看下载,地址:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration

      4、修改每一个tomcat配置信息

            a、为了便于测试,修改/usr/local/tomcat/apache-tomcat-8.0.50/conf/server.xml文件,Engine节点添加jvmRoute="tomcat1"(103行左右,多个tomcat修改名字不同)

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1" >

       b、修改/usr/local/tomcat/apache-tomcat-8.0.50/conf/context.xml,实现tomcat到Redis新建session和取session,在Context节点里添加如下配置

      memcachedNodes="redis://192.168.182.131:6379",这个ip需要是自己安装的redis的ip

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
         memcachedNodes="redis://192.168.182.131:6379"
         requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
         />

 五、测试

      浏览器访问192.168.182.130,ctrl + F5刷新浏览器,查看session信息是否和预期一致。

六、tomcat和nginx安装可以参考个人的随笔

     Linux环境下安装Tomcat

     CentOS7编译安装Nginx

 

yexiangyang

moyyexy@gmail.com


 

posted @ 2018-03-03 17:39  墨阳  阅读(371)  评论(0编辑  收藏  举报