【问题标题】:Tomcat session replication - different machines configurationTomcat 会话复制 - 不同机器配置
【发布时间】:2013-12-29 16:07:24
【问题描述】:

如果我想创建一个包含 2 个 tomcat 的集群:

Tomcat1 - ip 111.111.111.111 Tomcat2 - ip 222.222.222.222

我应该说我的集群包含这两个 ips 在 server.xml 中的确切位置? 如果你看一下我的 server.xml(我从教程中复制粘贴),它看起来像这样:

<?xml version='1.0' encoding='utf-8'?>

<Server port="8105" shutdown="SHUTDOWN">

<GlobalNamingResources>

<Resource name="UserDatabase" auth="Container"
          type="org.apache.catalina.UserDatabase"
          description="User database that can be updated and saved"
          factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
          pathname="conf/tomcat-users.xml" />
 </GlobalNamingResources>
  <Service name="Catalina">


<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />


<Engine name="Catalina" defaultHost="localhost">
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
  <Manager className="org.apache.catalina.ha.session.BackupManager"
               expireSessionsOnShutdown="false"
               notifyListenersOnReplication="true"
               mapSendOptions="6"/>   
   </Cluster>

  <Realm className="org.apache.catalina.realm.LockOutRealm">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
           resourceName="UserDatabase"/>
  </Realm>

  <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log." suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

    </Host>
   </Engine>
  </Service>
</Server>

【问题讨论】:

    标签: java apache session tomcat session-replication


    【解决方案1】:

    默认使用UDP multicast 发现集群节点,因此在此示例中不需要显式主机列表。

    如果您的目标环境不支持UDP 多播,那么您将不得不切换到static membership:

    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
    
       <Manager className="org.apache.catalina.ha.session.DeltaManager"
                expireSessionsOnShutdown="false"
                notifyListenersOnReplication="true"/>
    
       <!-- Membership config (Tomcat1) -->
       <Channel className="org.apache.catalina.tribes.group.GroupChannel">
                <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.TcpPingInterceptor"/>
                <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
                <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
    
                <!-- Setup static members below -->
                <Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">
                    <!-- Commented out on Tomcat1
                    <Member className="org.apache.catalina.tribes.membership.StaticMember"
                            port="4100"
                            host="111.111.111.111"
                            domain="delta-static"
                            uniqueId="{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}"
                    />
                    -->                    
                    <Member className="org.apache.catalina.tribes.membership.StaticMember"
                            port="4100"
                            host="222.222.222.222"
                            domain="delta-static"
                            uniqueId="{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0}"
                    />
                </Interceptor>
       </Channel>
    
       <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
       <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
    
       <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
       <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
    </Cluster>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 2013-12-09
      • 2018-01-01
      相关资源
      最近更新 更多