0

我正在研究tomcat的高可用性。
我读过你可以在Tomcat中做群集,并且作为负载均衡器你可以使用Apache http。
我不明白以下内容:应该是分担应该是一个单独的机器比Tomcat服务器上安装负载模块
就是Apache HTTP?
例如如果我有3台tomcat服务器作为集群,那么http应该安装在所有3台服务器上?或在其他服务器?
如果我使用Linux设备实现高可用性,又有什么区别?Tomcat集群新手

+0

这看起来不像一个编程问题。它看起来像一个更适合于其他网站的部署或配置问题(可能是http://serverfault.com?)。 –

回答

1

要有HA,用户需要始终从他们提出了一个请求,DNS名称/ IP地址的响应。

有多种方式可以实现这一点,有些甚至不互相排斥。

框中的第一个工具,也就是说,是DNS循环。

这是你的DNS条目没有一个单一的IP地址,但IP地址的列表。您的DNS记录的每个查询将以不同的顺序返回列表。 DNS循环感知的客户端浏览器将尝试第一个条目并按顺序回退到其他条目。非DNS轮循知晓的客户端浏览器将仅尝试第一个条目。这起到了一种负载平衡器的作用......并且对于DNS循环感知的客户端应用程序,您会得到一种自动故障切换的形式。

在框中的下一个工具是负载平衡器,如Apache HTTPD或Nginix。这些作为客户看到的前端。他们对状态有所了解(希望将其配置为),以便他们知道哪些Tomcat服务器已启动,哪些已关闭,并将客户端请求路由到具有容量且已启动的服务器。

所以,如果你想要医管局。您首先对您的Tomcat服务器进行集群化......这很可能需要集群的会话存储...因此您使用数据库来保存会话存储......然后在发生故障转移的情况下对该数据库进行集群化......然后您的负载平衡器在Tomcat实例前面...然后在负载平衡器发生故障的情况下添加第二个负载平衡器...然后您使用DNS轮循机制在负载平衡器之间进行平衡...

您可以使用ARP广播IP地址接管快速更换负载平衡器代替,或除DNS轮循...

然后你开始考虑地理冗余...所以你去药店买一瓶阿司匹林!

在我忘记之前,没有什么说你不能在同一个硬件上这样做......只是你冒着过程窃取CPU /内存/磁盘的风险,以及硬件故障的风险。

您可以获得的最基本的弹性HA是两台运行数据库集群的机器,它们都运行Tomcat集群,都运行Load Balancer,并且都配置为用于DNS名称的DNS循环条目应用程序

+0

1 )所以我可以在同一台机器上安装3个tomcat和3个http,并且可以在这3个http服务器之间进行负载平衡? 2)那么linux模块呢? – Jim

+0

如果你想做HA的开发测试,是的,他们可以在同一台机器上。但是除非有第二台机器,否则你不能称它为HA的大多数人的定义。 –

+0

我没有看到任何主要的模块要求。我看到的最大的问题是获取数据库集群......如果没有会话集群,您将不得不使用粘性会话,并且(对于性能来说非常好),这意味着(没有会话集群)失败节点上的任何用户都不会见HA。注意:无论如何,你通常都会使用stick会话*会话集群 –

3

通常,Apache不应该在单独的机器上实现这样的限制。在实践中,你可能会想要这样做。

Apache可以用作负载均衡器,以便所有请求都会发送到apache,并根据策略将查询分派给某个tomcat(算法将决定何时分派到tomcat,例如循环法)。

一个apache的应安装,它可以与3个TOMCATS(任何数量的TOMCATS的)进行通信。

顺便说一句,它不是必要的应该是像Apache基于软件的负载均衡,而不是你可以使用一个硬件负载平衡器。


Apache = httpd它是一个可以接受http请求和(除其他外)将它们分派给tomcat的web服务器。

Tomcat是用Java编写的,并预期运行Java Web应用程序的Web服务器。

所以整体架构应该是如下:

client --> Apache (host a) ________ tomcat1 (host b) 
          |________ tomcat2 (host c) 
          |________ tomcat3 (host d) 

至于硬件负载平衡器 - 这些不同厂家盒,像西斯科,F5,等等。

希望这有助于

+0

1)所以我可以在**相同的计算机上安装3个tomcat和3个http,并且能够在这3个http服务器之间进行负载平衡? 2)你指的是什么样的硬件?3)那么linux模块呢? – Jim

+0

'应该安装一个apache,它可以与3个tomcats'进行通信。但是在哪里? – Jim

+0

我已经更新了我的答案。至于linux模块,我不确定你在这里说什么,所有这个架构都没有涉及到任何特定的操作系统。在我的模式主机中,a/b/c/d可以使用任何操作系统。所以请详细说明... –