使用Nginx实现Tomcat集群负载均衡
1. 概述
2. 要解决的问题
3. 环境准备以及问题解决思路
一、概述
使用Nginx主要是来解决高并发情况下的负载均衡问题。
二、要解决的问题
1、最主要是负载均衡请求分发。
2、文件上传功能,只能上传到一个Tomcat上,下载文件或者图片的时候就有可能发生404错误。
3、多个Tomcat之间Session共享问题,否则会出现不断要求登录的情况。
三、环境准备以及问题解决思路
1、第一个问题肯定就是使用Nginx来做负载均衡。安装Nginx,请参考:http://www.cnblogs.com/machanghai/p/5544897.html
2、第二个问题思路有两个:
a)在Linux上搭建NFS服务器来实现文件共享,参考:https://www.linuxidc.com/Linux/2012-07/65041.htm
b)利用Nginx的负载均衡,请求转发功能,将关于图片的上传和下载请求全部转到一台Tomcat上。具体配置参考下边配置一节。本文使用的是这种方式。
3、上述提到的第三个问题即Session共享问题选择是Tomcat-Redis-Session_manager来解决的,具体请参考:https://www.cnblogs.com/machanghai/p/5957086.html
3、一台Linux安装多个Tomcat请参考:linux系统下安装两个或多个tomcat。
本文使用的是三台Tomcat,两台处理除文件以外的请求,一台专门处理文件上传和下载的请求。
分别为:Tomcat1:192.168.1.96:7070
Tomcat2:192.168.1.96:8081
Tomcat3:192.168.1.96:9090
解压后有三个文件:NginxTest.war,NginxTest2.war,NginxImageTest.war,
其中NginxTestImage必须放到Tomcat3中,三个应用程序名字在放入Tomcat之后必须都改为NginxTest。
只用NginxTestImage应用有图片文件,NginxTest和NginxTest2中无图片文件。
工作中因为要使用到Tomcat集群部署,此时就涉及到了Session共享问题,主要有三种解决方案:
1、使用数据库来存储Session
2、使用Cookie来存储Session
3、使用Redis来存储Sesssion
4、使用Tomcat的session复制
5、使用Memcached来存储Session