Project mod_cluster is an intelligent load-balancer. It uses a communication channel to forward requests from a reverse proxy server to one of a set of application server nodes. Unlike mod_jk and mod_proxy, mod_cluster leverages an additional connection between the application server nodes and the reverse proxy to transmit server-side load-balance factors and lifecycle events back to the proxy. This additional feedback channel allows mod_cluster to offer a level of intelligence and granularity not found in other load-balancing solutions. There are currently two reverse proxy implementations: a native [https://httpd.apache.org/](Apache HTTP Server) implementation and a pure Java http://undertow.io/-based implementation.
Project mod_cluster boasts the following advantages over other httpd-based load-balancers:
- Dynamic configuration of httpd workers
- Server-side load balance factor calculation
- Fine grained web-app lifecycle control
- AJP is optional
These versions already ship with bundled mod_cluster. It is configured via mod_cluster subsystem.
This is the first version of AS that bundled mod_cluster, the configuration is located in
/server/<profile>/deploy/mod_cluster.sar/META-INF
directory.
Distribution archives are provided for each Tomcat version.
- Obtain the distribution archive corresponding to the intended Tomcat version by either downloading from the project
website or if building from source located in
dist/target/
directory. - Download and unzip or untar the distribution archive and navigate to the extracted directory.
- Copy the
lib/
directory to the Tomcat installation directory adding jars to itslib/
directory. If upgrading from a different version, it is necessary to remove all jars copied previously. - Modify
server.xml
within theconf
directory and add the mod_cluster listener as documented here. The minimal listener configuration is as follows:
<Listener className="org.jboss.modcluster.container.tomcat.ModClusterListener" connectorPort="8009"/>
Project is split up into multiple modules:
core (contains the implementation of container-independent core mod_cluster concepts)
container
spi (SPI classes for container integrations, has no dependencies on a specific web container)
tomcat (base for Tomcat container implementations, based on Tomcat 7.0)
tomcat8 (Tomcat 8.0 container implementation)
tomcat85 (Tomcat 8.5 and 9.0 milestone container implementation)
load-spi (SPI classes for load metric computation)
demo
client
server
Sources for the mod_cluster project are located on GitHub:
https://github.com/modcluster/mod_cluster
When building from source, first ensure that Maven version 3.2.5 or newer (run mvn -version
) and JDK 7.0 or newer
(run java -version
) are installed. The following command builds modules for all containers:
mvn install -Pdist
Distribution files for Tomcat and a demo application will be built in the dist/target/
directory.
Project mod_cluster uses JBoss Jira issue tracker under MODCLUSTER project:
https://issues.jboss.org/browse/MODCLUSTER
This software is distributed under the terms of the GNU Lesser General Public License (see LICENSE.txt).