在tomcat+nginx分布式环境下,如果有一台服务器挂掉,那个它上面的session则会消失(session是保存在服务器上面),那么我们怎么解决这个问题?我们可以把信息保存在cookie中(cookie是保存在客户端,也就是游览器),但是,这样是不安全的,下面我要介绍的是用redis保存session信息,而达到session共享(我也是刚看别人的博客,搭建出来,有些注意的地方要知道)。 1、需要3个jar包,分别是commons-pool2-2.3.jar,jedis-2.7.2.jar,tomcat-redis-session-manager1.2.jar(这个jar包我是直接下载的,没去原版的github拉取。),将3个jar包放在每台服务器tomcat的lib当中。 2、配置tomcat的context.xml文件,将redis链接配置(以及使用tomcat-redis-session-manager1.2.jar进行session的存储共享)到当中,如下: <!-- 利用redis 进行session 共享 单例模式 只有一台redis --> <!-- redis-Sentinel 配置 多例模式 --> 我们这里使用单例模式,redis集群,在接下来几篇会有 注意:一定要反编译你拿到的tomcat-redis-session-manager1.2.jar包,看看RedisSessionHandlerValve.class、RedisSessionManager.class的路径(之前直接复制网上的配置,发现找不到类,然后反编译jar包找到对应的位置),如果你的redis有密码,则在manager下面加入 3、nginx的配置 这个其实不需要的和redis没关联,只是测试的时候,为了看出效果如下: upstream
localhost { 如果没有它,那么,用户的所有操作都将是交给nginx进行分配的,现在我们这里把它注释掉,测试 的时候登录之后进行操作,各个服务器将是共享的,可能在1,可能在n,那么session也是共享的, 然后,将其中一台服务器停掉,继续操作,结果当然是在其他服务器上执行,现在,我们将ip_hash 加上,继续之前的操作,从头再来,结果。。。。。你懂的。
|
|