[英]Web Sockets + Tomcat/Glassfish + Cluster + Load Balancing - What are the options?
我正在开发一个 Java SE 7/Java EE 6 应用程序,它可以使用 Tomcat 7 或 Glassfish 3.1(可能是 GlassFish,但尚未决定)。 该应用程序将利用新的 WebSockets 技术,该技术最近已在所有主要浏览器中得到广泛采用。
通过大量研究、论坛阅读和邮件列表监控,我确定(目前,AFAICT)无论是 mod_jk/isapi_redirect 还是 mod_proxy 都不可靠(或根本)支持 WebSockets。 由于这是在 Tomcat 或 GlassFish 集群中用于负载平衡/引导流量的两种久经考验的方法,这显然代表了一个问题。
然而,另一方面,Tomcat 和 GlassFish 都有内置的 Web 服务器,这些服务器被广泛吹捧为与 Apache 或 IIS 一样有效地提供静态内容,因此通常不建议将 Apache 或 IIS 放在前面这些服务器之一,除非您需要冗余/负载平衡。
所以,所有这些都让我想到了这些问题:
警告:我不想考虑仅限于愚蠢循环协议(例如循环 DNS)的负载平衡技术。 我不认为这些选项可靠/冗余,因为它们很容易被发送到已关闭或已经处理的连接数比集群中的另一台服务器多得多的服务器。 显然我知道像 Round-Robin DNS 这样的东西可以很容易地与 WebSockets 一起使用,而没有任何兼容性问题。
我们将使用一种方法,在标准负载均衡器之后直接拥有我们的 Tomcat 实例。 我们在设置中大量使用 SSL。 为了让我们的负载均衡器保持简单,并避免在我们的 Web 容器中使用不同的 SSL/无 SSL 配置,我们希望在我们的负载均衡器中终止 SSL。
然而,我们的负载平衡器的 SSL 解密硬件有很多问题。 因此,我们最终在我们的 Web 容器和我们的负载平衡器之间使用了 Web 服务器(nginx),其唯一目的是解密 SSL。
这是一个适用于我们的特殊情况,但值得牢记。 除此之外,我认为没有理由在负载均衡器和 Web 容器之间保留 Web 服务器。 负载均衡器应该可以很好地与 Web 容器配合使用。 力求简单并尽量减少设置中的不同组件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.