我开发了一个简单的REST风格的Web应用程序,由2个基本模块组成。
模块#1 :服务器公开REST Web服务,无状态,部署在Tomcat中
模块#2 :REST客户端
有一个部署了模块#1的Tomcat实例。
我想水平缩放并在第二台机器上运行第二个Tomcat。 在负载平衡/集群方面,我是一个完全的新手,这就是为什么我需要帮助。 不需要会话复制和故障转移。
我该如何处理呢?
我做了一个研究,这些是我看到的可能的方法:
1.没有群集,没有第三方代理。
我在第二台机器上运行第二个Tomcat。 既然我可以控制客户端和服务器,我可以在客户端提供一个非常基本的algorithm,随机select一个主机,这个主机将在API调用之前被select。 不需要configuration群集,也不需要提供第三方代理。 有没有潜在的陷阱? 这是一个正确的方法吗?
2. Tomcat集群
说到Tomcat集群configuration,是不是意味着在单独的机器上运行两个Tomcat并且它们的configuration说明它们是集群? 我需要一个单独的库,工具吗? Tomcat足够了吗? 我将有两个进程像第一种方法一样运行吗?
3. Tomcat负载均衡器
Tomcat集群和Tomcat负载平衡器之间有什么区别? 再次,我需要一个单独的库,工具吗? Tomcat足够了吗?
4.第三方代理
我发现了一些关于HAProxy的信息。 这是否意味着所有的呼叫都经过了,代理决定select哪个主机? 这是否意味着除了两个Tomcat进程之外,还有第三个将分别运行? 假设我在两台独立的机器上有2个Tomcat,这个代理运行在哪台机器上?
我应该select哪一个? 我误解了什么? 文章,赞赏的答案。
首先,您已经看到两种选项负载均衡 (无群集)和具有复制的群集之间的区别。
聚类具有正式的含义。 一个集群是一组试图达到共同目标的资源,并且彼此都知道。 集群通常包括设置资源(通常是服务器)在特定的通道(端口)上交换细节并不断交换状态,这样资源的状态也会在其他地方复制。 它通常还包括负载均衡,其中根据负载平衡策略将请求路由到群集中的其中一个资源。
集群体系结构用于解决以下一个或多个问题:
集群体系结构使用负载均衡,多服务器处理均衡负载和会话复制的组合来解决这些问题。
在你的情况是没有必要的会话复制,为此,我认为集群configuration不是你需要的方法。
文档 : Apache Tomcat – 集群/会话复制如何操作
当我们有多个具有相同设置的独立服务器,但是除此之外,彼此不知道的情况下, 负载平衡也可以在没有集群的情况下发生。 然后,我们可以使用负载平衡器将请求转发给一个服务器或其他服务器,但是一个服务器不使用其他服务器的资源。 另外,一个资源不会与其他资源共享状态。
负载平衡器的基本特征是能够根据调度algorithm将input请求分布到集群中的多个后端服务器上。
在这两种体系结构中,都需要一些实现负载平衡器的东西,因为这个选项是使用Apache HTTP Server 。

为了在Apache Http Server中实现一个负载均衡器,你可以使用如下的选项:
JK native connector mod_proxy 参考: