日期:2014-05-16  浏览次数:20898 次

Apache的和Tomcat的集成的几点注意事项和集成的意义

1.Apache和Tomcat的集成的几点注意事项和集成的意义 复制到剪贴板
Posted by: fattiger
Posted on: 2004-02-25 15:01

看了不少介绍Apache和Tomcat集成的帖子。大多为互相转贴,有几个关键问题没有讲清楚。因而总结自己实际操作的经验,希望对大家有所帮助。
先介绍一下软件环境:
Windows 2000,Apache 2.0.47,Tomcat 4.1.8,mod-jk_1.2.5_2.0.47.dll
这里有一点必须提醒,高版本的Jk或者Jk2不一定兼容低版本,一定要确定使用的Jk和Apache兼容,切记。很多帖子没有强调这一点,害我走了不少弯路。

废话少说,开始!
第一步:
拷贝mod_jk_1.2.4_2.0.47.dll到Apache的modules目录,并且改名为mod_jk.dll。也可以不改,就是甚至配置文件要多输入不少字。

第二步:
修改Apache的httpd.conf,添加如下内容:
LoadModule jk_module modules/mod_jk.dll
JkWorkersFile "c:/Tomcat_4.1/conf/workers.properties"
JkLogFile "c:/Tomcat_4.1/logs/mod_jk2.log"
JkLogLevel info
JkMount /servlet/* loadbalancer
JkMount /*.jsp loadbalancer

路径要根据自己的实际情况修改

第三步:
产生workers.properties文件,注意文件所在的路径有和httpd.conf中的设置一致。文件内容为:
workers.java_home=C:\JBuilder7\jdk1.3.1
ps=\
worker.list=ajp13dev,ajp13,loadbalancer
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=100

worker.ajp13dev.port=8099
worker.ajp13dev.host=localhost
worker.ajp13dev.type=ajp13
worker.ajp13dev.lbfactor=100

worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp13dev,ajp13
worker.loadbalancer.sticky_session=1

其中loadbalancer是由于负载平衡的虚拟worker。sticky_session设为1,目的是把同一个会话的请求绑定在一个Tomcat上。由于Tomcat本身不能复制session数据,不绑定没法用。
lbfactor可以用来设置Tomcat的优先级,那个服务器快就把值设大点。
java_home,port和host要根据具体情况
另外一定要注意worker的名字,非常重要,下面具体说。

第四步:
修改Tomcat的server.xml文件
检查是否打开Ajp3端口,具体配置类似于:
<Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
port="8009" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0"/>
注意端口号,要和workers.properties中的一致

修改Tomcat名称,具体配置为:
<Engine jvmRoute="ajp13" name="Standalone" defaultHost="localhost" debug="0">
注意jvmRoute,一定要和workers.properties中的一致,否则无法绑定会话
另一个Tomcat配置为:
<Engine jvmRoute="ajp13dev" name="Standalone" defaultHost="localhost" debug="0">

现在启动Apache和Tomcat,通过Apache可以访问Tomcat中的jsp文件。

以上为一些重点问题,没有包括全部的设置。

下面谈一下集成的意义。个人认为用Apache和Tomcat分别处理静态和动态页面没什么价值,一个web应用有多大比例的静态页面?
集成的重要性在于负载平衡和故障恢复。可以根据负载增加Tomcat服务器,并且在某些Tomcat崩溃时自动重定向到其他服务器,故障服务器修复后自动识别。可以有效的提高整个应用系统的稳定性和处理能力。
另外,似乎JVM不能在多CPU上运行线程(如有错误,欢迎指正)。在多CPU服务器中,启动多个Tomcat,也就是多个JVM可以更好的利用服务器资源。
2.Re:阿帕奇和Tomcat的集成的几点注意事项和集成的意义 [回复:fattiger] 复制到剪贴板
发布者: 浮
张贴于: 2004-02-25 23:39

阿帕奇可以处理的图片文件,Javascript角等,不只是静态的HTML文件。我做了一些前几年的测试,一个中等规模的网络应用程序可以从中受益令人印象深刻。
3.Re:阿帕奇和Tomcat的集成的几点注意事项和集成的意义 [回复:fattiger] 复制到剪贴板
发布者: fattiger
张贴于: 2004-02-26 11:16

发表评论感谢浮球的。

于是雄猫只提供动态内容,可以像Apache的一个图片缓存所有静态的内容,例如,Javascript角和CSS,即使这些文件是链接到一个JSP页面。对不对?

顺便说一句,我有其他两个问题需要您的建议。
1)如何SMP服务器上运行的JVM?它可以使用所有的CPU运行在一个JVM的线程?
2)在上述结构,Apache是瓶颈。所有网络通信将通过这个节点。如果Apache崩溃,整个系统崩溃。你有没有这个建议呢?
4.Re:阿帕奇和Tomcat的集成的几点注意事项和集成的意义 [回复:fattiger] 复制到剪贴板
发布者: 浮
张贴于: 2004-02-26 12:52

是的。

我没有SMP的进出口上,因为我的部署包膜始终是Unix的喜欢。抱歉。

事实上,Apache是相当不错,我有两个应用服务器Apache服务器3,与前一个负载平衡器在克隆和两个服务器在每个应用程序。

为了防止apache的崩溃,你可以用“> 1 Apache服务器。
5.Re:阿帕奇和Tomcat的集成的几点注意事项和集成的意义 [回复:fattiger] 复制到剪贴板
发布者: fattiger
张贴于: 2004年2月27日08:41

我明白了。谢谢。
我仍然有一个sticky_session质询。本届会议是由Apache或Tomcat控制?阿帕奇如果通过,如何复制服务器会话之间的两架阿帕奇?否则,如果负载平衡器不能确保所有用户会话访问的整个经过同样的Apache,也许将与错Tomcat和失去所有的会话变量。
6.Re:阿帕奇和Tomcat的集成的几点注意事项和集成的意义 [回复:fattiger] 复制到剪贴板
发帖人: 浮球
张贴于: 2004年2月27日14:10

在我的经验,会可以保持服务器在任何地方除了网络,他们可以在服务器的前端负载均衡器的Web服务器,应用程序在前面以及应用程序服务器。但我从来没有见过的服务器在网络上的情况,到目前为止。有很多方法可以做到这一点,软件或硬件。

我听到雄猫5有复制的方式,以维持会议通过,但从来没有。试过的

会议只是一个负载几个问题的平衡。不同的JVM和负载均衡策略(说循环赛或IP粘)是我见过太多的问题。他们是难以解决问题,因为有时工作,有时没有。
7.Re:阿帕奇和Tomcat的集成的几点