首页 > 代码库 > tomcat集群
tomcat集群
通过Apache和JK插件实现tomcat负载均衡的集群。
1、安装HTTP服务器Apache。下载双击安装httpd-2.2.25-win32-x86-openssl-0.9.8y.msi,安装后访问localhost即可看到安装成功。
2、下载mod_jk.so(tomcat的插件提供和Apache等HTTP服务的链接)放到Apache安装目录的modules文件夹下。
3、修改conf下的httpd.conf文件,加上一下内容,
#加载jk模块
LoadModule jk_module modules/mod_jk.so
#设置jk的配置文件
JkWorkersFile conf/workers.properties
#配置JK的日志输出文件
JkLogFile logs/mod_jk.log
JkLogLevel debug
#配置负载均衡器处理那些内容
JkMount /*.do loadbalancer
JkMount /*.jsp loadbalancer
4、在conf目录下新建JK的工作配置文件workers.properties内容如下:
#server
worker.list = controller
#========tomcat1========
worker.tomcat1.port=11009
worker.tomcat1.host=localhost(如果不是同一台主机,写相应iP地址)
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1
#========tomcat2========
worker.tomcat2.port=12009
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=false
worker.controller.sticky_session_force=1
#worker.controller.sticky_session=1
5、安装tomcat,并复制成两份,修改tomcat配置如下。
1)打开AJP协议配置的注解,修改tomcat1和tomcat2端口与tomcat标示与workers.properties中的配置一致
<Connector port="11009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker1">
2)打开tomcat集群配置的注释:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
3)修改HTTP协议链接的端口和服务的端口,保证两个tomcat的端口不一致否侧端口占用无法启动
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Server port="9005" shutdown="SHUTDOWN">
4)修改tomcat下centext.xml配置文件中的属性:
<Context distributable="true">
6、配置成功进行测试。
在tomcat 的\webapps\ROOT下放入test.jsp文件内容如下
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>");
// 如果有新的 Session 属性设置
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = http://www.mamicode.com/request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.println("<b>Session 列表</b><br>");
System.out.println("============================");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = http://www.mamicode.com/session.getAttribute(name).toString();
out.println( name + " = " + value+"<br>");
System.out.println( name + " = " + value);
}
%>
<form action="test.jsp" method="POST">
名称:<input type=text size=20 name="dataName">
<br>
值:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>
7、分别启动两个tomcat,测试是否成功启动。访问localhost/test.jsp
可以看到如下效果:
刷新页面发现访问的tomcat变成了worker1但是session的id没有变,说明两个tomcat完成了session的复制。
还可以添加session的值,发现两个tomcat的session的值得到了共享。配置成功。
tomcat集群