今天整合了一些资源,做了一个Nginx+Tomcat+Redis的案例,使部署的web项目能够承载较大的访问压力,Nginx实现负载均衡,并使用Redis实现session共享;
如下拓扑图:
各版本如图所示
========================================
开启项目说明:
操作系统:win7_64
反向代理:Nginx_1.4.7
Tomcat:apache-tomcat-7.0.42
复制三份:
apache-tomcat-7.0.42_A;
apache-tomcat-7.0.42_B;
apache-tomcat-7.0.42_C
Redis:redis-64.3.0.503
JDK:1.8
重要:
Redis实现session共享时,需要的三个重要jar包:
tomcat-redis-session-manager1.2.jar
commons-pool2-2.2.jar
jedis-2.6.1.jar
==========================================
步骤一:
安装Nginx:
我使用的Nginx为绿色版本,双击即可开启
(命令启动,重新加载等请参考:http://blog.csdn.net/qq_16216221/article/details/72597388)
修改 nginx.conf 配置文件,多个Tomcat服务器都是在这里配置:
upstream中的localhost前面不能加:http://, location中proxy_pass里的:http:// 不能省略
weight为访问权重,数值越高,访问的机会也越高。
以上Nginx配置只是简单配置,请根据自己的项目情况,做详细配置。
步骤二:
部署Tomcat服务器:
apache-tomcat-7.0.42_A;
apache-tomcat-7.0.42_B;
apache-tomcat-7.0.42_C
1:apache-tomcat-7.0.42_A 部署:
server.xml注意三个地方,本服务器使用默认配置:
redirectPort="8443" />
context.xml添加session共享的配置,去注释,全贴出来,方便观看和黏贴:
其中的password="123456"是redis的访问密码,很多帖子都没有提到,让我耽误很多时间,怎么设置redis的访问密码呢?请继续往下看。。。
当然,访问路径和端口号也需要配置正确。
port="6379"
password="123456"
database="0"
maxInactiveInterval="60" />
2:apache-tomcat-7.0.42_B 部署:
server.xml修改三个地方的端口号:
redirectPort="8443" />
context.xml添加session共享的配置同apache-tomcat-7.0.42_A服务器的配置:
3:apache-tomcat-7.0.42_C 部署:
server.xml修改三个地方的端口号:
redirectPort="8443" />
context.xml添加session共享的配置同apache-tomcat-7.0.42_A服务器的配置:
步骤三:
部署测试web项目,编写首页测试代码:index.jsp
apache-tomcat-7.0.42_A服务器中web项目的代码:
相信大家都能明白代码中意思,第一次访问,不管是访问哪一个Tomcat,都会输出:new session:AAA111
刷新请求,理论上就应该输出:old session:AAA111,如果不是,那就是你的会话不是一个session。
为了有所区分,能够知道我们访问了哪一台服务器,我们添加标注信息。当然,保存和访问的session信息是一致的。
将web项目打成war包,放到tomcat的webapps目录下即可。
步骤四:
redis安装和配置:
下载:redis-64.3.0.503版本的解压包,我的是绿色版,解压即可用,如下所示:
修改redis.windows.conf配置文件:
添加访问密码:行前不能有空格,否则报错。
# requirepass foobared
requirepass 123456
启动Redis即可,session的保存不需要我们处理。
ok,准备工作到此结束,下面就是见证奇迹的时刻:
启动Nginx,三个tomcat,redis
阿弥陀佛保佑。。。
打开浏览器:输入:http://localhost/TestDemo/;localhost 访问的是我们的Nginx,它会随机分配到具体的tomcat上 ;TestDemo为我的web项目名称。
第一次访问:Nginx为我分配到apache-tomcat-7.0.42_C服务器,并输出:new ...,说明之前没有这个session,创建后并输出。
再刷新几次浏览器,看效果:
效果大家也看到了,这就是负载均衡和session共享。
涉及到的资源统一放到,欢迎下载:
稍后会贴出连接
==============完==================
---------------------
作者:二十亩鱼
来源:CSDN
原文:https://blog.csdn.net/qq_16216221/article/details/72599016
版权声明:本文为博主原创文章,转载请附上博文链接!