我有 3 个 tomcat 服务器,用户随时都可以访问。之所以有 3 个是因为每个请求的处理工作量很大(很多 sql)。用户进入服务器 1、2 或 3。现在我想让它们成为“一个”。我知道我需要进行集群,但是集群会将请求分散到 3 个服务器吗?或者我需要使用 apache2 实现负载平衡?
答案1
您可以使用 mod _ jk http://tomcat.apache.org/connectors-doc/
记得在 mod_jk 和 tomcat 连接器上设置 sticky_session
答案2
您将创建一个虚拟的“一台”机器,您的“集群”或负载平衡架构的外部只会将其视为一台实际机器。例如,您有一个真实 IP 地址(外部可路由 IP)和 3 个虚拟 IP(负载平衡器分配的内部 IP)。这还取决于您的应用程序是如何组合在一起的。它有会话吗?它有状态吗?
负载平衡器(例如 loadbalacer.org 或 kemp technologies)可以将具有特定会话的人员转发到特定服务器(A、B 或 C),直到会话结束,然后可以将其移动到另一台服务器进行负载平衡。
最终结果(用户浏览器)并不关心它实际上在哪个服务器上,它只看到一个真实 IP 地址,并发送会话信息,希望它的请求能够得到正确答复。只要它发送会话信息,负载平衡器发送会话信息的服务器就知道它是什么,并将对其进行路由,并相应地分配传入的用户负载。
答案3
使用 Terracotta 快速、可靠的 Web 会话插件,即可获得无状态 Web 架构的可扩展性优势,而无需超载数据库或重写应用程序。Terracotta for Sessions 可与您喜欢的 Web 框架和您自己的自定义会话对象配合使用。
这网络会话教程列出了您评估产品(FOSS)时需要采取的五个简单步骤。