---
title: "Load Balancing Alfresco with Apache · Appnovation"
url: "https://www.appnovation.com/insights/load-balancing-alfresco-apache"
description: "Scale your Alfresco content repository by load balancing Tomcat instances behind Apache. A step-by-step configuration guide."
---

Article

# Load Balancing Alfresco with Apache

[![](https://cdn.sanity.io/images/ey850001/production/98d8234a5da96c671f4ac5d001b024b5e03bee2b-68x68.png?w=68&auto=format) jmacinnes jmacinnes Director of Technology](/people/jmacinnes-jmacinnes.md) Oct 07, 2011  
 2 min read 

![Appnovation Blog Default Header](https://cdn.sanity.io/images/ey850001/production/9efe1c26d9584ecfb3dfef5a63e698bf4567d305-1440x600.jpg?w=1400&auto=format) 

Alfresco is an Enterprise ready Content Management and Repository system that can support the Document needs of pretty much any organization. A common way of running Alfresco (in fact the default way) is via the Apache Tomcat server. Tomcat has very good load balancing support using an Apache module called mod\_jk. This module, in conjunction with Tomcat, supports full system fail-over including failing over session data to an active Tomcat instance. You can use mod\_jk with Alfresco to build a very reliable and robust ECM installation. Here are steps to get Alfresco load balancing working under Apache. The instructions here assume a RHEL/CentOS flavour of Linux, but should be applicable to other flavours.

1\. Install Apache`sudo yum install httpd`

2\. Install mod\_jk from the RPM which can be found at: http://greenmice.info/en/comment/reply/152?quote=1. Mod\_jk is an Apache module that provides a number of services to Apache for interacting with a Tomcat server.

`sudo rpm -i mod_jk-ap20-1.2.31-2.x86_64`

3\. Create a "workers.properties" file and store it in/etc/httpd/conf

`# Define 2 real worker using ajp13 worker.list=worker1 worker2 router worker.router.type=lb worker.router.balance_workers=worker1, worker2 worker.router.sticky_session=True # Set properties for worker1 (ajp13) # Server 1 worker.worker1.type=ajp13 worker.worker1.host= worker.worker1.port=8009 worker.worker1.lbfactor=1 # Server 2 worker.worker2.type=ajp13 worker.worker2.host= worker.worker2.port=8009 worker.worker2.lbfactor=1`

4\. Modify httpd.conf and add the following to the end of the file to setup mod\_jk:

`LoadModule jk_module modules/mod_jk.so JkWorkersFile conf/workers.properties JkLogFile "logs/mod_jk.log" JkLogLevel info JkLogStampFormat "[%a %b %d %H:%M:%S %Y]" JkRequestLogFormat "%w %V %T" JkMount /* router`

5\. Restart Apache

6\. Modify Alfresco's server.xml located in /tomcat/conf/server.xml The value "jvmRoute=worker1" must contain the appropriate name of the worker on each of the Alfresco installs and must match the name values located in the workers.properties file created in step 3 above.

7\. Modify alfresco's and share's web.xml files on each node to include the directive. These files are located at:`/tomcat/webapps/share/WEB-INF/web.xml /tomcat/webapps/alfresco/WEB-INF/web.xml` Should look like this:`Alfresco Project Slingshot Alfresco Project Slingshot application`

8\. Restart Alfresco

9\. You should now be able to access: http:///share which will be load balanced over the 2 nodes with full session failover.

[![](https://cdn.sanity.io/images/ey850001/production/98d8234a5da96c671f4ac5d001b024b5e03bee2b-68x68.png?w=68&auto=format) jmacinnes jmacinnes Director of Technology · Appnovation](/people/jmacinnes-jmacinnes.md) 

## Keep reading

[![What is Sovereign AI](https://cdn.sanity.io/images/ey850001/production/a5889abdd5e80376912546622e046e3fbef234b4-2496x1664.png?w=640&auto=format)](/insights/what-is-open-source-sovereign-ai.md)

 Article · 7 min AI 

### [What Is Open Source, Sovereign AI?](/insights/what-is-open-source-sovereign-ai.md)

Every company is encouraging more AI, and almost every AI bill is climbing. Sovereign AI is about two kinds of control: over your data and over your costs. Here's why open source sits at its foundation.

[Iain MacNeil](/people/iain-macneil.md) Article 

[![AI-first experience design](https://cdn.sanity.io/images/ey850001/production/8bbc2418e87924ef10f36115478a2e10d5bed95e-1584x624.jpg?w=640&auto=format)](/insights/how-build-ai-first-experience-without-throwing-out-everything-youve-already-built.md)

 Article · 6 min AI Sep 10, 2026 

### [How to Build an AI-First Experience Without Throwing Out Everything You've Already Built](/insights/how-build-ai-first-experience-without-throwing-out-everything-youve-already-built.md)

Users now expect a direct answer, not a list of links to click through. Here's how organizations can layer an AI-First experience onto their existing website or app, in weeks rather than years.

[Andrew Douglas](/people/andrew-douglas.md) Article 

[![What Becomes Possible When AI Can Read All the Data](https://cdn.sanity.io/images/ey850001/production/c28ab0bd26753421ee42937e13adc7a7f19b47f0-1296x510.jpg?w=640&auto=format)](/insights/what-becomes-possible-when-ai-can-read-all-data.md)

 Article · 4 min AI Sep 09, 2026 

### [What Becomes Possible When AI Can Read All the Data](/insights/what-becomes-possible-when-ai-can-read-all-data.md)

Most of the world's data has never been analyzed, only sampled. AI changes that. How AI-ready data platforms unlock questions no one could ask before.

[Appnovation](/people/appnovation.md) Article 

## Get the thinking,  
*before everyone else.*

One considered email a month. New essays, field notes from live engagements, and the occasional strong opinion. No noise.
