Apache + MOD_JK + TOMCAT实现集群和负载均衡配置指南
2011-03-07 15:37
736 查看
Apache + MOD_JK + TOMCAT实现集群和负载均衡配置指南
对于Web应用的集群学习我是从Tomcat5.5开始的,下面是我的实际操作过程和一些体会。第一部分 环境介绍
负载均衡
×××××××××××××××××
操作系统:windows xp
IP地址 :192.168.1.200
Apache:apache_2.2.13-win32-x86-openssl-0.9.8k.msi
mod_jk:mod_jk-1.2.28-httpd-2.2.3.so(for windows)
集群环境Tomcat1
×××××××××××××××××
操作系统:SUSE Linuxe server 10
IP地址 :192.168.1.114
Tomcat :apache-tomcat-5.5.28
集群环境Tomcat2
×××××××××××××××××
操作系统:SUSE Linuxe server 10
IP地址 :192.168.1.113
Tomcat :apache-tomcat-5.5.28
第二部分 负载均衡配置
第一步:安装apache,安装目录为C:/Apache2.2。
第二步:将mod_jk-1.2.28-httpd-2.2.3.so文件复制到目录%apache_home%/modules目录下
第三步:修改配置文件%apache_home%/conf/httpd.conf
在文件%apache_home%/conf/httpd.conf的最末尾增加如下行:include conf/mod_jk.conf
view plain
copy to clipboard
?
#zhangzk
include conf/mod_jk.conf
#zhangzk include conf/mod_jk.conf
第四步:在目录%apache_home%/conf下面创建文件mod_jk.conf
view plain
copy to clipboard
?
#加载mod_jk Module
LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.3.so
#
#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
#
#指定哪些请求交给tomcat处理
#"controller"为在workers.propertise里指定的负载分配控制器名
JkMount /*.jsp controller
#加载mod_jk Module LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.3.so # #指定 workers.properties文件路径 JkWorkersFile conf/workers.properties # #指定哪些请求交给tomcat处理 #"controller"为在workers.propertise里指定的负载分配控制器名 JkMount /*.jsp controller
第五步:在目录%apache_home%/conf下创建文件workers.properties
view plain
copy to clipboard
?
#server
worker.list = controller
#========tomcat1========
worker.tomcat1.port=8009
worker.tomcat1.host=192.168.1.114
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1
#========tomcat2========
worker.tomcat2.port=8009
worker.tomcat2.host=192.168.1.113
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=1
#server worker.list = controller #========tomcat1======== worker.tomcat1.port=8009 worker.tomcat1.host=192.168.1.114 worker.tomcat1.type=ajp13 worker.tomcat1.lbfactor = 1 #========tomcat2======== worker.tomcat2.port=8009 worker.tomcat2.host=192.168.1.113 worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor = 1 #========controller,负载均衡控制器======== worker.controller.type=lb worker.controller.balanced_workers=tomcat1,tomcat2 worker.controller.sticky_session=1
至此负载均衡服务器已经配置完毕啦。
分别启动tomcat1和tomcat2已经apache就可以实现对于*.jsp的请求进行1:1分发到tomcat1和tomcat2上。
第三部分 tomcat集群配置
第一步:将%tomcat_home%/conf/server.xml文件中的集群配置节点的注释去掉
即将该文件中如下部分
view plain
copy to clipboard
?
<!--
<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.cluster.session.DeltaManager"
expireSessionsOnShutdown="false"
useDirtyFlag="true"
notifyListenersOnReplication="true"
>
......
</Cluster>
-->
<!-- <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" managerClassName="org.apache.catalina.cluster.session.DeltaManager" expireSessionsOnShutdown="false" useDirtyFlag="true" notifyListenersOnReplication="true"> ...... </Cluster> -->
修改为如下形式(......表示中间有代码段没有展示出来)
view plain
copy to clipboard
?
<Cluster className=
"org.apache.catalina.cluster.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.cluster.session.DeltaManager"
expireSessionsOnShutdown="false"
useDirtyFlag="true"
notifyListenersOnReplication="true"
>
......
</Cluster>
<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" managerClassName="org.apache.catalina.cluster.session.DeltaManager" expireSessionsOnShutdown="false" useDirtyFlag="true" notifyListenersOnReplication="true"> ...... </Cluster>
上述变更在集群环境tomcat1和tomcat2上都需要同样的处理。
第二步:将%tomcat_home%/conf/server.xml文件中的如下代码作出变更
>>>集群环境Tomcat1
view plain
copy to clipboard
?
<Engine name=
"Catalina"
defaultHost=
"localhost"
>
<Engine name="Catalina" defaultHost="localhost">
修改为
view plain
copy to clipboard
?
<Engine name=
"Standalone"
defaultHost=
"localhost"
jvmRoute=
"tomcat1"
>
<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">
>>> 集群环境Tomcat2
view plain
copy to clipboard
?
<Engine name=
"Catalina"
defaultHost=
"localhost"
>
<Engine name="Catalina" defaultHost="localhost">
修改为
view plain
copy to clipboard
?
<Engine name=
"Standalone"
defaultHost=
"localhost"
jvmRoute=
"tomcat2"
>
<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat2">
第三步:
在需要部署到Tomcat中的web应用程序的WEB-INFO/web.xml中增加如下代码
view plain
copy to clipboard
?
<distributable/>
<distributable/>
经过上述3大步骤Tomcat的集群配置就完成啦。
在WEB应用程序中当对session.setAttribute(arg1,arg2)方法进行操作的时候,就可以完成Session的复制了。
第4部分 注意事项
在普通的Web应用程序中如下代码片段即可完成Session中属性的变更
view plain
copy to clipboard
?
Object o = request.getSession(
true
).getAttribute(LOGIN_USER_INFO_KEY);
UserInfo ui = (UserInfo) o;
ui.setAccessPageCount(ui.getAccessPageCount() + 1);
Object o = request.getSession(true).getAttribute(LOGIN_USER_INFO_KEY); UserInfo ui = (UserInfo) o; ui.setAccessPageCount(ui.getAccessPageCount() + 1);
但是在集群部署环境下该处理是不能完成Session复制的,必须用如下代码片段才可以
view plain
copy to clipboard
?
Object o = request.getSession(
true
).getAttribute(LOGIN_USER_INFO_KEY);
UserInfo ui = (UserInfo) o;
ui.setAccessPageCount(ui.getAccessPageCount() + 1);
request.getSession().setAttribute(LOGIN_USER_INFO_KEY, ui);
相关文章推荐
- Apache + MOD_JK + TOMCAT实现集群和负载均衡配置指南
- Tomcat的集群配置(Apache + mod_jk + tomcat来实现tomcat集群的负载均衡)
- Tomcat+Apache+mod_JK实现集群配置/负载均衡
- 基于apache的tomcat负载均衡和集群配置(基于mod_jk.so)
- 采用mod_jk模式配置Apache-2.2.4+Tomcat-7.0.32实现负载均衡(超详...
- 结合Apache和Tomcat实现集群和负载均衡 JK 方式 2 (转)
- apache 2.4.12 + tomcat 7.0.61 + jk connectors 1.2.40实现tomcat负载均衡集群
- 采用mod_jk模式配置Apache-2.2.4+Tomcat-7.0.32实现负载均衡(超详... 3ff8
- 使用Apache通过JK实现多Tomcat负载均衡集群时,Apache不能将请求分发给Tomcat处理(即Apache反向代理不成功)的问题
- 使用apache和nginx代理实现tomcat负载均衡及集群配置详解
- 使用apache和nginx代理实现tomcat负载均衡及集群配置详解
- [tomcat]集群配置以及联合apache httpd实现负载均衡
- Linux中Apache+Tomcat+JK实现负载均衡配置
- windows下、apache 2.2 与tomcat 7 通过jk方式实现 负载均衡配置
- Apache+Tomcat实现负载均衡及集群(session同步)--四、负载均衡(1)使用mod_jk
- Apache Jboss集群 - Tomcat的负载均衡(apache的mod_jk来实现)
- 采用mod_jk模式配置Apache-2.2.4+Tomcat-7.0.32实现负载均衡
- 结合Apache和Tomcat实现集群和负载均衡 JK 方式
- 使用Apache通过JK实现多Tomcat负载均衡集群实现总结及自己的感悟
- Tomcat集群配置-apache,mod_jk_tomcat搭建集群