nginx负载均衡下,带来的tomcat session共享问题

nginx负载均衡下,带来的tomcat session共享问题,第1张

负载均衡下,导致多个服务器之间的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复制方法、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9582408.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存