Liferay
Portal clustering using Apache Load Balancer
Load balancing
is one of the most popular in the world due to its impressive ease-of-use. Load
balancing is techniques to distributed load on multiple-system. The load-balancing
process is completely transparent to the end user. It’s configured optimally
for a multiple server environment. If one server isn’t sufficient to serve the high
traffic needs of your site, Liferay scales to the size you need.
Simply add
load balancing to your current multiple tomcat server configuration in order to
achieve high availability and build your own web cluster without burning your
entire hosting budget. Load balancing can be implemented quickly and easily as
an add-on to your current server solution to share the load between your web
servers, using a simple script to replicate the data on the server.
Features of the load balancer:
·
Intercepts network-based traffic (such as web traffic)
destined for a site.
·
Splits the traffic into individual requests and
decides which servers receive individual requests
·
Maintains a watch on the available servers, ensuring
that they are responding to traffic. If they are not, they are taken out of
rotation.
·
Provides redundancy by employing more than one unit in
a fail-over scenario
·
Offers content-aware distribution, by doing things
such as reading URLS, intercepting cookies and XML parsing.
Benefits of the load balancer:
·
Flexibility:
§ Load balancing
allows the addition and removal of servers to a site at any time, and the
effect is immediate. Among other advantages, this allows for the maintenance of
any machine, even during peak hours with little or no impact to the site. A
load balancer can also intelligently direct traffic using cookies, URL parsing,
static and dynamic algorithms, and much more.
·
High Availability:
§ Load
balancer can check the status of the available servers, take any non-responding
servers out of the rotation, and put them in rotation when they are functioning
again. This is automatic, requiring no intervention by an administrator. Also,
the load balancers themselves usually come in a redundant configuration,
employing more than one unit in case any one unit fails.
·
Scalability:
§ Since load
balancer distributes load among many servers, all that is needed to increase
the serving power of a site is to add more servers. This can be very
economical, since many small- to medium-sized servers can be much less
expensive than a few high-end servers. Also, when site load increases, servers
can be brought up immediately to handle the increase in traffic. Load balancers
started out as PC-based devices, and many still are, but now load balancing
functions have found their way into switches and routers as well.
Liferay
Load Balancing
As we know that load balancing is a technique to distribute
workload across resources. It is nothing but a high-availability cluster.
In Liferay Portal’s case, we are load balancing the volume of
requests across multiple app servers, which may or may not be on physically separate
hardware. Initially this may seem sufficient, until you realize some of the components
that portal uses.
Use case: Setting up
two Liferay tomcat instance which points to the same database along with Apache
server on same windows machine
Pre-requisite:
·
Install Apache 2.2 or latest stable version from here.
·
Download Liferay 6.1 CE version from here.
·
Install MySQL
Step 1: Configure Apache Server
· Open httpd.conf from Apache_Home/conf folder and add the following lines at the end of the file
<Proxy
balancer://mycluster>
BalancerMember ajp://localhost:8010/
route=tomcatA smax=15 max=50 loadfactor=20
BalancerMember ajp://localhost:8011/
route=tomcatB smax=15 max=50 loadfactor=20
</Proxy>
<Location / >
ProxyPass balancer://mycluster/
stickysession=JSESSIONID
</Location>
<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from localhost
</Location>
·
Uncomment the following lines in httpd.conf file
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
proxy_connect_module modules/mod_proxy_connect.so
LoadModule
proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule
proxy_http_module modules/mod_proxy_http.so
LoadModule
status_module modules/mod_status.so
Step2:
Configure Database
· It’s assumed that you already have installed MySQL on your machine. Then go to your mysql command prompt and create a new database with the any name that you want.
create database liferay_loadbalancer;
Step3: Configure Liferay instance
·
It’s assumed that you created two Liferay instance
under one main folder named as “Liferay_LAB” and give the first instance folder
name as “liferay-portal-6.1.0-ce-ga1” and another instance folder name as “liferay-portal-6.1.0-ce-ga2”.
·
Create a portal-ext.properties file with following
properties
# MySQL
jdbc.default.driverClassName=com.mysql.jdbc.Driver
jdbc.default.url=jdbc:mysql://localhost/liferay_loadbalancer?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
jdbc.default.username=root
jdbc.default.password=root
And put it under following paths
liferay-portal-6.1.0-ce-ga1/tomcat-7.0.23/webapps/ROOT/WEB-INF/classes
liferay-portal-6.1.0-ce-ga2/tomcat-7.0.23/webapps/ROOT/WEB-INF/classes
·
Open liferay-portal-6.1.0-ce-ga1/tomcat-7.0.23/conf/server.xml
and apply following changes
§ Change the
server port to 8006
<Server port="8006"
shutdown="SHUTDOWN">
§ Change the
connector port to 8081 and redirectPort to 8444
<Connector port="8081"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8444" URIEncoding="UTF-8" />
§ Change the
AJP connector port to 8010 and redirectPort to 8444. Make sure that URIEncoding
must match to "UTF-8"
<Connector port="8010"
protocol="AJP/1.3" redirectPort="8444"
URIEncoding="UTF-8" />
§ add
jvmRoute="tomcatA" to following line
<Engine name="Catalina"
defaultHost="localhost" jvmRoute="tomcatA" >
§ Uncomment
the following line
<Cluster
className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
·
Open liferay-portal-6.1.0-ce-ga2/tomcat-7.0.23/conf/server.xml
and apply following changes
§ Change the
server port to 8007
<Server port="8007"
shutdown="SHUTDOWN">
§ Change the
connector port to 8082 and redirectPort to 8445
<Connector port="8082"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8445"
URIEncoding="UTF-8" />
§ Change the
AJP connector port to 8011 and redirectPort to 8445. Make sure that URIEncoding
must match to "UTF-8"
<Connector port="8011" protocol="AJP/1.3"
redirectPort="8445" URIEncoding="UTF-8" />
§ add
jvmRoute="tomcatB" to following line
<Engine name="Catalina" defaultHost="localhost"
jvmRoute="tomcatB" >
§ Uncomment
the following line
<Cluster
className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
Congratulation! It's done.
Now start apache, tomcat A and tomcat B server.
Once all servers started, go to browser and hit http://localhost/. It will load any one of the
Liferay instance page (http://localhost:8081/)
or (http://localhost:8082/).
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.