JAVA实践中整理出tomcat集群和负载均衡

(一)环境说明
  (1)服务器有4台,一台安装apache,三台安装tomcat
  (2)apache2.0.55、tomcat5.5.15、jk2.0.4、jdk1.5.6或jdk1.4.2
  (3)ip配置,一台安装apache的ip为192.168.0.88,三台安装tomcat的服务器ip分别为192.168.0.1/2/4
  (二)安装过程
  (1)在三台要安装tomcat的服务器上先安装jdk
  (2)配置jdk的安装路径,在环境变量path中加入jdk的bin路径,新建环境变量JAVA_HOME指向jdk的安装路径
  (3)在三台要安装tomcat的服务器上分别安装tomcat,调试三个tomcat到能够正常启动
  (4)tomcat的默认WEB服务端口是8080,默认的模式是单独服务,我的三个tomcat的WEB服务端口修改为7080/8888/9999
  v修改位置为tomcat的安装目录下的conf/server.xml
  修改前的配置为
  <Connector port="8080" maxHttpHeaderSize="8192"
  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
  enableLookups="false" redirectPort="8443" acceptCount="100"
  c disableUploadTimeout="true" />
  修改后的配置为
  <Connector port="7080" maxHttpHeaderSize="8192"
  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
  enableLookups="false" redirectPort="8443" acceptCount="100"
  c disableUploadTimeout="true" />
  依次修改每个tomcat的监听端口(7080/8888/9999)
  (5)分别测试每个tomcat的启动是否正常
  http://192.168.0.1:7080
  http://192.168.0.2:8888
  http://192.168.0.4:9999  (三)负载均衡配置过程
  (1)在那台要安装apache的服务器上安装apache2.0.55,我的安装路径为默认C:\Program Files\Apache Group\Apache2
  (2)安装后测试apache能否正常启动,调试到能够正常启动http://192.168.0.88
  (3)下载jk2.0.4后解压缩文件
  (4)将解压缩后的目录中的modules目录中的mod_jk2.so文件复制到apache的安装目录下的modules目录中,我的为C:\Program Files\Apache Group\Apache2\modules
  (5)修改apache的安装目录中的conf目录的配置文件httpd.conf,在文件中加LoadModule模块配置信息的最后加上一句LoadModule jk2_module modules/mod_jk2.so
  (6)分别修改三个tomcat的配置文件conf/server.xml,修改内容如下修改前
  <!-- An Engine represents the entry point (within Catalina) that processes
  every request. The Engine implementation for Tomcat stand alone
  analyzes the HTTP headers included with the request, and passes them
  on to the appropriate Host (virtual host). -->
  <!-- You should set jvmRoute to support load-balancing via AJP ie :
  <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
  -->
  <!-- Define the top level container in our container hierarchy -->
  <Engine name="Catalina" defaultHost="localhost">
  修改后
  <!-- An Engine represents the entry point (within Catalina) that processes
  every request. The Engine implementation for Tomcat stand alone
  analyzes the HTTP headers included with the request, and passes them
  on to the appropriate Host (virtual host). -->
  <!-- You should set jvmRoute to support load-balancing via AJP ie :-->
  <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">
  <!-- Define the top level container in our container hierarchy
  <Engine name="Catalina" defaultHost="localhost">
  -->
  将其中的jvmRoute="jvm1"分别修改为jvmRoute="tomcat1"和jvmRoute="tomcat2"和jvmRoute="tomcat3"
  (7)然后重启三个tomcat,调试能够正常启动。
  (8)在apache的安装目录中的conf目录下创建文件workers2.propertie,写入文件内容如下
  # fine the communication channel
  [channel.socket:192.168.0.1:8009]
  info=Ajp13 forwarding over socket
  配置第一个服务器tomcatId=tomcat1 #要和tomcat的配置文件server.xml中的jvmRoute="tomcat1"名称一致debug=0 lb_factor=1 #负载平衡因子,数字越大请求被分配的几率越高
  # Define the communication channel
  [channel.socket:192.168.0.2:8009]
  info=Ajp13 forwarding over socket
  tomcatId=tomcat2
  debug=0
  lb_factor=1
  # Define the communication channel
  [channel.socket:192.168.0.4:8009]
  info=Ajp13 forwarding over socket
  tomcatId=tomcat3
  debug=0
  lb_factor=1
  [status:]
  info=Status worker, displays runtime information.
  [uri:/jkstatus.jsp]
  info=Display status information and checks the config file for changes.
  group=status:
  [uri:/*]
  info=Map the whole webapp
  debug=0
  (9)在三个tomcat的安装目录中的webapps建立相同的应用,我和应用目录名为TomcatDemo,在三个应用目录中建立相同 WEB-INF目录和页面index.jsp,index.jsp的页面内容如下
  <%@ page c %>
  <%@ 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.print("<b>Session 列表</b>");
  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">
  名称:<input type=text size=20 name="dataName">
  <br>
  值:<input type=text size=20 name="dataValue">
  <br>
  <input type=submit>
  </form>
  </body>
  </html>
  (10)重启apache服务器和三个tomcat服务器,到此负载 均衡已配置完成。测试负载均衡先测试apache,访问http://192.168.0.88/jkstatus.jsp能否正常访问,并查询其中的内容,有三个tomcat的相关配置信息和负载说明,访问http://192.168.0.88/TomcatDemo/index.jsp看能够运行,能运行,则已建立负载均衡。(四)tomcat集群配置
  (1)负载均衡配置的条件下配置tomcat集群
  (2)分别修改三个tomcat的配置文件conf/server.xml,修改内容如下修改前
  <!--
  <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
  managerClassName="org.apache.catalina.cluster.session.DeltaManager"
  expireSessi
  useDirtyFlag="true"
  notifyListeners>
  <Membership
  className="org.apache.catalina.cluster.mcast.McastService"
  mcastAddr="228.0.0.4"
  mcastPort="45564"
  mcastFrequency="500"
  mcastDropTime="3000"/>
  <Receiver
  className="org.apache.catalina.cluster.tcp.ReplicationListener"
  tcpListenAddress="auto"
  tcpListenPort="4001"
  tcpSelectorTimeout="100"
  tcpThreadCount="6"/>
  <Sender
  className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
  replicati
  ackTimeout="5000"/>
  <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
  filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
  <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
  tempDir="/tmp/war-temp/"
  deployDir="/tmp/war-deploy/"
  watchDir="/tmp/war-listen/"
  watchEnabled="false"/>
  <ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
  </Cluster>
  -->
  修改后
  <!-- modify by whh -->
  <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
  managerClassName="org.apache.catalina.cluster.session.DeltaManager"
  expireSessi
  useDirtyFlag="true"
  notifyListeners>
  <Membership
  className="org.apache.catalina.cluster.mcast.McastService"
  mcastAddr="228.0.0.4"
  mcastPort="45564"
  mcastFrequency="500"
  mcastDropTime="3000"/>
  <Receiver
  className="org.apache.catalina.cluster.tcp.ReplicationListener"
  tcpListenAddress="auto"
  tcpListenPort="4001"
  tcpSelectorTimeout="100"
  tcpThreadCount="6"/>
  <Sender
  className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
  replicati
  ackTimeout="5000"/>
  <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
  filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
  <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
  tempDir="/tmp/war-temp/"
  deployDir="/tmp/war-deploy/"
  watchDir="/tmp/war-listen/"
  watchEnabled="false"/>
  <ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
  </Cluster>
  <!-- modify by whh -->
  将集群配置选项的注释放开即可,如上。
  (3)重启三个tomcat.到此tomcat的集群已配置完成。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
概念: AJP是Apache提供的完成与其它服务器通讯的一种协议。在Apache通过mod_proxy_ajp模块发送AJP数据,另外一端的服务器需要实现AJP协议,能够接受mod_proxy_ajp模块发送的AJP协议数据,在接受到AJP协议数据后做适当处理,并能够将处理结果以AJP协议方式发送回给mod_proxy_ajp模块。 配置过程: 1 安装apache 2 测试apache是否安装成功:http://localhost 现It works! 3 解压、安装tocmat 4 测试tocmat是否安装成功:http://localhost:8080 5 配置tocmat的jdk: 打开startup.bat添加: rem ----------------------------------------------------JDK目录 SET JAVA_HOME=D:\progam\jdk160_05 rem ----------------------------------------------------解压后Tomcat的目录 6 复制tocmat,名字为tomcat2 7 apache 整合tomcat 1)modules目录下添加模块:jk mod_jk-1.2.26-httpd-2.2.4.so 2)修改conf/httpd.conf 最后一行添加: include conf/mod_jk.conf 3)在conf目录下创建mok_jk.conf 内容: #加载mod_jk Module LoadModule jk_module modules/mod_jk-1.2.26-httpd-2.2.4.so #指定 workers.properties文件路径 JkWorkersFile conf/workers.properties #指定哪些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名 JkMount /*.jsp controller 4)在confi目录下创建workers.properties 内容为: worker.list = controller,tomcat1,tomcat2 #========tomcat1======== worker.tomcat1.port=8009 worker.tomcat1.host=192.168.9.210 worker.tomcat1.type=ajp13 worker.tomcat1.lbfactor = 1 #加权因子 越大执行的请求越多 #========tomcat2======== worker.tomcat2.port=9009 worker.tomcat2.host=192.168.9.210 worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor = 1 #========controller,负载均衡控制器======== worker.controller.type=lb worker.controller.balanced_workers=tomcat1,tomcat2 worker.controller.sticky_session=1 5 修改tomcat的端口号(3处) <Server port="8005" shutdown="SHUTDOWN"> 改为: <Server port="9005" shutdown="SHUTDOWN"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/> 改为: <Connector port="9090" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/> 改为: <Connector port="9009" protocol="AJP/1.3" redirectPort="8443"/> 注意:该处需要与worker.tomcat2.port=9009对应 6 修改jvmRoute 备注与worker.list = controller,tomcat1,tomcat2的tomcat1或tocmat2对应 <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值