春天的光辉

把春天的气息和光芒洒满大地,沐浴着身边的每一个人... ...

 

Tomcat开发技术之与HTTP服务器的集成(3)

作者:孙卫琴 文章来源:赛迪网 点击数: 1408 更新时间:2005-6-12

 

6、Apache与多个Tomcat服务器集成时的负载平衡

在实际应用中,如果网站的访问量非常大,为了提高访问速度,可以将多个Tomcat服务器与Apache集成,让它们共同分担运行Servlet/JSP组件的任务。 JK插件的loadbalancer(负载平衡器)负责根据在workers.properties文件中预先配置的lbfactor(负载平衡因数)为这些Tomcat服务器分配工作负荷,实现负载平衡。

假定Apache和两个Tomcat服务器集成,一个Tomcat服务器和Apache运行在同一台机器上,使用的JK端口为8009,还有一个Tomcat服务器运行在另一台机器上,主机名为anotherhost,使用的JK端口为8009。以下是把Apache和这两个Tomcat服务器集成的步骤。

(1)把mod_jk_2.0.46.dll拷贝到/lib目录下。
(2)在/conf目录下创建如下的workers.properties文件(注意粗体部分的内容):

																								ps=\ 
#指定文件路径分割符
worker.list=worker1,
worker2,loadbalancer 

worker.worker1.port=8009  
#工作端口,若没占用则不用修改
worker.worker1.host=localhost 
#Tomcat服务器的地址
worker.worker1.type=ajp13 
#类型
worker.worker1.lbfactor=100 
#负载平衡因数

worker.worker2.port=8009 
#工作端口,若没占用则不用修改
worker.worker2.host=anotherhost 
#Tomcat服务器的地址
worker.worker2.type=ajp13 
#类型
worker.worker2.lbfactor=100 
#负载平衡因数

worker.loadbalancer.type=lb
worker.loadbalancer.
balanced_workers=worker1, worker2
																						



以上文件创建了两个worker:worker1和worker2分别代表两个Tomcat服务器,它们由worker.loadbalancer来分配工作负荷。

(3)修改/conf/httpd.conf文件,在文件末尾加入如下内容:

																								# Using mod_jk2.dll to 
redirect dynamic calls to Tomcat
LoadModule jk_module
modules\mod_jk_2.0.46.dll
JkWorkersFile "conf\workers.properties"
JkLogFile "logs\mod_jk2.log" 
JkLogLevel debug
JkMount /*.jsp loadbalancer
JkMount /helloapp/* loadbalancer
																						



当客户请求"/*.jsp"或"/helloapp/*"形式的URL,该请求都由loadbalancer来负责转发,它根据在workers.properties文件中为worker1和worker2分配的lbfactor属性,来决定如何调度它们。

只有在使用了loadbalancer的情况下,workers.properties文件中worker的lbfactor属性才有意义,lbfactor取值越大,表示分配给Tomcat服务器的工作负荷越大。

(4)修改两个Tomcat服务器的JK端口,确保它们和workers.properties文件中的配置对应。此外,在使用了loadbalancer后,要求worker的名字和Tomcat的server.xml文件中的元素的jvmRoute属性一致。

所以应该分别修改两个Tomcat的sever.xml文件,把它们的元素的jvmRoute属性分别设为worker1和worker2。以下是修改后的两个Tomcat服务器的元素:

Tomcat服务器1:

																								<Engine name="Catalina"
defaultHost="localhost"
debug="0" jmvRoute="worker1">
																						



Tomcat服务器2:

																								<Engine name="Catalina"
defaultHost="localhost" 
debug="0" jmvRoute="worker2">
																						



(5)在完成以上步骤后,分别启动两个Tomcat服务器和Apache服务器,然后访问http://localhost/index.jsp,会出现Tomcat服务器的默认主页。由于此时由loadbalancer来调度Tomcat服务器,因此不能断定到底访问的是哪个Tomcat服务器的index.jsp,这对于Web客户来说是透明的。

如果在进行以上实验时,两个Tomcat服务器都在同一台机器上运行,应该确保它们没有使用相同的端口。在Tomcat的默认的server.xml中,一共配置了以下3个端口:

																								<Server port="8005" 
shutdown="SHUTDOWN" debug="0">
<!-- Define a non-SSL Coyote
HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" />
<!-- Define a Coyote/JK2 
AJP 1.3 Connector on port 8009 -->
<Connector port="8009" />
																						



如果两个Tomcat服务器都在同一台机器上运行,则至少应该对其中一个Tomcat服务器的以上3个端口号都进行修改。

此外,如果把Tomcat和其他HTTP服务器集成,Tomcat主要负责处理HTTP服务器转发过来的客户请求,通常不会直接接受HTTP请求。因此为了提高Tomcat的运行性能,可以关闭Tomcat的HTTP连接器,方法为在server.xml中把Tomcat的HTTP Connector的配置注释掉。

posted on 2006-09-25 11:28 春辉 阅读(198) 评论(0)  编辑  收藏 所属分类: Tomcat 相关


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 

导航

统计

常用链接

留言簿(1)

随笔档案

文章分类

文章档案

我的链接

搜索

最新评论

阅读排行榜

评论排行榜