在负载均衡下,导致多个服务器之间的session是没有办法共享的,一天服务器登录,另一台服务器还得需要再次登录。
第一种解决方法
采用ip_hash负载策略。当用户第一次被负载到ip,之后所有请求,nginx都会将 请求负载到同一个ip上,所以不会存在session需要共享的问题
第二种解决方法(外置tomcat项目,而且会造成资源消耗,超过4个服务节点时,不推荐使用)
修改所有的tomcat服务下的serverxml
在 <Engine>标签下,加入(一般默认会有,只是被注释掉了)
<Cluster className="orgapachecatalinahatcpSimpleTcpCluster"/>
修改所有项目的webxml
在<web-app></web-app>标签中
加入<distributable><distributable/>,加入到
第三种SSO单点登录(redis方式)
配置Engine 的设置,启用cluster,具体可以参照注释里面的html,下面是一个简单sample
<Engine name="Catalina" defaultHost="localhost" jvmRoute="JVM_NAME">
<!--For clustering, please take a look at documentation at:
/docs/cluster-howtohtml (simple how to)
/docs/config/clusterhtml (reference documentation) -->
<Cluster className="orgapachecatalinahatcpSimpleTcpCluster" channelSendOptions="4">
<Manager className="orgapachecatalinahasessionDeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="orgapachecatalinatribesgroupGroupChannel">
<Membership className="orgapachecatalinatribesmembershipMcastService"
mcastBindAddress="HOST_IP"
address="224000"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="orgapachecatalinatribestransportnioNioReceiver"
tcpListenAddress="HOST_IP"
port="4001"
autoBind="100"
selectorTimeout="100"
maxThreads="6"/>
<Sender className="orgapachecatalinatribestransportReplicationTransmitter">
<Transport className="orgapachecatalinatribestransportnioPooledParallelSender"/>
</Sender>
<Interceptor className="orgapachecatalinatribesgroupinterceptorsTcpFailureDetector"/>
<Interceptor className="orgapachecatalinatribesgroupinterceptorsMessageDispatch15Interceptor"/>
</Channel>
<Valve className="orgapachecatalinahatcpReplicationValve"
filter=""/>
<Valve className="orgapachecatalinahasessionJvmRouteBinderValve"/>
<Deployer className="orgapachecatalinahadeployFarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="orgapachecatalinahasessionJvmRouteSessionIDBinderListener"/>
<ClusterListener className="orgapachecatalinahasessionClusterSessionListener"/>
</Cluster>
以上就是关于nginx负载均衡下,带来的tomcat session共享问题全部的内容,包括:nginx负载均衡下,带来的tomcat session共享问题、求教Apache+Tomcat集群的Session复制方法、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)