Complex Clustering GBeans
-------------------------

In the last 2 parts I explained how to set up simple clustering with a single class for Engine/Host/Context levels. Now we can expand on this for more complex settings. The following are the Clustering Gbeans that have been created:

CatalinaClusterGBean - The main clustering bean

ClusterDeployerGBean - Should normally not be used directly..should be extended...although it could be used for simple deployers.

FarmWarDeployerGBean - In theory this will work, but may be an issue with Geronimo deployments.

MembershipServiceGBean - Membership wrapper

MessageListenerGBean - This can be chained like a ValveGBean

ReceiverGBean - Receiver wrapper

SenderGBean - Sender wrapper

All of these Gbeans work just like most of the other Tomcat GBeans, where you set the initParams attribute to a listing of all of the Tomcat settings that are used (Except for the FarmWarDeployer which uses GBean attributes). The following is the same example as the Tomcat complex clustering from the http://tomcat.apache.org/tomcat-5.5-doc/cluster-howto.html page but with GBeans:

<!-- Cluster -->
<gbean name="TomcatCluster"
       class="org.apache.geronimo.tomcat.cluster.CatalinaClusterGBean">
<attribute name="className">org.apache.catalina.cluster.tcp.SimpleTcpCluster</attribute>
  <attribute name="initParams">
    doClusterLog=true
    clusterLogName=clusterlog
    manager.className=org.apache.catalina.cluster.session.DeltaManager
    manager.expireSessionsOnShutdown=false
    manager.notifyListenersOnReplication=false
    manager.notifySessionListenersOnReplication=false
    manager.sendAllSessions=false
    manager.sendAllSessionsSize=500
    manager.sendAllSessionsWaitTime=20
  </attribute>
  <attribute name="Membership">TomcatMembership</attribute>
  <attribute name="Receiver>TomcatReceiver</attribute>
  <attribute name="Sender>TomcatSender</attribute>
  <attribute
       name="MessageListenerChain>ClusterSessionListener</attribute>
  <attribute name="TomcatValveChain>ReplicationValve</attribute>
  <attribute name="ClusterDeployer>FarmWarDeployer</attribute>
</gbean>

<!-- Membership -->
<gbean name="TomcatMembership"
      class="org.apache.geronimo.tomcat.cluster.MembershipServiceGBean">
<attribute name="className">org.apache.catalina.cluster.mcast.McastService</attribute>
  <attribute name="initParams">
    mcastAddr=228.0.0.4
    mcastBindAddress=127.0.0.1
    mcastClusterDomain=d10
    mcastPort=45564
    mcastFrequency=1000
    mcastDropTime=30000
  </attribute>
</gbean>

<!-- Receiver -->
<gbean name="TomcatReceiver"
      class="org.apache.geronimo.tomcat.cluster.ReceiverGBean">
<attribute name="className">org.apache.catalina.cluster.tcp.ReplicationListener</attribute>
  <attribute name="initParams">
    tcpListenAddress=auto
    tcpListenPort=9015
    tcpSelectorTimeout=100
    tcpThreadCount=6
  </attribute>
</gbean>

<!-- Sender -->
<gbean name="TomcatSender"
      class="org.apache.geronimo.tomcat.cluster.SenderGBean">
<attribute name="className">org.apache.catalina.cluster.tcp.ReplicationTransmitter</attribute>
  <attribute name="initParams">
    replicationMode=fastasyncqueue
    doTransmitterProcessingStats=true
    doProcessingStats=true
    doWaitAckStats=true
    queueTimeWait=true
    queueDoStats=true
    queueCheckLock=true
    ackTimeout=15000
    waitForAck=true
    keepAliveTimeout=80000
    keepAliveMaxRequestCount=-1
  </attribute>
</gbean>

<!-- Valves -->
<gbean name="ReplicationValve"
       class="org.apache.geronimo.tomcat.ValveGBean">
   <attribute
name="className">org.apache.catalina.cluster.tcp.ReplicationValve</attribute>
   <attribute name="initParams">
filter=.*\.gif;.*\.js;.*\.css;.*\.png;.*\.jpeg;.*\.jpg;.*\.htm;.*\.html;.*\.txt;
     primaryIndicator=true
    </attribute>
    <reference name="NextValve">
      <moduleType>J2EEModule</moduleType>
      <name>JvmRouteBinderValve</name>
    </reference>
</gbean>

<gbean name="JvmRouteBinderValve"
       class="org.apache.geronimo.tomcat.ValveGBean">
   <attribute
name="className">org.apache.catalina.cluster.session.JvmRouteBinderValve</attribute>
   <attribute name="initParams">
     enabled=true
   </attribute>
</gbean>

<!-- Listeners -->
<gbean name="ClusterSessionListener"
       class="org.apache.geronimo.tomcat.cluster.MessageListenerGBean">
   <attribute
name="className">org.apache.catalina.cluster.session.ClusterSessionListener</attribute>
   <reference name="NextListener">
      <moduleType>J2EEModule</moduleType>
      <name>JvmRouteSessionIDBinderListener</name>
   </reference>
</gbean>

<gbean name="JvmRouteSessionIDBinderListener"
       class="org.apache.geronimo.tomcat.cluster.MessageListenerGBean">
   <attribute
name="className">org.apache.catalina.cluster.session.JvmRouteSessionIDBinderListener</attribute>
</gbean>

<!-- Deployer -->
<gbean name="FarmWarDeployer"
       class="org.apache.geronimo.tomcat.cluster.FarmWarDeployerGBean">
   <attribute name="tempDir">var/catalina/war-temp</attribute>
   <attribute name="deployDir">var/catalina/war-deploy</attribute>
   <attribute name="watchDir">var/catalina/war-listen</attribute>
   <attribute name="watchEnabled">true</attribute>
   <attribute name="processDeployFrequency">10</attribute>
   <reference name="ServerInfo">
       <module>org/apache/geronimo/System</module>
       <name>ServerInfo</name>
    </reference>
</gbean>

Reply via email to