(三)配置nginx负载tomcat,redis解决session共享

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a281246240/article/details/83823272

Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的。

何为反向代理呢?即以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

而Nginx主要完成的工作就是反向代理,比如我们向一台服务器的80端口发送了请求,该请求首先由Nginx监听到,其接受到请求内容后再转发给其他服务器,其他服务器处理完后再将结果传送给Nginx,最后由Nginx来统一返回给初始请求端。 

使用redis解决tomcat集群session共享问题,把session存储在redis中。

配置nginx

进入到nginx配置文件目录:/usr/local/nginx/conf

编辑nginx.conf:

保存后退出,重启nginx:./nginx -s reload

启动nginx之后,通过nginx访问tomcat,nginx会把请求根据一定策略分发到三个tomcat,实现负载均衡:

多刷新,可以看到出现不同的tomcat

配置redis,session共享

redis是基于内存的nosql数据库,读写效率相当高,提供键值过期机制,比较适合session机制

使用开源项目tomcat-redis-session-manager来完成配置

上git下载源码tomcat-redis-session-manager

使用src下的类来重新构建项目,使用eclipse重新编译成jar包

在eclipse创建一个maven project项目(simple),

修改pom.xml,添加tomcat、jedis依赖:

 redissessionmanager不支持高版本的tomcat,具体为org.apache.catalina.util.LifecycleSupport类

改为使用8.0.53版本的tomcat

并修改代码

把tomcat-redis-session-manager-master中src/main/java下的com包拷贝至项目中:

拷贝完进行打包,runas--maven install

在target下可以看到jar包:

把这个jar分别拷贝带linux中三台tomcat的lib目录下

依赖的的包同样也需要拷贝:commons-pool2-2.4.2、jedis-2.9.0,如下三个包:

修改三台tomcat的配置文件,修改tomcat下conf目录下context.xml:

配置好redis的相关信息注意,如果没设置redis密码,不需要指定password,默认不需指定

jedis连接不上redis,报错JedisConnectionException: Could not get a resource from the pool

解决办法:

修改/etc/redis/6379.conf配置文件,修改bind节点为0.0.0.0,表示所有节点都可以连接redis,修改peotected-model 为no;

然后再重启redis

配置完毕,访问nginx:

可以看到三台tomcat获取的sessionid是相等的

进入redis,查看key,查看剩余过期时间

tomcat集群的session共享设置成功

猜你喜欢

转载自blog.csdn.net/a281246240/article/details/83823272