使用Nginx实现Tomcat集群负载均衡

使用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

你可能感兴趣的:(使用Nginx实现Tomcat集群负载均衡)