前言:
环境:
windows7 64、JDK1.8、Apache2.4、Tomcat8.0 JK
下载地址:
JDK1.8 Apache2.4 Tomcat8.0JK jdk的事儿我就不说了,真不是这儿的重点,下载完后的截图如下:
安装步骤
1. 安装配置JDK
2. 安装配置Apache
3. 安装配置Tomcat
4. 启动服务并测试
开始Demo测试步骤:
1、解压 Apache2.4
将下载后的安装包解压到提前准备好的安装路径,如我的demo安装测试路径为: “D:\apache_tomcat_jk\anzhuangdi”解压后的结构如图:
2、安装Apache2.4
如果已经安装过 Apache的,可以先卸载再安装,运行cmd命令,切换到Apache24的安装路径下,执行如下命令:
卸载:
httpd -k uninstall -n Apache2.4
安装:
httpd -k install -n Apache2.4
截图如下:
惊现bug?:可以发现 安装过程提示 在httpd.conf 的第 39行出现异常,因为Apache的地址我们还没有配置,但这不要紧,完成步骤3就好啦!
安装完成后可以看到窗口真确打印 service issuccessfully installed ,也可以去 右键我的电脑,管理,服务,可以看到多了一个名为Apache2.4的服务。
3,配置httpd.conf
打开Apache24\conf下的httpd.conf主配置文件进行配置
Define SRVROOT "/Apache24"
ServerRoot "${SRVROOT}"
修改为:
Define SRVROOT "D:\apache_tomcat_jk\anzhuangdi\Apache24"
ServerRoot "${SRVROOT}"
httpd.conf最后一行加入
Include conf/mod_jk.conf
4, 配置mod_jk.conf 在 Apache24\conf目录下建立mod_jk.conf文件,并打开,将其配置为以下代码。
#加载mod_jk Module
LoadModule jk_module modules/mod_jk.so
#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器
JkMount /*.do controller
JkMount /*WEB-INF controller
JkMount /*j_spring_security_check controller
JkMount /*.action controller
JkMount /servlet/* controller
JkMount /*.jsp controller
JkMount /*.do controller
JkMount /*.action controller
JkMount /* controller
5、
配置workers.properties
在Apache24\conf目录下建立workers.properties文件,将其配置为以下代码。
worker.list =controller,tomcat1,tomcat2 #server 列表
#========tomcat1========
worker.tomcat1.port=18009 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1 #server的加权比重,值越高,分得的请求越多
#========tomcat2========
worker.tomcat2.port=28009
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2 #指定分担请求的tomcat
worker.controller.sticky_session=false #回话是否有粘性,false表示无粘性,同一个回话的请求会到不同的tomcat中处理
worker.controller.sticky_session_force=false #当一个节点蹦了,如果设值为true,那么服务器返回500错误给客户端,如果设值为false,则转发给其他的tomcat,但是会丢失回话信息
如需增加Tomcat,在workers.properties中增加即可
6、添加JK
将tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x.zip解压,并找到其中mod_jf.so文件,将其放至Apache24\modules文件夹中
7、 解压 tomcat
7.1)、 将apache-tomcat-8.0.49.zip 解压 并分别命名为 apache-tomcat-8.0.49-1 和 apache-tomcat-8.0.49-2
7.2)、分别配置conf/server.xml
1.修改shutdown端口,tomcat1改为18005,tomcat2改为28015
tomcat1:
<Server port="18005" shutdown="SHUTDOWN">
tomcat2:
<Server port="28005" shutdown="SHUTDOWN">
2.分别修改默认 8080 请求端口为 18080,和 28080
tomcat1:
<Connector port="18080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
tomcat2:
<Connector port="28080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
3.分别修改AJP端口号,同workers.properties中配置的port,tomcat1改为18009,tomcat2改为28009
tomcat1:
<Connector port="18009" protocol="AJP/1.3" redirectPort="8443" />
tomcat2:
<Connector port="28009" protocol="AJP/1.3" redirectPort="8443" />
4.分别修改Engine,tomcat1在末尾加 jvmRoute=”tomcat1”,tomcat2在末尾加 jvmRoute=”tomcat2”,与workers.properties配置的server名称对应
tomcat1:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
tomcat2:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
5.分别将以下注释掉的代码打开
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@page import="java.util.*"%>
<html>
<head>
<title>cluster test - share session</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
</head>
<body>
<%
String sessionid = session.getId();
out.println("tomcat1------>当前sessionid = " + sessionid);
System.out.println("当前sessionid = " + sessionid);
// 如果有新的 Session 属性设置
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.println("<b>tomcat1------>Session 列表</b><br>");
System.out.println("============================");
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="test.jsp" id="form_add" method="post">
Key:<input id="dataName" name="dataName" type="text"/>
Value:<input id="dataValue" name="dataValue" type="text"/>
<input id="subBtn" name="subBtn" type="submit" value="提交" />
</form>
</body>
</html>
修改 标红部分,用于区分不同的tomcat下文件
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<distributable />
</web-app>
9 ,分别启动tomcat1 和tomcat2 在浏览器尝试访问 如图:
11、在浏览器中 方法 http://localhost/test/test.jps 多次刷新,从页面打印信息可以看到 apache对请求进行了分发处理,分配到了不同的comcat上
12,至此一个简单的 apache+tomcat+jk的负载 demo就测试完成了。附上 apache2.4+tomcat8.0+jk的完整安装包下载