我正在研究tomcat的高可用性。
我读到你可以在Tomcat中做集群,作为负载均衡器,你可以使用Apache http。
我不能理解以下几点:
作为负载均衡模块的Apache http是否应该安装在与Tomcat服务器不同的机器上?
例如,如果我有3台tomcat服务器作为集群,是否应该在所有3台服务器上都安装http?还是在另一台服务器上?
另外,如果我使用Linux工具来实现高可用性,有什么不同?
发布于 2012-11-26 16:57:00
要实现HA,用户需要始终获得来自其发出请求的DNS名称/ IP地址的响应。
有多种方法可以实现这一点,其中一些甚至不是相互排斥的。
可以说,第一个工具是DNS循环调度。
在这里,您的DNS条目没有单个IP地址,而是一个IP地址列表。DNS记录的每个查询将以不同的顺序返回列表。支持DNS循环调度的客户端浏览器将尝试第一个条目,并按顺序回退到其他条目。不支持DNS循环调度的客户端浏览器将仅尝试第一个条目。就像负载均衡器一样...对于支持DNS循环调度的客户端应用程序,您可以获得一种自动故障转移的形式。
下一个工具是负载均衡器,比如Apache HTTPD或Nginix。它们充当客户端看到的前端。它们是状态感知的(希望您将其配置为状态感知),因此它们知道哪些Tomcat服务器处于运行状态,哪些处于关闭状态,并将客户端请求路由到具有容量且处于运行状态的服务器。
所以如果你想要HA。您可以从集群Tomcat服务器开始...这很可能需要集群的会话存储...所以你使用一个DB来保存会话存储...然后在发生故障转移的情况下对该数据库进行群集...然后你只需要一个Tomcat实例前面的负载均衡器...然后添加第二个负载均衡器,以防负载均衡器出现故障...然后使用DNS轮询来平衡负载均衡器...
您可以使用ARP广播IP地址接管来快速替换负载均衡器,以代替或补充DNS轮询...
然后你开始考虑地理冗余..。所以你去药房买了一瓶阿司匹林!
在我忘记之前,没有什么说你不能在相同的硬件上做这些事情……您只需承担进程窃取CPU/内存/磁盘的风险,以及硬件故障的风险。
您可以获得的最基本的弹性HA是两台机器,它们都运行DB集群,都运行Tomcat集群,都运行负载均衡器,并且都配置为应用程序DNS名称的DNS循环条目
发布于 2012-11-26 16:52:06
一般来说,没有这样的限制,即Apache应该在单独的机器上实现。在实践中,您可能会想要这样做。
Apache可以用作负载均衡器,这样所有的请求都会到达apache,它会根据策略将查询分派给某个tomcat (决定何时分派给哪个tomcat的算法,例如循环)。
应该安装一个apache,它可以与3个tomcats (任意数量的tomcats)通信。
顺便说一句,它不一定是基于软件的负载均衡器,比如Apache,你可以使用硬件负载均衡器。
Apache = httpd是一种web服务器,可以接受http请求并(其中)将它们分派到tomcat。
Tomcat也是一个用java编写的web服务器,用于运行Java web应用程序。
因此,总体架构应如下所示:
client --> Apache (host a) ________ tomcat1 (host b)
|________ tomcat2 (host c)
|________ tomcat3 (host d)至于硬件负载均衡器-这些都是不同厂家的产品,比如Sisco,F5等等。
希望这能有所帮助
https://stackoverflow.com/questions/13561273
复制相似问题