tomcat自带session共享功能 不必非集成第三方软件 只需配置即可 http://tomcat.apache.org/tomcat-8.5-doc/cluster-howto.html
为什么选择Nginx?
Nginx 是一个很强大的高性能Web和反向代理服务器,它具有很多非常优越的特性:
在连接高并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。
配置结构图

1、下载地址
http://nginx.org/en/download.html
,这里我们推荐下载稳定版(stable versions),本文采用nginx/Windows-1.12.0。
2、目录结构
Nginx-
| conf 配置目录
| contrib
| docs 文档目录
| logs 日志目录
| temp 临时文件目录
| html 静态页面目录
|_ nginx.exe 主程序
window下安装Nginx极其简单,解压缩到一个无空格的英文目录即可(个人习惯,担心中文出问题),双击nginx启动,这里我安装到:D:\nginx目录,下面涉及到的tomcat也安装在此目录。

Nginx 命令

start nginx
nginx -s stop
nginx -s quit
3、nginx.conf配置
Nginx配置文件默认在conf目录,主要配置文件为nginx.conf
4、Tomcat配置
对于tomcat大家都很熟悉,只需要修改server.xml配置文件即可;
这里我们以apache-tomcat-8.5.5为例,分别在server目录,解压缩并命名为:apache-tomcat-8.5.5-8090、apache-tomcat-8.5.5-8091
第一处端口修改:
Xml代码 :
-
- <Server port="8006" shutdown="SHUTDOWN">
第二处端口修改:
Xml代码 :
-
- <Connector port="8090" protocol="HTTP/1.1"
- connectionTimeout="20000"
- redirectPort="8443" />
第三处端口修改:
- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
第四处session共享配置
-
-
-
- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
- channelSendOptions="6">
-
- <Manager className="org.apache.catalina.ha.session.BackupManager"
- expireSessionsOnShutdown="false"
- notifyListenersOnReplication="true"
- mapSendOptions="6"/>
- <!--
- <Manager className="org.apache.catalina.ha.session.DeltaManager"
- expireSessionsOnShutdown="false"
- notifyListenersOnReplication="true"/>
- -->
- <Channel className="org.apache.catalina.tribes.group.GroupChannel">
- <Membership className="org.apache.catalina.tribes.membership.McastService"
- address="228.0.0.4"
- port="45564"
- frequency="500"
- dropTime="3000"/>
- <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
- address="auto"
- port="5000"
- selectorTimeout="100"
- maxThreads="6"/>
-
- <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
- <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
- </Sender>
- <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
- <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
- <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
- </Channel>
-
- <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
- filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/>
-
- <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
- tempDir="/tmp/war-temp/"
- deployDir="/tmp/war-deploy/"
- watchDir="/tmp/war-listen/"
- watchEnabled="false"/>
-
- <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
- </Cluster>
官方文档地址:
http://tomcat.apache.org/tomcat-8.5-doc/cluster-howto.html
其次验证tomcat,启动两个tomcat,不出现端口冲突即为成功。
Java项目web.xml需要配置加入
验证页面session是否相同
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
-
- <title>My JSP 'index.jsp' starting page</title>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
- <!--
- <link rel="stylesheet" type="text/css" href="styles.css">
- -->
- </head>
-
- <body>
- SessionID:<%=session.getId()%>
- <BR>
- SessionIP:<%=request.getServerName()%>
- <BR>
- SessionPort:<%=request.getServerPort()%>
- <%
- out.println("This is Tomcat Server 11111");
- %>
- </body>
- </html>


参考文章地址:http://www.jianshu.com/p/47a94a3bff34