软件准备
1.jdk-8u181-windows-x64.exe
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2.httpd-2.4.34-o102o-x64-vc14.zip
https://www.apachehaus.com/cgi-bin/download.plx
3.apache-tomcat-8.5.20
https://tomcat.apache.org/download-80.cgi
4.tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x.zip
https://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/
解压后,可得mod_jk.so
Tomcat集群配置
将apache-tomcat-8.5.20复制成3个,重命名为:
先配置apache-tomcat-8.5.20-7080,conf\server.xml修改4个地方为:
<Server port="7005" shutdown="SHUTDOWN">
<Connector port="7080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="7009" protocol="AJP/1.3" redirectPort="8443" />
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" jvmRoute="tomcat1"/>
同样的,apache-tomcat-8.5.20-8080,conf\server.xml修改4个地方为:
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" jvmRoute="tomcat2"/>
最后,apache-tomcat-8.5.20-9080,conf\server.xml修改4个地方为:
<Server port="9005" shutdown="SHUTDOWN">
<Connector port="9080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" jvmRoute="tomcat3"/>
在apache-tomcat-8.5.20-7080\webapps下,新建文件夹testcluster,然后testcluster下新建WEB-INF,WEB-INF下有个web.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"
metadata-complete="true">
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
<distributable/>
</web-app>
最主要的是加上“< distributable/>”。
在testcluster下新建1个jsp页面index.jsp,用于集群测试,内容如下:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>Cluster App Test</title>
</head>
<body>
<%
System.out.println("SessionID:" + session.getId());
%>
Server Info:
<%
out.println(request.getServerName() + " : " + request.getServerPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>"); // 如果有新的 Session 属性设置
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><br>");
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>
</html>
再将testcluster整个目录分别复制到另外2个tomcat的webapps下,至此,tomcat集群配置完了。
Apache负载均衡配置
1.把解压的mod_jk.so复制到Apache24\modules目录下,
2.在Apache24\conf新建2个文件:mod_jk.conf,workers.properties。
mod_jk.conf内容如下:
#加载mod_jk Module,注意文件名根据实际情况而填
LoadModule jk_module modules/mod_jk.so
#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器
JkMount /* controller
workers.properties内容如下:
#server 列表
worker.list = controller,tomcat1,tomcat2,tomcat3
#========tomcat1========
worker.tomcat1.port=7009
worker.tomcat1.host=127.0.0.1
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1
#========tomcat2========
worker.tomcat2.port=8009
worker.tomcat2.host=127.0.0.1
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1
#========tomcat3========
worker.tomcat3.port=9009
worker.tomcat3.host=127.0.0.1
worker.tomcat3.type=ajp13
worker.tomcat3.lbfactor = 1
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2,tomcat3
worker.controller.sticky_session=false
3.修改Apache24\conf\httpd.conf文件,在最后1行加上,
include conf/mod_jk.conf
即可。
测试
先启动3个tomcat,在启动apache。
apache并发访问压力测试:
CMD模式进入Apache24\bin目录,输入命令:
ab -n 1000 -c 50 http://127.0.0.1/testcluster/index.jsp
参数n - 代表请求的总数量
参数c - 代表并发的请求数