step 1:
download jdkx.x, tomcat 6.0 , apache http server [latest], jmeter [optional]
step2 :
install jdk
install 2 or 3 or n copies of tomcat 6.0 as tomcatA, tomcatB, tomcatC
step3:
open server.xml in tomcatx.x\conf
change tomcatA
connectionTimeout="20000"
redirectPort="8443" />
change tomcatB
connectionTimeout="20000"
redirectPort="8443" />
change tomcatC [ports]
step 4
Add distributed tag in web.xml
Next step to do add distributed tag in web.xml to switching session among the tomcat clustering instanceMake any application, e.g we are making cluster as application folder in webapps
1. TomcatA - > webapps - > cluster -> WEB-INF -> web.xml
2. TomcatB - > webapps - > cluster -> WEB-INF -> web.xml
3. TomcatC - > webapps - > cluster -> WEB-INF -> web.xml
Add
xmlns:xsi="http://www.w3.org/
xsi:schemaLocation="http://
version="2.5">
step 5
Install mod_jk in module
Mod_jk is connector that communicates with apache web server and tomcat. We need to download and copy that connector in module folder of apachehttp://tomcat.apache.org/
Make mod_jk.log file in logs folder otherwise apache will throw error
RENAME MOD_JK.SO OR MOD_JK.[WINDOWS]
server.xml
Include c:/apache-tomcat/conf/auto/
[httpd.conf]
step 6
Edit in httpd.conf
Open apache -> httpd.confOpen in any text editor and add
LoadModule jk_module modules/mod_jk-apache-2.2.4.so
JkWorkersFile "C:\cluster\Apache\conf\ workers.properties"
JkLogFile "logs/mod_jk.log"
JkLogLevel error
JkMount /cluster loadbalancer
JkMount /cluster/* loadbalancer
JkWorkersFile "C:\cluster\Apache\conf\
JkLogFile "logs/mod_jk.log"
JkLogLevel error
JkMount /cluster loadbalancer
JkMount /cluster/* loadbalancer
Worker.properties file
Make a file with name of workers.properties in conf folder. This file tells properties of all tomcat instances. We have to specify all tomcat properties here. Apache will forword request to tomcat through this fileVertical tomcat clustering this file like
workers.tomcat_home=/tomcatA
workers.java_home=$JAVA_HOME
ps=/
worker.list=tomcatA,tomcatB, tomcatC,loadbalancer
worker.tomcatA.port=8119
worker.tomcatA.host=localhost
worker.tomcatA.type=ajp13
worker.tomcatA.lbfactor=1
worker.tomcatB.port=8229
worker.tomcatB.host=localhost
worker.tomcatB.type=ajp13
worker.tomcatB.lbfactor=1
worker.tomcatC.port=8339
worker.tomcatC.host=localhost
worker.tomcatC.type=ajp13
worker.tomcatC.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_ workers=tomcatA,tomcatB, tomcatC
worker.loadbalancer.sticky_ session=1
workers.java_home=$JAVA_HOME
ps=/
worker.list=tomcatA,tomcatB,
worker.tomcatA.port=8119
worker.tomcatA.host=localhost
worker.tomcatA.type=ajp13
worker.tomcatA.lbfactor=1
worker.tomcatB.port=8229
worker.tomcatB.host=localhost
worker.tomcatB.type=ajp13
worker.tomcatB.lbfactor=1
worker.tomcatC.port=8339
worker.tomcatC.host=localhost
worker.tomcatC.type=ajp13
worker.tomcatC.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_
worker.loadbalancer.sticky_
step 7
worker.tomcatC.lbfactor=100
increase and decrease request to this tomcatC instance
Restart apache, tomcatA, tomcatB, tomcatC
Check clustering if apache start properly, It is fine without any errors otherwise check problems,basically mod_jk problems come. So download different mod_jk for your machine. Start all tomcats, tomcatA, tomcatB, and tomcatC. If all tomcats is started this means tomcat is working fine.Open test.jsp on browser and check session id. Check which tomcat on test.jsp is running tomcatB or tomcatC. Close that tomcat, reload test.jsp. Check session id,if session id is same. Then tomcat clustering is working fine.
Test jsp file
Make test.jsp in cluster folder of webappstomcatA
<%
session.setAttribute("a","a");
%>
Test JSP
tomcatBsession.setAttribute("a","a");
%>
TomcatA Machine | |
Session ID : | <%=session.getId()%> |
<%
session.setAttribute("a","a");
%>
Test JSP
TomcatCsession.setAttribute("a","a");
%>
TomcatB Machine | |
Session ID : | <%=session.getId()%> |
<%
session.setAttribute("a","a");
%>
TomcatC Machine | |
Session ID : | <%=session.getId()%> |
step 8
[httpd.conf]
Alias /docs /var/www/html/docs
JkMount /docs loadbalancer
JkMount /docs/* loadbalancer
JkUnMount /docs/*.gif loadbalancer
JkUnMount /docs*.png loadbalancer
or
If the Tomcat Host appBase (webapps) directory is accessible by the Apache web server, Apache can be configured to serve web application context directory static files instead of passing the request to Tomcat.
Caution: For security reasons is is strongly recommended that JkMount is used to pass all requests to Tomcat by default and JkUnMount is used to explicitly exclude static content to be served by httpd. It should also be noted that content served by httpd will bypass any security constraints defined in the application's web.xml.
Use Apache's Alias directive to map a single web application context directory into Apache's document space for a VirtualHost:
# Static files in the examples webapp are served by apache Alias /examples /vat/tomcat3/webapps/examples # All requests go to worker1 by default JkMount /* worker1 # Serve html, jpg and gif using httpd JkUnMount /*.html worker1 JkUnMount /*.jpg worker1 JkUnMount /*.gif worker1
links
http://www.easywayserver.com/
http://tomcat.apache.org/
No comments:
Post a Comment