Apache mod_jk 负载平衡问题

Apache mod_jk load balancing issue

我有两个应用程序(app1app2)部署在两个 tomcat 上(tomcat1tomcat2),其他应用程序 (sso) 部署在其他tomcat (tomcat3) 并且我已经使用 mod_jk 安装了 apache web 服务器,如下所示配置,但从 app1 重定向到 sso 时,sso 出现 404 错误。对于两个应用程序(app1app2)没有问题,但 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.0 mod_jk: 1.2.46 JDK 1.8

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

三个Tomcat服务器不能单独作为一个集群,因为有两个应用程序(app1和app2)运行在两个tomcat(tomcat1 & tomcat2) 和 tomcat3.

中的第三个 sso 运行

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

根据该部署计划,您应该只为 tomcat1 和 tomcat2 配置一个平衡器,而将 tomcat3 留在平衡器之外,作为一个独立的 [=22] =].这可以通过以下方式完成:

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

这种方式应该一切正常,摆脱 HTTP 404 错误