Apache+Tomcat负载均衡实验配置

本文详细介绍如何配置Tomcat集群并实现负载均衡,包括JDK、Tomcat、Apache及Tomcat Connector的安装与配置步骤,并通过一个简单的session共享测试验证集群效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本次配置使用以下软件:

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文件


修改之后的server.xml文件

说明:<Cluster>这块要加多这个属性 channelSendOptions="6"  要不然会话ID不一致,根据自己的情况而论,这个不一定。

四、建立测试项目

1、在MyEclipse建立web项目test,需要在项目中的web.xml中添加<distributable/>

2、建立jsp文件,test2.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 = 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="test2.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>
五、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中存储的变量也复制了。

转载于:https://my.oschina.net/u/3866268/blog/1817293

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值