Easily implement Apache,tomcat clustering and load balancing 2006-11-18 12:15
Author: Rodeix are ldj_work#126.com, reproduced please maintain integrity
0, environmental description
apache:apache_2.0.55 A
tomcat:apache-tomcat-5.5.17 (Zip version) of 2
MOD_JK:: mod_jk-apache-2.0.55.so One
First part: Load Balancing
Load balancing, that is, Apache to the customer request balanced distribution to tomcat1,tomcat2 .... To deal with
1. Installing Apche,tomcat
http://httpd.apache.org/Download Apache 2.0.55
http://tomcat.apache.org/download-55.cgi Download tomcat5.5 zip version (unzip, green version)
http://apache.justdn.org/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.15/download MOD_JK, note and Apache version match
According to the JDK, my path is: e:/ide/apache/apache2
Extract two copies of Tomcat with the path E:/IDE/TOMCAT1,E:/IDE/TOMCAT2
Download MOD_JK
2. Modify the Apache configuration file http.conf
Found in the Conf directory under the Apache installation directory http.conf
Add the following sentence to the end of the document.
Include "e:/ide/apache/apache2/conf/mod_jk.conf"2. http.conf the new mod_jk.conf file in the same directory as the following#加载mod_jk Module
LoadModule jk_module modules/mod_jk-apache-2.0.55.so #指定 workers.properties file path
Jkworkersfile conf/workers.properties #指定那些请求交给tomcat处理, "Controller" is the load distribution controller specified in Workers.propertise jkmount/*.jsp Controller3. Create a new workers.properties file in the http.conf directory with the following contentworker.list = controller,tomcat1,tomcat2 #server list #========tomcat1======== worker.tomcat1.port=8009 #ajp13 port number, Under Tomcat server.xml configuration, default 8009
Worker.tomcat1.host=localhost #tomcat的主机地址, if not for this machine, please fill in the IP address
Worker.tomcat1.type=ajp13
Worker.tomcat1.lbfactor = 1 #server的加权比重, the higher the value, the more requests are #========tomcat2======== worker.tomcat2.port=9009 #ajp13 port number, Under Tomcat server.xml configuration, default 8009
Worker.tomcat2.host=localhost #tomcat的主机地址, if not for this machine, please fill in the IP address
Worker.tomcat2.type=ajp13
Worker.tomcat2.lbfactor = 1 #server的加权比重, the higher the value, the more requests to be divided
#========controller, Load Balancer controller ========
Worker.controller.type=lb
WORKER.CONTROLLER.BALANCED_WORKERS=TOMCAT1,TOMCAT2 #指定分担请求的tomcat
Worker.controller.sticky_session=14. Modify the Tomcat configuration file Server.xmlIf you install Tomcat,tomcat on a different PC with a number of installs, you may not have to modify the Tomcat profile I am here to install two Tomcat on the same computer, so you need to change one of the settings to open tomcat2/conf/ Server.xml file5. Write a test JSPSet up a directory test. Create a new test.jsp inside, content is <%
System.out.println ("===========================");
%>
Put the test under Tomcat1,tomcat2 's WebApps.6. Start the APACHE,TOMCAT1,TOMCAT2 and testThrough http://localhost/test/test.jsp access, view the Tomcat1 window, you can see the print line "==========" and then refresh again, TOMCAT2 also printed a bar, and then refresh, you can see the request will be TOMCAT1, TOMCAT2 takes turns to achieve load balancingPart Two, configuring the clusterOnly configure load balancing is not enough, but also to copy the session, that is, any one of the Tomcat added session is to be replicated to other Tomcat, the cluster of Tomcat has the same session1. Modify TOMCAT1, Tomcat2 's Server.xml, delete the configuration of the cluster in the comment, and change the TOMCAT2 4001 port to 4002, to avoid conflict with Tomcat, of course, if it is two computers, do not change the port, remove the comment symbol can be 2. Modify Test ProjectModify test.jsp, the content is as follows <%@ page contenttype= "text/html; CHARSET=GBK "%>
<%@ page import= "java.util.*"%>
<body>
Server Info:
<%
Out.println (REQUEST.GETLOCALADDR () + ":" + request.getlocalport () + "<br>");%>
<%
Out.println ("<br> ID" + session.getid () + "<br>"); If there is a new Session property set
String dataname = Request.getparameter ("Dataname");
if (dataname! = null && dataname.length () > 0) {
String DataValue = Request.getparameter ("DataValue");
Session.setattribute (Dataname, DataValue);
} out.print ("<b>session list </b>"); Enumeration E = Session.getattributenames ();
while (E.hasmoreelements ()) {
String name = (string) e.nextelement ();
String value = Session.getattribute (name). toString ();
OUT.PRINTLN (name + "=" + value+ "<br>");
SYSTEM.OUT.PRINTLN (name + "=" + value);
}
%>
<form action= "index.jsp" method= "POST" >
Name: <input type=text size=20 name= "Dataname" >
<br>
Value: <input type=text size=20 name= "DataValue" >
<br>
<input type=submit>
</form>
</body>
<display-name>TomcatDemo</display-name>
<distributable/>
</web-app> Note: Add Web. XML to your app<distributable/>OK, tell the test copy to Tomcat1,tomcat2 WebApps, restart Apache,tomcat1,tomcat2, enter the URL http://localhost/test/test.jsp a new name called Xiaoluo, the value of Cdut session, submit a query, a new IE window, and then submit the query, as shown, two Tomcat is load balanced, and session synchronization