我有两个应用程序(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集群,请帮助我。
三个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错误