Репликация сеанса Tomcat - конфигурация разных машин

Если я хочу создать кластер из 2 котов:

Tomcat1 — IP-адрес 111.111.111.111 Tomcat2 — IP-адрес 222.222.222.222

Где именно в server.xml я должен сказать, что мой кластер содержит оба этих ips? Если вы посмотрите на мой 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>

person Urbanleg    schedule 29.12.2013    source источник


Ответы (1)


Узлы кластера по умолчанию обнаруживаются с помощью многоадресной рассылки UDP, поэтому явный список хостов в этом примере не требуется.

Если ваша целевая среда не поддерживает многоадресную рассылку UDP, вам придется переключиться на статическое членство:

<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>
person Szymon Jednac    schedule 29.12.2013