1.本地在虚拟机中安装192.168.254.100以及192.168.254.110上安装两台tomcat8.5,修改两台tomcat的server.xml配置,添加使sessionid保持一致的配置如下:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8"><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="4000"
autoBind="100"
selectorTimeout="5000"
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"/>
</Channel><Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/><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>
1.1别忘了web.xml增加<distributable/>标签
2.安装nginx,参考文章https://www.cnblogs.com/xxoome/p/5866475.html
3.修改nginx的conf.xml,配置两台服务器的负载均衡
upstream tomcat-portal {
server 192.168.254.100:8080;
server 192.168.254.110:8080;
}
server {
listen 80;
server_name localhost;#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcat-portal;
index index.html index.htm index.jsp;
}}
4.启动nginx、启动两台tomcat,在tomcat/webapps中增加查看session的jsp
<%@ 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>
<title>应用集群测试---session共享</title>
</head>
<body>
<center>
<b>服务器信息</b>
</center>
<hr />
<%
out.println("实际访问地址:" + request.getLocalAddr() + " : "
+ request.getLocalPort() + "<br>");
%>
<hr />
<%
out.println("<br> Session ID: " + session.getId() + "<br><hr/>");
// 如果有新的 Session 属性设置
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.println("<b>Session 列表</b><br><hr/>");
out.println("<table border=\"1\"><tr><td width=\"200\">属性名称</td><td width=\"300\">属性值</td></tr>");
System.out.println("============================");
Enumeration<String> e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String) e.nextElement();
String value = session.getAttribute(name).toString();
out.println("<tr><td>" + name + "</td><td>" + value
+ "</td></tr>");
System.out.println(name + " = " + value);
}
out.println("</table>");
%>
<hr />
<div>
<form action="test2.jsp" method="POST">
<b>属性名称:</b><input type=text size=25 name="dataName">
  <b>属性赋值:</b><input type=text size=25
name="dataValue">
<input type=submit value="设置属性">
</form>
</div>
</body>
</html>