Tomcat Cluster"
From Documentation
m (→zk.xml) |
m (correct highlight (via JWB)) |
||
Line 11: | Line 11: | ||
== Sample of server.xml == | == Sample of server.xml == | ||
− | <source lang="xml" | + | <source lang="xml" highlight="14"> |
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6"> | <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6"> | ||
<Manager className="org.apache.catalina.ha.session.DeltaManager" | <Manager className="org.apache.catalina.ha.session.DeltaManager" | ||
Line 53: | Line 53: | ||
== web.xml == | == web.xml == | ||
− | *Add the < | + | *Add the <code>distributable</code> element in <code>WEB-INF/web.xml</code>. |
− | <source lang="xml" | + | <source lang="xml" highlight="7"> |
<?xml version="1.0"?> | <?xml version="1.0"?> | ||
<web-app xmlns="http://java.sun.com/xml/ns/javaee" | <web-app xmlns="http://java.sun.com/xml/ns/javaee" | ||
Line 70: | Line 70: | ||
*Line 7, if there are more than three Tomcat cluster nodes, or you are using different cluster-manager such as [https://hazelcast.com/ Hazelcast] and other solutions instead, you also need to add the cluster session patch settings. | *Line 7, if there are more than three Tomcat cluster nodes, or you are using different cluster-manager such as [https://hazelcast.com/ Hazelcast] and other solutions instead, you also need to add the cluster session patch settings. | ||
For example, | For example, | ||
− | <source lang="xml" | + | <source lang="xml" highlight="3, 7"> |
<zk> | <zk> | ||
<system-config> | <system-config> |
Revision as of 12:40, 19 January 2022
Setup Tomcat Cluster environment
- Please refer to Tomcat Document to set up cluster environment.
- For configuring with Apache http server, refer to
Using more than 3 nodes with ZK
- Use DeltaManager instead of BackupManager, please refer to cluster-manager for more information.
Sample of server.xml
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="5001"
selectorTimeout="100"
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.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
Note, if there are multiple tomcat nodes on one machine, the Receiver port (line 14) should be different for each of them.
Additional setting in ZK project
You have to configure the following settings to make ZK project work in a tomcat cluster environment.
web.xml
- Add the
distributable
element inWEB-INF/web.xml
.
<?xml version="1.0"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<distributable/>
</web-app>
zk.xml
- Line 3, turn on Serializable UI Factory for ZK, please refer to this documentation.
- Line 7, if there are more than three Tomcat cluster nodes, or you are using different cluster-manager such as Hazelcast and other solutions instead, you also need to add the cluster session patch settings.
For example,
<zk>
<system-config>
<ui-factory-class>org.zkoss.zk.ui.http.SerializableUiFactory</ui-factory-class>
</system-config>
<!-- clustering environment, since ZK 5.0.8-->
<listener>
<listener-class>org.zkoss.zkplus.cluster.ClusterSessionPatch</listener-class>
</listener>
</zk>
Version History