提问者:小点点

Apachemod_jk负载平衡问题


我有两个应用程序(app1和app2)部署在两个tomcat(tomcat1和tomcat2),其他应用程序(sso)部署在其他tomcat(tomcat3)上,我已经安装了apache web服务器,mod_jk具有以下配置,但从app1重定向到sso时sso出现404错误。对于两个应用程序(app1和app2),除了sso出现404错误之外,没有其他问题。

workers.properties

worker.list=balancer

#Define Node1
worker.tomcat1.type=ajp13
worker.tomcat1.port=8008
worker.tomcat1.host=abc.com

#Define Node2
worker.tomcat2.type=ajp13
worker.tomcat2.port=9009
worker.tomcat2.host=abc.com

#Define Node3
worker.tomcat3.type=ajp13
worker.tomcat3.port=8009
worker.tomcat3.host=abc.com

#Load-balancing behaviour
worker.balancer.type=lb
worker.balancer.balance_workers=tomcat1,tomcat2,tomcat3

httpd. cnf:

JkMount /app* balancer
JkMount /sso* balancer

并且在每个tomcat server. xml中包含以下具有不同端口的标签

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Apache: 2.4.41 Tomcat:8.0mod_jk:1.2.46JDK1.8

这是我的本地设置。我错过了什么吗?我是新来的tomcat集群,请帮助我。


共1个答案

匿名用户

三个Tomcat服务器不能各自充当集群,因为有两个应用程序(app1

当从app1重定向到app2或sso时,使用您的workers.properties在这里发生的事情是,mod_jk将请求重定向到您之前被重定向到的tomcat,由于会话粘性。因此,当从app1重定向到app2时,它就像一个魅力,因为这两个应用程序都部署到tomcat1和tomcat2,但是当被重定向到sso时,您会收到一个HTTP404,因为您的jsession sionid cookie绑定到tomcat1或cattom2,使其将sso请求重定向到同一个tomcat,并且因为sso没有部署在那里而收到404。

使用该部署方案,您应该仅为tomcat1和tomcat2配置一个平衡器,并将tomcat3排除在平衡器之外,充当独立的tomcat。这可以通过以下方式完成:

worker.list=balancer,tomcat3

#Define Node1
worker.tomcat1.type=ajp13
worker.tomcat1.port=8008
worker.tomcat1.host=abc.com

#Define Node2
worker.tomcat2.type=ajp13
worker.tomcat2.port=9009
worker.tomcat2.host=abc.com

#Define Node3
worker.tomcat3.type=ajp13
worker.tomcat3.port=8009
worker.tomcat3.host=abc.com

#Load-balancing behaviour
worker.balancer.type=lb
worker.balancer.balance_workers=tomcat1,tomcat2

这样所有应该工作摆脱HTTP404错误