![Tomcat Web 应用程序高可用性](https://linux22.com/image/557433/Tomcat%20Web%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E9%AB%98%E5%8F%AF%E7%94%A8%E6%80%A7.png)
我已经设置了 apache-tomcat 集群(Ubuntu 服务器),并且我使用了 tomcat 支持的集群技术,并遵循 mod_jk关联清晰易懂。
我在我的局域网中完成了这个任务,three computers 1 as LB and other two as tomcat web servers
一旦我对设置完全满意,我就想将其用于生产。
我点击了许多链接,我粘贴的链接是其中之一,我在不同的物理机器上配置了它。配置是successful
,我觉得设置起来很容易。我检查了停止一个 tomcat web 服务器,它立即开始向另一个 web 服务器发送请求。据我所知,我很清楚这个配置同时支持 HA 和 LB。
以下是我的 apache tomcat 集群详细信息:
1 Load Balancer(192.168.1.100)
2 web Servers(192.168.1.101, 192.168.1.102)
On all the three servers, I installed apache2 & tomcat6 and configured tomcat to run on port 80 with mod_jk on all the servers.
Load Balancer:
Configured apache2 and tomcat with mod_jk setup(both are running on port 80)
As per the link I setup workers.properties with same default ports(as I'm using different machines)
Web Servers:
Let Actual site: www.mydomain.com which is pointing to LB
Configured apache2 and tomcat with mod_jk setup(both are running on port 80)
I can access web application by pointing the browser to following:
http://192.168.1.101/myapp
http://192.168.1.102/myapp
In either of the web servers I configured tomcat virtual hosting with actual site name(www.mydomain.com) as Host Name
我在使用 tomcat jsp 应用程序时遇到了问题。在任何 Web 服务器上,如果myapp
目录从 webapps 中删除,负载平衡器仍会重定向到该 Web 服务器,而用户必须面对404
错误页面,apache 和 tomcat 都无法识别该错误页面并将其重定向到其他可用的 Web 服务器。
当 webapps 中请求的应用程序 (myapps) 在 Web 服务器上不可用时,有没有任何技术可以将客户端请求重定向到集群中的其他 Web 服务器?
谢谢你!
更新:1
workers.properties
尝试在中使用下面的 worker 指令load balancer
。现在,当删除 webapps404
时不会显示错误页面,但会显示错误(这通常在 tomcat 停止时显示)。但是当删除 myapps 时仍然无法重定向到其他可用服务器。myapp
503
worker.<worker-name-here>.fail_on_status=-404,-500,503
答案1
我强烈建议使用专为负载平衡而设计的工具,例如 haproxy。您可以定义后端检查,从而非常灵活地避免将请求发送到不可用的应用程序。
您的解决方案也不是 HA,因为负载均衡器是 SPOF(单点故障)。您可能需要添加另一台机器并使用 keepalived 进行故障转移。
HAproxy 可以在您想要的任何端口上运行,您甚至可以平衡不同类型的流量,不仅仅是 http,同时配置前端(服务平衡入口点)和后端(服务实例和平衡行为的容器)。您可以在此处查看示例:http://www.tomcatexpert.com/blog/2010/07/12/trick-my-proxy-front-tomcat-haproxy-instead-apache
对于故障转移部分,我会使用 keepalived。它会检查您的活动负载均衡器是否可用,如果不可用,则将故障转移到辅助计算机,浮动您的虚拟 IP 地址。
您可以查看此链接中的示例:http://www.howtoforge.com/setting-up-a-high-availability-load-balancer-with-haproxy-keepalived-on-debian-lenny