Uab=Va-Vb举办航展有何意义义?看不懂。

7322人阅读
Apache系列(5)
&&&&&&& 本文主要参考自,经由实际操作配置操并记录而成。
&&&&&&&&由于最近的一个Java开发项目用到了Tomcat中间件作为web服务器,刚开始只采用了单个Tomcat来运行工程项目,效果差得不尽人意,后来想到了利用Apache和Tomcat集群的负载均衡原理来解决这个问题。在网上查询了很多资料,由于Apache和Tomcat版本的不同,出现了不同配置方法的文章。不过,很感谢这些文章的编写作者,提供了大概类似的配置思路和方法。根据学习大牛们的配置方法,现在将自己的配置过程采用博客的形式记录下来,总结一下。
&&&&&&& 一、环境和版本
&&&&&&&&环境:主机----Windows(本地IP:10.10.141.40);虚拟机(模仿远程)----Windows(远程IP:10.10.141.39)
&&&&&&& 版本:JDK----1.6(安装版); Tomcat----6.0.18(安装版);Apache----2.2.22(httpd-2.2.22-win32-x86-no_ssl.msi,安装版)
&&&&&&& 二、安装
&&&&&&&&1、安装JDK,目标盘符:D:\Program Files\Java\jdk1.6.0_07。
&&&&&&&&2、配置JDK环境变量:
&&&&&&&&2.1、建立系统变量:JAVA_HOME=D:\Program Files\Java\jdk1.6.0_07;
&&&&&&& 2.2、建立系统变量:CLASSPATH=.;(逗号+分号);
&&&&&&& 2.3、编辑path系统变量:在最前面加上%JAVA_HOME%\。
&&&&&& &3、安装Tomcat,目标盘符:D:\Program Files\Apache Software Foundation\Tomcat 6.0,安装之后运行一次,查看是否安装正确或运行正常,默认端口8080。
&&&&&&&&&&&&& 注:1、安装Tomcat的时候,如果你的C盘有如此目录:C:\Program Files\Java\jre*,则Tomcat会优先选择此目录作为安装条件,故要留意此种情况;
&&&&&&&&&&&&&&2、虚拟机中的JDK和Tomcat& 的安装方式类似,本人虚拟机由于安装的时候只有一个盘符C,故全部都安装在C盘中了;
&&&&&&&&&&&&&&3、采用上述安装方式,不再需要单独配置Tomcat的环境变量了。
&&&&&&& <span style="color:#、安装Apache,目标盘符:D:\Program Files\Apache Software Foundation\Apache2.2,默认端口80。
&&&&&&&&&&&&& 注:1、有些大牛的文章说,在安装的时候如果IIS处于运行状态,则安装可能不会成功,强调关闭IIS服务,本人安装过程中,IIS一直处于运行状态,但是安装成功了,估计可能跟版本有关吧;
&&&&&&&&&&&&& 2、打开http:10.10.141.40进行测试,如果能看到一个&It works!&,证明安装成功。
&&&&&&& 三、Apache&#43;JK&#43;Tomcat集群配置
&&&&&&& 1、Apache----2.2.22版本已经集成了mod_jk功能,故不必配置繁琐的worker.properties文件什么的,配置过程很方便了。
&&&&&&& 2、利用编辑器打开D:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf文件,找到如下代理块(proxy):
&&&&&&&&&&&& #LoadModule proxy_module modules/mod_proxy.so
&&&&&&&&&&&&&#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
&&&&&&&&&&&&&#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
&&&&&&&&&&&& #LoadModule proxy_connect_module modules/mod_proxy_connect.so
&&&&&&&&&&&& #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
&&&&&&&&&&&&&#LoadModule proxy_http_module modules/mod_proxy_http.so
&&&&&&& 3、去掉这些代理块的注释“#”符号,Apache在启动的过程中将加载上述代理(proxy)。
&&&&&&& 4、找到#Include conf/extra/httpd-vhosts.conf位置,并去掉“#”符号,结束后关闭httpd.conf文件。
&&&&&&& 5、利用编辑器打开D:\Program Files\Apache Software Foundation\Apache2.2\conf\extra\httpd-vhosts.conf文件,配置虚拟站点,在文件结束添加
&&&&&&&&&&&&& &VirtualHost *:80&
&&&&&&&&&&&&&&&&&&& ServerAdmin 管理员邮箱
&&&&&&&&&&&&&&&&&&& ServerName 域名(没有可用IP地址代替)
&&&&&&&&&&&&&&&&&&& ServerAlias localhost
&&&&&&&&&&&&&&&&&& &ProxyPass / balancer://cluster/ stickysession=JSESSIONID(大写很重要) nofailover=On
&&&&&&&&&&&&&&&&&&& ProxyPassReverse / balancer://cluster/
&&&&&&&&&&&&&&&&&&& ErrorLog &logs/lbtest-error.log&&
&&&&&&&&&&&&&&&&&&&&CustomLog &logs/lbtest-access.log& common&
&&&&&&&&&&&&&&&/VirtualHost&
&&&&&&&&&&&&& 本人的配置实例:
&&&&&&&&&&&&& &VirtualHost *:80&
&&&&&&&&&&&&&&&&&& ServerAdmin
&&&&&&&&&&&&&&&&&& ServerName 10.10.141.40
&&&&&&&&&&&&&&&&&& ServerAlias localhost
&&&&&&&&&&&&&&&&&& ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
&&&&&&&&&&&&&&&&&& ProxyPassReverse / balancer://cluster/
&&&&&&&&&&&&&&&&&& ErrorLog &log/error.log&
&&&&&&&&&&&&&&&&&& CustomLog &log/access.log& common
&&&&&&&&&&&& &/VirtualHost&
&&&&&&&&&&&& 注:1、balancer://是告诉Apache需要进行负载均衡的代理;
&&&&&&&&&&&& 2、后面的cluster是集群名,可以随意取;
&&&&&&&&&&&& 3、两个日志引擎ErrorLog负责记 录错误,CustomLog负责记录所有的http访问以及返回状态,日志名可以自己取。
&&&&&&& 6、再次打开D:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf,文件结束处添加如下代码:
&&&&&&&&&&&& ProxyRequests Off
&&&&&&&&&&&& &proxy balancer://cluster&
&&&&&&&&&&&&&&&&&&& BalancerMember ajp://10.10.141.39:8009 loadfactor=1 route=jvm1
&&&&&&&&&&&&&&&&&&& BalancerMember ajp://10.10.141.40:8009 loadfactor=1 route=jvm2&
&&&&&&&&&&&&&&/proxy&
&&&&&&&&&&&& 注:1、ProxyRequests Off 是告诉Apache需要使用反向代理;
&&&&&&&&&&&& 2、&proxy balancer://cluster&用于配置工作在集群中的节点列表,这里的“cluster”必须与上面的集群名保持一致;
&&&&&&&&&&&& 3、Apache通过ajp协议与tomcat进行通信,ip地址和端口唯一确定了tomcat节点和配置的ajp接受端口;
&&&&&&&&&&&& 4、loadfactor是负载因 子,Apache会按负载因子的比例向后端tomcat节点转发请求,负载因子越大,对应的tomcat服务器就会处理越多的请求,如两个tomcat都 是1,Apache就按1:1的比例转发,如果是2和1就按2:1的比例转发;
&&&&&&&&&&&&&5、route参数对应后续tomcat配置中的引擎路径 (jvmRoute)。
&&&&&&&&7、重新启动Apache服务,在浏览器中访问:http:10.10.141.40,你会发现得到了一个503的错误,内容如下:
&&&&&&&&&&&&&&Service Temporarily Unavailable
&&&&&&&&&&&&& The server is temporarily unable to service your request due to maintenance downtime orcapacity problems. Please try again later
&&&&&&&&&&&&& 打开刚刚配置的错误文件,我们会发现如下信息:
&&&&&&&&&&&&& .......
&&&&&&&&&&&& &[Mon Jun 18 17:59:16 2012] [error] (OS 10061)由于目标机器积极拒绝,无法连接。& : proxy: AJP: attempt to connect to 10.10.141.40:.141.40) failed
&&&&&&&&&&&&& [Mon Jun 18 17:59:16 2012] [error] ap_proxy_connect_backend disabling worker for (10.10.141.40)
&&&&&&&&&&&&&&[Mon Jun 18 17:59:16 2012] [error] proxy: AJP: failed to make connection to backend: 10.10.141.40
&&&&&&&&&&&&& [Mon Jun 18 17:59:23 2012] [error] (OS 10060)由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。&
&&&&&&&&&&&& &: proxy: AJP: attempt to connect&&to&10.10.141.39:.141.39) failed
&&&&&&&&&&&&& [Mon Jun 18 17:59:23 2012] [error] ap_proxy_connect_backend disabling worker for (10.10.141.39)
&&&&&&&&&&&&&&[Mon Jun 18 17:59:23 2012] [error] proxy: AJP: failed to make connection to backend: 10.10.141.39
&&&&&&&&&&&&& 从上面的信息我们可以知道:连接 <span style="color:#ff.141.40
和 <span style="color:#ff.141.39 两台服务器失败,原因是还没有启动Tomcat造成的。
&&&&&&& 8、配置Tomcat----server.xml文件
&&&&&&&&8.1、如果是2个Tomcat处于不同的机器上,就不需要修改任何端口;只是需要把&Engine name=&Catalina& defaultHost=&localhost& jvmRoute=&jvm1&&注释符放开,同时将&Engine name=&Catalina& defaultHost=&localhost&&注释掉;
&&&&&&& 8.2、对于10.10.141.40的机器,将&Engine name=&Catalina& defaultHost=&localhost& jvmRoute=&jvm1&&改为&Engine name=&Catalina& defaultHost=&localhost& jvmRoute=&jvm2&&,怎么知道要改成这样呢,看下面的配置:
&&&&&&&&&&&& ProxyRequests Off
&&&&&&&&&&&& &proxy balancer://cluster&
&&&&&&&&&&&&&&&&&&& BalancerMember ajp://10.10.141.39:8009 loadfactor=1 route=jvm1
&&&&&&&&&&&&&&&&&&& BalancerMember ajp://10.10.141.40:8009 loadfactor=1 route=jvm2&
&&&&&&&&&&&&&&/proxy&
&&&&&&&&&&&& 在我的配置中,10.10.141.40对应的是:route=jvm2&;
&&&&&&&&&&&& 注:jvmRoute对应Apache httpd.conf中BalancerMember中配置的route参数。
&&&&&&&&8.3、对于Tomcat安装在同一台机器上的情况,则需要做端口修改工作,同时上面的配置可以修改为如下情形:
&&&&&&&&&&& ProxyRequests Off
&&&&&&&&&&&& &proxy balancer://cluster&
&&&&&&&&&&&&&&&&&&& BalancerMember ajp://localhost:8009loadfactor=1 route=jvm1
&&&&&&&&&&&&&&&&&&& BalancerMember ajp://localhost:9009loadfactor=1 route=jvm2&
&&&&&&&&&&&&&&/proxy&
&&&&&&&&&&& 接下来修改&Connector port=&8009& protocol=&AJP/1.3& redirectPort=&8443& /&,将jvm2对应的Tomcat配置修改为&Connector port=&9009&
protocol=&AJP/1.3& redirectPort=&8443& /&。
&&&&&&&&&&& 注:端口对应 Apache httpd.conf中BalancerMember中配置的ajp连接端口。
&&&&&&& 8.4、将&Cluster className=&org.apache.catalina.ha.tcp.SimpleTcpCluster&/&的注释放开,目的是可以在集群中的所有tomcat节点间共享会话(Session)。
&&&&&&& 8.5、配置Connector的端口,把jvm2设置为在9080端口侦听,保证2个Tomcat的监听端口的不同。
&&&&&&& 8.6、server.xml文件配置完毕后,我们放入一个简单的java项目应用测试,两个目的:
&&&&&&&&&&&&&&&&&a:测试session信息是否丢失,即同一个请求在不同刷新过程中是否改变,如果改变则配置失败,反之配置成功;
&&&&&&&&&&&&&&&& b:测试session是否在集群中的各个节点中成功复制,复制成功则才能实现集群的目的:负载均衡;
&&&&&&&&&&&&&&&& 在此引用一个网络上的测试session的例子:
&&&&&&&&&&&&&&&&&在每个Tomcat的webapps目录下新建test目录,在test目录下新建test.jsp文件,代码如下:
&%@ page contentType=&text/ charset=GBK& %&
&%@ page import=&java.util.*& %&
&html&&head&&title&Cluster App Test&/title&&/head&
Server Info:
out.println(request.getLocalAddr() + & : & + request.getLocalPort()+&&br&&);%&
out.println(&&br& ID & + session.getId()+&&br&&);
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=&test.jsp& method=&POST&&
名称:&input type=text size=20 name=&dataName&&
值:&input type=text size=20 name=&dataValue&&
&input type=submit&
&&&&&&&8.7、在test目录下新建WEB-INF目录和web.xml,在&web-app&节点下加入&distributable /&,通知Tomcat在当前应用集群中的所有节点间实现Session共享。
&&&&&& 8.8、启动两个Tomcat节点和Apache服务,进行测试,在浏览器中输入:
&&&&&&&&&&&&&&测试结果:
&&&&&&&&&&&&& 1、ID A13F7FD30C2ACA712BDF6EFAF9B7FD38.jvm2
&&&&&&&&&&&&&&&&&&& Session 列表1 = 1
&&&&&&&&&&&&& 2、ID A13F7FD30C2ACA712BDF6EFAF9B7FD38.jvm1
&&&&&&&&&&&&&&&&&&&&Session 列表1 = 1
&&&&&&&&&&&&& 3、ID A13F7FD30C2ACA712BDF6EFAF9B7FD38.jvm2
&&&&&&&&&&&&&&&&&&& Session 列表1 = 1
&&&&&&&&&&&&&&&&&&& 2 = 3
&&&&&&&&&&&&&&4、ID A13F7FD30C2ACA712BDF6EFAF9B7FD38.jvm1
&&&&&&&&&&&&&&&&&&& Session 列表1 = 1
&&&&&&&&&&&&&&&&&&&&3 = 4
&&&&&&&&&&&&&&&&&&& 2 = 3
&&&&&&&&&&&&&&注:1、由于博客有时候上传执行图片有点不尽人意,所以这里摘录了几条数据,进行说明;
&&&&&&&&&&&&&&2、通过这些数据可以知道,前面的sessionId是固定没变得,当我们不停的点击提交时,小数点后面的内容变了,实际上可以知道是哪个节点处理了当次请求,说明sessionId在各个节点的复制成功了,达到了我们预想的测试目的b;
&&&&&&&&&&&&& 3、通过每条数据下得Session 列表可以知道:当我们增加新的数据的时候,前面存入session里面的数据并没有丢失,说明我们预想测试目的a成功了;
&&&&&&&&&&&&& 4、其实我们从两个Tomcat的控制台也可以看得出来,sessionId在不同节点是相同的;
&&&&&&&&&&&&& 5、关闭掉任何一个节点,请求都可以执行,而且sessionId是不变的。
&&&&&&& 四:集群问题现象
&&&&&&& 1、当我将SpringMVC&#43;Spring Security&#43;Hibernate项目(该项目在单个Tomcat服务下没有任何问题)放在集群中的每个Tomcat节点下,偶尔会出现异常,即:系统登录成功后会自动退出,查看了Tomcat的控制台,发现SessionId不一致,SessionId没有复制成功,不知道这种情况各位大牛是否遇到过?(最近发现这篇文章不错,也许可以解决session的相关统一问题)
&&&&&&& 2、偶尔测试的时候,在test页面上根本获取不到处理节点的名称(如:jvm1、jvm2)?
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:132589次
积分:1565
积分:1565
排名:千里之外
原创:26篇
评论:40条
(8)(5)(2)(1)(1)(1)(2)(4)(2)trackbacks-0
&&&&&& Apache-ServertomcatApache-ServerApache-Servertomcat-servertomcat-serverApache-ServerApache-Server
mod_jk.conf
mod_jkmod_jkworker.properties
worker.properties workertomcatTomcatapachetomcatworkers.properties
APACHE_HOME&
&&&&&& Apache ServerTomcat5.5
tomcat -<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year=".29
apache_<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year=".4-win32-x86-no_ssl.msi
mod_jk-<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year=".31-httpd-2.0.52.so (Apache ServerTomcat)
&&&&&& apache-server&#8221; It works!&#8221;
安装mod_jk连接模块
Jdktomcatapache,mod_jkmod_jk-<span style="color: #.2.31-httpd-2.2.3.so文件APACHE_HOME\modulesjkAPACHE_HOME\confmod_jk.confworkers.properties
httpd.conf
&&&&&& #&JK&module&settings
Include&conf/mod_jk.conf&&
mod_jk.conf
修改mod_jk.conf文件
httpd.confjk
mod_jk.conf
# Load mod_jk2 module
LoadModule jk_module modules/mod_jk-<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year=".31-httpd-2.2.3.so
# Where to find workers.properties(workers)
JkWorkersFile conf/workers.properties
# Where to put jk logs(log)
JkLogFile logs/mod_jk2.log
# Set the jk log level [debug/error/info](log)
JkLogLevel info
# Select the log format(log)
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# Send JSPs for context / to worker named loadBalancer(URLURLtomcat)
JkMount /*.jsp controller
# JkMount /*.* loadBalancer
修改workers.properties文件
workers.properties
#server 列表
worker.list = controller,tomcat1,tomcat2
# tomcat1(ajp13 端口号,在tomcat下server.xml配置,默认8009)
worker.tomcat1.port=8009
#tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
#server的加权比重,值越高,分得的请求越多
worker.tomcat1.lbfactor = 1
worker.tomcat2.port=9009
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1
# controller(负载均衡控制器)
worker.controller.type=lb
# 指定分担请求的tomcat
worker.controller.balanced_workers=tomcat1,tomcat2
#worker.controller.sticky_session=true
修改tomcat配置文件server.xml
&&&&&& tomcat2/conf/server.xml89&&&&&&&
编写一个测试页面teat1.jsp
&&&&&& testwebtest1.jsp,
&%&#64;&page&language="java"&contentType="text/&charset=UTF-8"&&&&pageEncoding="UTF-8"%&&!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/&charset=UTF-8"&&title&test1&/title&&/head&&body&&%&&&&System.out.println("===========================");%&&/body&&/html&
启动服务器并进行测试
&&&&&& apache-servertomcat1tomcat2 &tomcat1"=========="tomcat2tomcat1,tomcat2,
(session复制)
sessiontomcatsessiontomcat tomcatsession
1.1 tomcat1, tomcat2server.xmltomcat5.5tomcat6.0
Tomcat5.5配置
&Cluster&className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"&&&&&&&&&&&&&&&&&managerClassName="org.apache.catalina.cluster.session.DeltaManager"&&&&&&&&&&&&&&&&&expireSessionsOnShutdown="false"&&&&&&&&&&&&&&&&&useDirtyFlag="true"&&&&&&&&&&&&&&&&&notifyListenersOnReplication="true"&&&&&&&&&&&&&&&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"&&&&&&&&&&&&&&&&replicationMode="pooled"&&&&&&&&&&&&&&&&ackTimeout="15000"&&&&&&&&&&&&&&&&waitForAck="true"/&&&&&&&&&&&&&&&Valve&className="org.apache.catalina.cluster.tcp.ReplicationValve"&&&&&&&&&&&&&&&&&&&filter=".*\..*\..*\..*\..*\..*\..*\..*\."/&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&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&
&Cluster&className="org.apache.catalina.ha.tcp.SimpleTcpCluster"&&&&&&&&&&channelSendOptions="6"&&&&&!--&&&&&&&&Manager&className="org.apache.catalina.ha.session.BackupManager"&&&&&&&expireSessionsOnShutdown="false"&&&&&&&&&&&&&&&&notifyListenersOnReplication="true"&&&&&&&&&&&&&&&&mapSendOptions="6"/&&&&&&&&&&&--&&&&&&Manager&className="org.apache.catalina.ha.session.DeltaManager"&&&&&&&expireSessionsOnShutdown="false"&&&&&&&notifyListenersOnReplication="true"/&&&&&&&&&Channel&className="org.apache.catalina.tribes.group.GroupChannel"&&&&&&&&&&Membership&className="org.apache.catalina.tribes.membership.McastService"&&&&&&&&&&&&&&address="228.0.0.4"&&&&&&&&&&&&&port="45564"&&&&&&&&&&&&&&frequency="500"&&&&&&&&&&&&&&dropTime="3000"/&&&&&&&&&&Receiver&className="org.apache.catalina.tribes.transport.nio.NioReceiver"&&&&&&&&&&address="auto"&&&&&&&&&&port="5000"&&&&&&&&&&selectorTimeout="100"&&&&&&&&&&maxThreads="6"/&&&&&&&&&&&&Sender&className="org.apache.catalina.tribes.transport.ReplicationTransmitter"&&&&&&&&&&&&&Transport&className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/&&&&&&&&&&/Sender&&&&&&&&&&Interceptor&className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/&&&&&&&&&&Interceptor&className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/&&&&&&&&&&Interceptor&className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/&&&&&&/Channel&&&&&&Valve&className="org.apache.catalina.ha.tcp.ReplicationValve"&&&&&&&filter=".*\..*\..*\..*\..*\..*\..*\..*\."/&&&&&&Deployer&className="org.apache.catalina.ha.deploy.FarmWarDeployer"&&&&&&&&&&&tempDir="/tmp/war-temp/"&&&&&&&&&&&deployDir="/tmp/war-deploy/"&&&&&&&&&&&watchDir="/tmp/war-listen/"&&&&&&&&&&&watchEnabled="false"/&&&&&&&&&&ClusterListener&className="org.apache.catalina.ha.session.ClusterSessionListener"/&&&/Cluster&
分别添加以上内容后,在tomcat2tcpListenPort="4001" 4002
1.2. EnginejvmRoutejvmRouteworkers.properties
&Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"&
#server 列表
worker.list = controller,tomcat1,tomcat2
添加test.jsp页面
2.1. test.jsp
&%&#64;&page&contentType="text/&charset=UTF-8"%&&%&#64;&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="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.2. web.xml&distributable/&xml&version="1.0"&encoding="UTF-8"?&&web-app&xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&xmlns="/xml/ns/javaee"&xmlns:web="/xml/ns/javaee/web-app_2_5.xsd"&xsi:schemaLocation="/xml/ns/javaee&/xml/ns/javaee/web-app_2_5.xsd"&id="WebApp_ID"&version="2.5"&&&&display-name&test&/display-name&&&&distributable/&&&&welcome-file-list&&&&&&welcome-file&index.html&/welcome-file&&&&&&welcome-file&index.htm&/welcome-file&&&&&&welcome-file&index.jsp&/welcome-file&&&&&&welcome-file&default.html&/welcome-file&&&&&&welcome-file&default.htm&/welcome-file&&&&&&welcome-file&default.jsp&/welcome-file&&&&/welcome-file-list&&/web-app&
apache-servertomcat1tomcat2
test0001123
tomcat1sessionsessiontest0001,123&
tomcat1tomcat18080
&&&&&&&&sessiontomcat2tomcat
tomcat1&&&&&& tomcat2tomcat1jvmRouteapache-serversessionsession
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&tomcat2sessionid 配置文件下载:原创作者:Nicholas
阅读(7539)
&re: Apache Http Server与Tomcat实现负载均衡和集群[未登录]
apache能检测tomcat失效吗?&&&&&&
&re: Apache Http Server与Tomcat实现负载均衡和集群
好文,学习一下。&&&&&&
&re: Apache Http Server与Tomcat实现负载均衡和集群
失望了,不是mod_proxy_ajp&&&&&&
&re: Apache Http Server与Tomcat实现负载均衡和集群
不错,好文章先收藏了&&&&&&
阅读排行榜
评论排行榜

我要回帖

更多关于 无患子佛珠有何意义 的文章

 

随机推荐