资源描述
Apache+Tomcat集群和负载均衡Session共用配置步骤
Miaozx 2014-08-09
本次是window系统环境下做的Tomcat集群。
环境搭建:
本次环境用到的软件有:
Apache(httpd-2.0.65-win32-x86-no_ssl.msi)
Tomcat(apache-tomcat-8.0.9-windows-x64.zip)
JK(tomcat-connectors-1.2.40-windows-i386-httpd-2.0.x.zip)
JDK1.7
安装过程:
Apache 是http服务器。利用Apache进行负载均衡,就是利用apache将客户请求均衡的分给tomcat1,tomcat2....去处理。
Apache默认安装就可以,安装过程中可能遇到一下情况,本地测试填写随意,参照
安装成功验证:
浏览器输入:http://localhost/,页面显示“您能看见这个页面,说明Apache web server 已经安装成功”。
Tomcat 免安装解压即可。
配置过程:
1、 修改httpd.conf文件
我的Apache安装目录为:D:\Program Files (x86)\Apache Group\Apache2\conf
httpd.conf在conf文件夹下。在httpd.conf的最后一行追加一句话。
2、 创建mod_jk.conf文件
在conf文件夹下新建文件mod_jk.conf ,编辑如图:
请求不唯一, JkMount /*.* controller
3、 添加JK
将下载的mod_jk-1.2.40-httpd-2.0.x.so文件移动到D:\Program Files (x86)\Apache Group\Apache2\modules文件夹下。
注意文件名要与mod_jk.conf文件中配置的文件名一致。
4、 创建workers.properties
在conf文件夹下新建文件workers.properties,编辑如图:
5、 配置tomcat
我的tomcat安装在D:\Program Files\下。分别为tomcat1、tomcat2、tomcat3
修正tomcat下server.xml文件。
Tomcat1:
Tomcat2:
Tomcat3:
6、 测试
1.新建文件夹test,文件夹下新建test.jsp文件。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<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 = 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 = 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>
2.test文件夹下新建文件夹WEB-INF,并新建web.xml文件
<web-app xmlns=" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" version="2.4">
<display-name>TomcatDemo</display-name>
<distributable/>
</web-app>
3.将test文件夹分别复制每个tomcat的webapps下。
4.启动apache服务和tomcat服务。
浏览器输入:http://localhost/test/test.jsp
刷新发现
将其中一个tomcat服务器重启后发现,页面刷新并没显示出这个tomcat被使用。重新开启一个浏览器发现该tomcat被重新使用了。原因是当前session发现停掉的tomcat不可用,以后对于该session不会考虑该tomcat,而新session发现可用会继续使用。
以下是我在配置过程中出现的错误及解决方法。
问题一:各tomcat中server.xml文件端口已经修正,但是开启服务还是显示默认端口。
原因:机器之前已经存在不同版本的tomcat,并且为其配置过环境变量。导致开启服务干扰。解决将原有的tomcat删除,并删除环境变量。重启各tomcat发现问题解决。
问题二:点击tomcat/bin/下的startup.bat启动服务,发现控制台窗口一闪而过,Could not find the class:org.apache.catalina.starpup.Bootstrap.。
原因:我说使用的tomcat是tomcat-8.0.9,通过查看tomcat下的RUNNING.txt文件,恍然大悟,Running With JRE 7 Or Later。我的jdk版本低了。重新安装jdk1.7问题解决。
问题三:Apache服务开启失败,错误信息Could load D:\Program Files (x86)\Apache Group\Apache2\modules\mod_jk_1.2.40-httpd-2.4.x.so
原因:JK选择的版本问题,我使用的apache是httpd-2.0.65而我用的JK是tomcat-connectors-1.2.39-windows-x86_64-httpd-2.4.x.zip。重新下载tomcat-connectors-1.2.40-windows-i386-httpd-2.0.x.zip,将mod_jk.so复制到modules文件夹下,并修改配置文件名称,问题解决。
问题四:页面输入URL报500错误。
原因:通过查看安装目录D:\Program Files (x86)\Apache Group\Apache2\logs文件下的mod_jk.log文件,发现显示[Sat Aug 09 13:55:04.703 2014] [4556:6200] [info] jk_handler::mod_jk.c (2814): Could not find a worker for worker name=controller,原因workers.properties文件中少加入worker.list=controller 这句话。
展开阅读全文