Apache mod_jk 负载平衡问题
Apache mod_jk load balancing issue
我有两个应用程序(app1 和 app2)部署在两个 tomcat 上(tomcat1 和 tomcat2),其他应用程序 (sso) 部署在其他tomcat (tomcat3) 并且我已经使用 mod_jk 安装了 apache web 服务器,如下所示配置,但从 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.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 错误
我有两个应用程序(app1 和 app2)部署在两个 tomcat 上(tomcat1 和 tomcat2),其他应用程序 (sso) 部署在其他tomcat (tomcat3) 并且我已经使用 mod_jk 安装了 apache web 服务器,如下所示配置,但从 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.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 错误