Wednesday, June 9, 2010

Load Balancing and Clustering Liferay

There are two ways of Clustering Liferay on Tomcat
1. Sticky Session
User request will always goes to same Liferay instance
2. Session Replication
User request can go to any tomcat in cluster and his session is copied on entire cluster




Lets get started for Sticky Session based clustering and load balancing.


Use-Case
Setting up two tomcat Liferay along with apache on same windows machine.


Pre-requirements
1. install Apche 2.x
2. download Liferay5.x and make an extra copy


Steps 1. open httpd.conf from apache_home/conf/ and add these lines at the end



BalancerMember ajp://localhost:8009/ route=tomcatA smax=15 max=50 loadfactor=20
BalancerMember ajp://localhost:8010/ route=tomcatB smax=15 max=50 loadfactor=20




ProxyPass balancer://mycluster/ stickysession=JSESSIONID




SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from localhost



Step 2.


uncomment the following four lines on httpd.conf


LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule status_module modules/mod_status.so


Step 3.


open liferay/tomcat_home_1/conf/server.xml and add jvmRoute="tomcatA" to the following line


Engine name="Catalina" defaultHost="localhost"


so it should look like this
Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatA"


Step 4.


open liferay/tomcat_home_2/conf/server.xml and add jvmRoute="tomcatB" to the following line


Engine name="Catalina" defaultHost="localhost"


so it should look like this
Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatB


also change the following port nos




Server port="8006" shutdown="SHUTDOWN"


Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8444"


Connector port="8010" protocol="AJP/1.3" redirectPort="8444"


Thats It!


start apache, tomcatA, tomcatB and


navigate to http://localhost/
also checkout balancer-manager
http://localhost/balancer-manager


for more configuration and understanding checkout the following link
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html





If your tomcats run on different server make sure you change index directory to some central place (e.g /common-dir/liferay ) i.e resource.repositories.root=/common-dir/liferay in portal-ext.properties


An Important Liferay article

http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/Clustering