My task is to loadbalance web traffic among Apache Tomcat server instances via mod_jk.
I already have configured the load-balancing, but It does not keep the same session for same request, it redirects to another Tomcat server instance.
In your workers.properties set the sticky_session option to 1:
worker.list=balancer,lbstats
#node1
worker.node1.type=ajp13
worker.node1.host=127.0.0.1
worker.node1.port=8009
worker.node1.lbfactor=10
#node2
...
#lb config
worker.balancer.type=lb
worker.balancer.sticky_session=1
worker.balancer.balance_workers=node1,node2
#lb status information (optional)
worker.lbstats.type=status
Update
One reason could be that the session gets lost during requests. Make sure you did set the jvmRoute attribute in the engine element in server.xml:
<Engine jvmRoute="node1" defaultHost="localhost" name="Catalina">
The name must match the nodes name from workers.properites (see above). This name will be appended to your session ids. Make sure it does not change during requests.
Furthermore define a status worker as shown above, and map it to a url in your httpd.conf file:
JkMount /modjkstatus lbstats
After that access http://yourdomain.xyz/modjkstatus to see further cluster and lb information.