tomcat负载均衡配置:
1:安装apache和tomcat
2:修改apache下的http.conf,
修改监听端口:Listen 8080
把mod_jk-1.2.28-httpd-2.2.3.so拷贝到apache下的modules目录下.
在http.conf加入:LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.3.so
然后再http.conf最后加入:
`JkWorkersFile conf/workers.properties
JkMountFile conf/uriworkermap.properties
JkLogFile logs/mod_jk.log
JkLogLevel warn`
3:在conf目录下新建:uriworkermap.properties和workers.properties
1):uriworkermap目录下的内容为:
`/*=controller
/jkstatus=status`
2):workers.properties内容为:
worker.list=controller
#========tomcat1========
worker.tomcat1.port=8019 #tomcat1的ajp端口
worker.tomcat1.host=192.168.0.2
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=500
#worker.tomcat1.stopped=1
#========tomcat2========
worker.tomcat2.port=8029 #tomcat2的ajp端口
worker.tomcat2.host=192.168.0.2
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=500
#worker.tomcat2.stopped=1
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=1
worker.status.type=status
4:修改tomcat下的server.xml文件:
<Engine name="Catalina" defaultHost="192.168.0.2" jvmRoute="tomcat1">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<Host name="192.168.0.2" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/mip" docBase="E:\quanyou\web\WebRoot2" debug="0" reloadable="false">
</Context>
</Host>
</Engine>
配置通过复制session,在应用程序的web.xml里添加
现在出现的问题:两台Tomcat之间经常会出现session丢失的问题,比如A,B。用户登录后(进入的A),然后点击链接,有时候会转发到B,但是Session没有复制B,这样系统会提示B没有登录。
Session黏性的设置好像应该是用true而不是1worker.controller.sticky_session=true
开启之后可以用Firebug之类的查看一下本地Cookie里面的jsessionid的值,如果最后带上了.tomcat1之类的后缀的话,说明Session黏性的设置已经开启了,Apache是根据这个id的后缀来决定把请求转给谁处理的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。