Tomcat集群

所需软件环境:
Apache2.2:http://archive.apache.org/dist/httpd/binaries/win32/
Tomcat5以上:http://apache.freelamp.com/tomcat/tomcat-5/v5.5.28/bin
JK2 1.2:http://labs.xiaonei.com/apache-mirror/tomcat/tomcat-connectors/jk/binaries/
jkd 1.5以上

端口设置
Apache 80
Tomcat1 8005 8080 8443 8009
Tomcat2 8006 8081 8444 8010

Apache配置
1 修改配置文件httpd.conf
把jk2文件mod_jk.so复制到apache目录modules下。
在httpd.conf文件里添加以下几行
LoadModule    jk_module  modules/mod_jk.so
JkWorkersFile  conf/workers.properties
JkMountFile   conf/urimap.properties

2 增加配置文件workers.properties
在apache目录conf创建两个文件workers.properties,内容如下
worker.list=router    #配置请求处理server  这里可以配置多个server
参考:http://wenku.baidu.com/view/5a135db91a37f111f1855b7a.html
# Define the LB worker
worker.router.type=lb
worker.router.balance_workers=tomcat1,tomcat2    #指定分担请求的server列表,用逗号分隔
#设置用于负载均衡的server的session可否共享这里如果设置为0在复制session的时候tomcat会报错,但可以进行复制,如果设置为1就没有错误
worker.router.sticky_session=1

# Define 1 real tomcat using ajp13
worker.tomcat1.type=ajp13
worker.tomcat1.host=localhost
worker.tomcat1.port=8009
worker.tomcat1.lbfactor=1

# Define another tomcat using ajp13
worker.tomcat2.type=ajp13
worker.tomcat2.host=localhost
worker.tomcat2.port=8010
worker.tomcat2.lbfactor=1

3 增加配置文件urimap.properties
在apache目录conf创建两个文件workers.properties,内容如下
/*.jsp=router        #表示所有的jsp文件都由router这个server处理
/*/servlet/*=router
/cluster/*=router
!/*.gif=router                   #所有以.gif结尾的请求都不由controller这个server处理
这里的"!”类似于java中的"!”,是“非”的意思
把tomcat应用程序的访问URI匹配到jk2的工作条目router。


Tomcat1配置

1 修改配置文件server.xml
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
jvmRoute值要与workers.properties文件中定义的条目worker.tomcat1保持一致。

Tomcat2配置
1 修改配置文件server.xml
<Server port="8006" shutdown="SHUTDOWN">
    <Connector port="8081" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8444" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />
    <Connector port="8010"
               enableLookups="false" redirectPort="8444" protocol="AJP/1.3" />
上面标注红色的端口值不能与Tomcat1相同,在同一个IP环境中需要保持唯一。
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
jvmRoute值要与workers.properties文件中定义的条目worker.tomcat2保持一致。

测试

在两个Tomcat里发布测试应用程序cluster,含有一个index.jsp。
在IE地址栏输入http://localhost/cluster/index.jsp,页面显示为
tomcat1

另外打开IE地址栏输入http://localhost/cluster/index.jsp,页面显示为
tomcat2

----------------------------------------------------------------------------
以上tomcat群集基本配置成功

注意在配置错误恢复 session复制的时候别忘了给web.xml中添加<distributable/>节点

有些还在httpd.conf中配置了mod_jk
### 配置 mod_jk
JkWorkersFile conf/workers.properties           #加载集群中的workers
JkMountFile conf/uriworkermap.properties    #加载workers的请求处理分配文件
JkLogFile logs/mod_jk.log                                #指定jk的日志输出文件
JkLogLevel warn                                                  #指定日志级别


配置参数    端口
Server Port    8005
Connector    8080
Coyote/JK2 AJP Connector    8009
Cluster mcastAddr    228.0.0.4
Cluster mcastPort    45564
tcpListenAddress     本机IP地址
Cluster tcpListenPort    4001

Mcast* 用于广播,所有群集服务器需要填写相同的配置
tcpListen* 本机的IP,群集服务器启动时,会将自己的IP和端口号广播出去,其他群集服务器收到后,响应广播发出者。

参考:
http://www.blogjava.net/gdufo/archive/2012/06/02/379786.html

你可能感兴趣的:(tomcat集群)