- 浏览: 890241 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
1 各软件版本
Apache 2.2.4 因为jd_mod 用的是2.2.4的,所以这里也用这个版本,以免有问题
Tomcat 5.5.26
jd-mod: mod_jk-1.2.26-httpd-2.2.4.so
2 配置Apache
引用:
LoadModule jk_module modules/mod_jk-1.2.26-httpd-2.2.4.so
JkWorkersFile D:/Apache2.2/conf/workers.properties
JkLogFile d:/Apache2.2/logs/mod_jk.log
JkLogLevel info
#JkLogLevel debug
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkMount /servlet/* myloadbalancer
JkMount /*.jsp myloadbalancer
3 workers.properties
引用:
worker.list=myloadbalancer
worker.tomcat1.type=ajp13
worker.tomcat1.host=localhost
worker.tomcat1.port=8009
worker.tomcat1.lbfactor=1
worker.tomcat2.type=ajp13
worker.tomcat2.host=localhost
worker.tomcat2.port=9009
worker.tomcat2.lbfactor=1
worker.tomcat3.type=ajp13
worker.tomcat3.host=localhost
worker.tomcat3.port=9019
worker.tomcat3.lbfactor=1
worker.myloadbalancer.type=lb
worker.myloadbalancer.balance_workers=tomcat1,tomcat2,tomcat3
worker.myloadbalancer.sticky_session=false
使用了3个tomcat,其侦听端口分别为 8009,9009和9019
worker.myloadbalancer.sticky_session=false 声明即使是同一个SESSIONID,也不用同一个Worker进行处理,这样更有利于负载均衡。
如果为true,则如果SESSIONID相同,则会自动使用上一次对应的worker
4 apache-tomcat-5.5.26-1\conf\server.xml
- <Server port="8005" shutdown="SHUTDOWN">
- ....
- <Connector port="8080" maxHttpHeaderSize="8192"
- ....
- <Connector port="8009"
- ........
- <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
- ....
- <!-- 这里删除注释的起始标志 -->
- <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
- ........
- <Receiver
- className="org.apache.catalina.cluster.tcp.ReplicationListener"
- tcpListenAddress="192.168.0.1"
- tcpListenPort="4001"
- tcpSelectorTimeout="100"
- tcpThreadCount="6"/>
- ........
- </Cluster>
- <!-- 这里删除注释的终止标志 -->
- <Server port="8005" shutdown="SHUTDOWN">
- ....
- <Connector port="8080" maxHttpHeaderSize="8192"
- ....
- <Connector port="8009"
- ........
- <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
- ....
- <!-- 这里删除注释的起始标志 -->
- <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
- ........
- <Receiver
- className="org.apache.catalina.cluster.tcp.ReplicationListener"
- tcpListenAddress="192.168.0.1"
- tcpListenPort="4001"
- tcpSelectorTimeout="100"
- tcpThreadCount="6"/>
- ........
- </Cluster>
- <!-- 这里删除注释的终止标志 -->
<Server port="8005" shutdown="SHUTDOWN"> .... <Connector port="8080" maxHttpHeaderSize="8192" .... <Connector port="8009" ........ <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"> .... <!-- 这里删除注释的起始标志 --> <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" ........ <Receiver className="org.apache.catalina.cluster.tcp.ReplicationListener" tcpListenAddress="192.168.0.1" tcpListenPort="4001" tcpSelectorTimeout="100" tcpThreadCount="6"/> ........ </Cluster> <!-- 这里删除注释的终止标志 -->
5 apache-tomcat-5.5.26-2\conf\server.xml
- <Server port="9005" shutdown="SHUTDOWN">
- ....
- <Connector port="9080" maxHttpHeaderSize="8192"
- ....
- <Connector port="9009"
- ........
- <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
- ....
- <!-- 这里删除注释的起始标志 -->
- <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
- ........
- <Receiver
- className="org.apache.catalina.cluster.tcp.ReplicationListener"
- tcpListenAddress="192.168.0.1"
- tcpListenPort="4002"
- tcpSelectorTimeout="100"
- tcpThreadCount="6"/>
- ........
- </Cluster>
- <!-- 这里删除注释的终止标志 -->
- <Server port="9005" shutdown="SHUTDOWN">
- ....
- <Connector port="9080" maxHttpHeaderSize="8192"
- ....
- <Connector port="9009"
- ........
- <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
- ....
- <!-- 这里删除注释的起始标志 -->
- <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
- ........
- <Receiver
- className="org.apache.catalina.cluster.tcp.ReplicationListener"
- tcpListenAddress="192.168.0.1"
- tcpListenPort="4002"
- tcpSelectorTimeout="100"
- tcpThreadCount="6"/>
- ........
- </Cluster>
- <!-- 这里删除注释的终止标志 -->
<Server port="9005" shutdown="SHUTDOWN"> .... <Connector port="9080" maxHttpHeaderSize="8192" .... <Connector port="9009" ........ <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2"> .... <!-- 这里删除注释的起始标志 --> <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" ........ <Receiver className="org.apache.catalina.cluster.tcp.ReplicationListener" tcpListenAddress="192.168.0.1" tcpListenPort="4002" tcpSelectorTimeout="100" tcpThreadCount="6"/> ........ </Cluster> <!-- 这里删除注释的终止标志 -->
6 apache-tomcat-5.5.26-3\conf\server.xml
- <Server port="9006" shutdown="SHUTDOWN">
- ....
- <Connector port="9088" maxHttpHeaderSize="8192"
- ....
- <Connector port="9019"
- ........
- <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat3">
- ....
- <!-- 这里删除注释的起始标志 -->
- <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
- ........
- <Receiver
- className="org.apache.catalina.cluster.tcp.ReplicationListener"
- tcpListenAddress="192.168.0.1"
- tcpListenPort="4003"
- tcpSelectorTimeout="100"
- tcpThreadCount="6"/>
- ........
- </Cluster>
- <!-- 这里删除注释的终止标志 -->
- <Server port="9006" shutdown="SHUTDOWN">
- ....
- <Connector port="9088" maxHttpHeaderSize="8192"
- ....
- <Connector port="9019"
- ........
- <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat3">
- ....
- <!-- 这里删除注释的起始标志 -->
- <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
- ........
- <Receiver
- className="org.apache.catalina.cluster.tcp.ReplicationListener"
- tcpListenAddress="192.168.0.1"
- tcpListenPort="4003"
- tcpSelectorTimeout="100"
- tcpThreadCount="6"/>
- ........
- </Cluster>
- <!-- 这里删除注释的终止标志 -->
<Server port="9006" shutdown="SHUTDOWN"> .... <Connector port="9088" maxHttpHeaderSize="8192" .... <Connector port="9019" ........ <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat3"> .... <!-- 这里删除注释的起始标志 --> <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" ........ <Receiver className="org.apache.catalina.cluster.tcp.ReplicationListener" tcpListenAddress="192.168.0.1" tcpListenPort="4003" tcpSelectorTimeout="100" tcpThreadCount="6"/> ........ </Cluster> <!-- 这里删除注释的终止标志 -->
7 测试用的程序
使用了网上普遍采用的一段代码
webapps/test/index.jsp
- <%@ page c %>
- <%@ page import="java.util.*" %>
- <html><head><title>Cluster App Test</title></head>
- <body>
- Server Info:
- <%
- System.out.println("================");
- 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>
- <%@ page c %>
- <%@ page import="java.util.*" %>
- <html><head><title>Cluster App Test</title></head>
- <body>
- Server Info:
- <%
- System.out.println("================");
- 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>
<%@ page c %> <%@ page import="java.util.*" %> <html><head><title>Cluster App Test</title></head> <body> Server Info: <% System.out.println("================"); 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>
webapps/test/WEB-INF/web.xml
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
- version="2.4">
- <display-name>Tomcat Simple Load Balancer Example App</display-name>
- <description>
- Tomcat Simple Load Balancer Example App
- </description>
- <distributable/>
- </web-app>
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
- version="2.4">
- <display-name>Tomcat Simple Load Balancer Example App</display-name>
- <description>
- Tomcat Simple Load Balancer Example App
- </description>
- <distributable/>
- </web-app>
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>Tomcat Simple Load Balancer Example App</display-name> <description> Tomcat Simple Load Balancer Example App </description> <distributable/> </web-app>
其中的 distributable 是关键
8 遇到的问题
1)启动时产生 Error receiving mcast package
经测试发现,我用的ADSL,如果我联网,则会报这个异常,如果断网则不会产生。看来那个
tcpListenAddress="192.168.0.1"
需要使用外网的IP地址才可以。
2)启动异常,一般是端口被占用
请仔细看各个server.xml配置文件,各个端口不能相同
发表评论
-
JVM的内存优化
2012-06-21 12:37 1314自:http://hi.baidu.com/walte ... -
JVM最大分配内存
2012-06-21 12:27 1121分析了当前比较流行的几个不同公司不同版本JVM的最大内存,得出 ... -
查看jvm最大内存
2012-06-21 12:22 1492查看jvm最大内存 java -Xmx1500M -vers ... -
Tomcat内存设置 .
2012-06-15 23:03 1042Tomcat 内存配置 2009年08月11日 17:05 ... -
如何指定tomcat中session过期时间
2012-06-06 11:33 831如何指定tomcat中session过期时间 1. 在se ... -
负载均衡环境中和如何设置Expires和Etag .
2012-06-12 09:56 1538在负载均衡环境中(LVS, LoadBalance)为了减少浏 ... -
轻松实现Apache,Tomcat集群和负载均衡
2012-06-05 23:24 1054作者:罗代均 ldj_work#126.com,转载请保持完整 ... -
tomcat最多能支持多少用户
2012-06-05 23:20 2758Tomcat里用线城池来控制并发用户的个数。 初始化为150个 ... -
tomcat开启Gzip
2011-04-08 23:52 1265现在来说一下如何在TOM猫中一步到位(要求TOM猫5.0以后版 ... -
tomcat的虚拟站点问题
2011-03-02 14:50 1373<Host name="localhost&q ... -
Tomcat里 appBase和docBase的区别
2011-03-02 14:47 1263<host appBase="d:/aaa&q ... -
Tomcat源码分析之JNDI
2011-03-02 14:43 1507在tomcat服务器中,我们可以通过配置文件%CATALINA ... -
tomcat和apache整合
2011-03-02 14:42 993为什么要整合了.其实很简单.原因就是: tomcat在静态 ... -
将Tomcat解压缩版变成服务形式运行,并修改Tomcat的启动内存参数
2011-03-02 14:41 1329许多朋友为了调试方便,下载使用的Tomcat是.zip的解压缩 ... -
Tomcat5.5.x配置整理 - 在重新启动Tomcat的webapp的时候,禁止把session写入文件
2011-03-02 14:39 987修改conf/web.xml 取消注释: <!--- ... -
java.lang.OutOfMemoryError: PermGen space及其解决方法
2011-03-02 14:38 8391、PermGen space的全称是Permanent Ge ... -
Tomcat 同时侦听多端口,多应用
2011-03-02 14:37 1072当你使用Tomcat作为Web Server的时候,是不是会想 ... -
Tomcat5.5.x配置整理 - 配置日志
2011-03-02 14:33 1020在D:\jakarta-tomcat-5.5.8\comm ... -
Tomcat5.5.x配置整理 - 增强SessiionID的生成算法和长度
2011-03-02 14:32 929查看复制到剪切板打印 <Manage ... -
Tomcat5.5.x配置整理 - 发布webapp到网站根目录
2011-03-02 14:31 11071。直接复制到ROOT目录下。 2.因为无法创建无名字的xml ...
相关推荐
Apache+Tomcat+JK是一个常见的Web服务器和应用服务器集群解决方案,用于实现负载均衡和高可用性。这个配置中,Apache作为前端反向代理服务器,Tomcat作为后端的应用服务器,而JK模块是Apache与Tomcat之间的连接器,...
配置Apache+Tomcat负载均衡集群,我们需要以下软件和硬件环境: - **软件**: - JRE(JDK)6u3:用于Java应用程序的运行。 - Tomcat 6.0.14:Web应用服务器。 - Apache 2.2.6:作为负载均衡器。 - mod_jk-2.2.4...
内附完整配置教程和修改后的apache的httpd.conf文件和tomcat的server.xml配置文件,包含test测试项目,不包含apache和tomcat安装文件。 本教程参考网上资料,本机测试成功,如有问题可以私信说明。
在当今的企业级应用中,确保系统的高可用性和稳定性是至关重要的。这通常通过建立集群来实现,即通过部署多台服务器来提供相同的服务,以此来...这样,就完成了整个Mod_Proxy+Apache+Tomcat负载均衡与集群的配置过程。
在这个配置中,`<Proxy>`指令定义了一个名为"mycluster"的负载均衡集群,包含两个成员(t1和t2),分别对应本地和另一台服务器上的Tomcat实例。`lbmethod=byrequests`表示按请求数进行负载分配。`ProxyPass`和`...
Apache+Tomcat+JK 实现集群负载均衡是一种常见的Web服务器和应用服务器的部署方式,它能够提高系统的可用性和响应速度,实现服务的高并发处理。本文将详细介绍如何配置这一环境。 首先,我们需要准备以下软件: 1. ...
jk+apce+tomcat 整合 实现tomcat负载均衡 tomcat集群。让tomcat处理.jsp动态页面,apache处理静态页面。平且实现在一个IP下提供多个站点服务。 里面包括怎样配置apache虚拟机文件 怎样配置tomcat的虚拟机文件 花了我...
Apache+Tomcat+Linux集群和均衡负载(Session同步复制
阅读这份手册可以帮助你深入理解Apache + Tomcat负载均衡worker模式的配置和管理,确保系统稳定高效地运行。 总的来说,Apache + Tomcat的负载均衡worker模式通过合理调度请求,能够有效地提升服务的可用性和响应...
Apache 的 Tomcat 负载均衡和集群 ( linux, centos) jkmod
以下是实现Apache+Tomcat负载均衡整合的详细步骤: 1. **安装与配置Apache**: - 安装Apache HTTP服务器,并确保已启用mod_proxy、mod_proxy_balancer和mod_proxy_http模块。这些模块通常在默认的Apache安装中已经...
本文将深入解析如何通过配置Apache和Tomcat实现负载均衡和集群化,从而提升系统的稳定性和响应速度。 #### 一、准备工作 首先,我们需要准备必要的软件: - **Apache**: 下载适合Windows平台的Apache安装包`...
反向代理负载均衡 Apache + Tomcat集群 多的我也不多说了 看文档
### Apache+Tomcat+Linux集群和负载均衡 在IT领域,Apache+Tomcat+Linux集群与负载均衡技术是实现...通过以上步骤,我们可以成功搭建一套基于Apache+Tomcat+Linux的负载均衡集群环境,有效提升Web应用的性能和稳定性。
Nginx+Tomcat负载均衡企业实战.docx 本文档主要介绍了 Nginx+Tomcat 负载均衡的企业实战,涵盖了从0开始构建 Nginx WEB 平台、Tomcat WEB 集群、代码发布、Nginx 负载均衡 Tomcat 集群、动静分离、Rewrite 实战等...
Apache Tomcat负载均衡是分布式系统中关键的一环,旨在通过分散服务器请求,提高系统的可用性和响应速度,同时增强系统的容错能力。本文将基于提供的文件信息,深入解析Apache Tomcat负载均衡的配置与实现机制。 ##...
- 在`<apache_home>/conf`目录下创建`workers.properties`文件,定义负载均衡策略和Tomcat服务器信息: ```properties # 定义worker列表 worker.list=worker1,worker2,loadbalancer # worker1配置 worker.worker1....