本次配置使用以下软件:
JDK:jdk1.8.0_151
Tomcat:apache-tomcat-8.5.29
Apache server:Apache_2.2.2-win32-x86-no_ssl.msi
Tomcat connector:Tomcat-connectors-1.2.40-windows-i386-httpd-2.2.x.zip
一、下载及安装
1、JDK下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html
JDK安装:一路回车,安装完毕。配置环境变量CLASSPATH和JAVA_HOME。
将下载页面拉到底下,找到java SE仓库,点击download,找到自己想要的版本下载。
2、Tomcat下载:http://apache.org/。进入官网,Project-->Tomcat-->Tomcat 8。下载.zip压缩包格式或者可以下载.exe安装格式。若需要别的版本,点击Archives进入Tomcat仓库进行下载。本次下载zip格式,直接解压到F盘。
3、Apache server下载:http://archive.apache.org/dist/httpd/binaries/win32/找到对应的版本下载即可,本次下载的是Apache2.2
Apache安装:安装Apache时注意,填写域名时根据情况来,如果是本地测试可以用localhost代替域名
地址栏输入http://127.0.0.1出现“IT WORKS”界面,说明你安装成功了
4、Tomcat connector:http://apache.org/,进入官网,Project-->Tomcat页面如下所示。
按照上图的顺序Tomcat Connectors-->archive download site-->jk/-->binaries/-->windows/
下载完成解压到F:\JK
二、配置Apache
1、修改httpd.conf
我的Apache安装在F:\Apache2.2,找到conf目录下的httpd.conf,在文件的最后一行添加
include "conf/mod_jk.conf"
2、在F:\Apache2.2\conf目录下新建mod_jk.conf文件,内容如下:(建议去掉注释)
#加载mod_jk.so文件
LoadModule jk_module modules/mod_jk.so
#加载workers.properties文件
JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名
JkMount /*.jsp controller
JkMount /*.do controller
JkMount /* controller
3、将下载的JK插件mod_jk.so复制到Apache的安装目录的modules目录下。若插件名字不是mod_jk.so的,将名字修改为mod_jk.so(改不改都行,跟配置文件上的保持一致就ok了)。
4、在F:\Apache2.2\conf目录下新建workers.properties文件,内容如下:
worker.list = controller
#========tomcat1========
worker.tomcat1.port=11009
worker.tomcat1.host=localhost
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
#=======Tomcat3====
worker.tomcat3.port=13009
worker.tomcat3.host=localhost
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
worker.controller.sticky_session_force=1
#worker.controller.sticky_session=1 _force=0
这里可以配置任意多个Tomcat,此处配置了3个Tomat服务器,都是本地,所以为了它们都能够顺利启动起来,本地的服务器端口都是不同的,如果Tomcat不再同一机器上,没必要改端口的。tomcat的开启、关闭端口都要进行相关的改正要不然tomcat会启动不了。远程的话都不用改了。
三、配置Tomcat
配置3个Tomcat服务器,将Tomcat解压后复制3份,我将每个文件夹分别命名为tomcat1,tomcat2和tomcat3,修改每个Tomcat的conf目录下的server.xml文件配置。
1、Tomcat1的关闭端口(如果是在同一台电脑上配置,保持三个Tomcat互不相同就ok了)
2、Tomcat1的启动端口(如果是在同一台电脑上配置,保持三个Tomcat互不相同就ok了)
3、与apache链接的端口(如果是在同一台电脑上配置,保持三个Tomcat互不相同就ok了)
4、在与apache链接的端口下面是集群的相关配置
未修改的server.xml文件
说明:
四、建立测试项目
1、在MyEclipse建立web项目test,需要在项目中的web.xml中添加
2、建立jsp文件,test2.jsp,内容如下:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"
");%>
<%
out.println("
ID " + session.getId()+"
");
// 如果有新的 Session 属性设置
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.println("Session 列表
");
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+"
");
System.out.println( name + " = " + value);
}
%>
五、session测试
将项目部署到3个服务器,然后分别启动Apache和3个Tocmat服务器,这些Tomcat启动顺序随意,然后打开http://localhost/test/test2.jsp,结果如下图:
F5刷新页面,分别出现:
多次刷新页面的sessionID看是同一个ID,说明session是复制成功了。那么session中的存储的东西呢,在输入框中分别输入1、1,2、2,3、3后,显示结果如下图:
以上的测试说明,集群中的session已经共享,每个集群对于同一访问均有相同的session,而且session中存储的变量也复制了。