2009-01-08 45 views
2

我有一个Glassfish v2u2集群有两个实例,我想在它们之间进行故障切换。我在这个主题上读到的每个文档都说我应该在Glassfish的前面使用负载平衡器,比如Apache httpd。在这种情况下故障转移可以工作,但我又遇到了单点故障。 Glassfish能够在没有负载平衡器的情况下进行故障切换吗?没有负载平衡器的Glassfish故障切换

+0

什么是您的单点故障?负载均衡器本身? – 2009-01-08 07:33:58

+1

如果我在前面使用Apache在Glassfish集群中负载均衡和故障转移实例,那么是的,那么Apache就是单点故障。 – kovica 2009-01-09 06:03:22

回答

-1

不,您不能在应用程序级别执行此操作。

的选项有:

  • 循环赛DNS - 既暴露你的服务器连接到互联网,让客户做负载均衡 - 这是相当有吸引力的,因为它一定会实现故障切换。
  • 使用不同的3层负载平衡系统 - 如“Windows网络负载平衡”,“Linux的网络负载平衡”或一个我编写了一个名为“Fluffy Linux cluster
  • 使用一个单独的负载均衡器具有热故障转移备用

在这些情况下,您仍然需要确保您的数据库和会话数据等可用,并且在群集成员之间同步,这在实践中要困难得多。

+0

循环法DNS提供了糟糕的负载平衡,它不提供故障转移。如果一个人失败了,那么一些用户不能访问该网站。 – corydoras 2009-11-05 23:16:27

0

嗯..根据文档(http://docs.jboss.org/jbossas/jboss4guide/r4/html/cluster.chapt.html)第16.1.2.1章,JBoss可以在没有负载平衡器的情况下进行故障转移。客户端拦截器。

据我所知,glassfish集群提供节点之间的内存会话复制。如果我使用Sun Glassfish企业应用服务器,我可以使用HADB,这可以提供99.999%的可用性。

1

我们解决了这个问题,我们有两个IP地址,它们都对URL做出响应。 DNS提供商(DNS Made Easy)将在两者之间循环。将超时设置为低将确保如果一台服务器失败,另一台服务器将会回答。当一台服务器停止响应时,DNS Made Easy将只发送其他主机作为服务器来响应此URL。您将不得不信任DNS提供商,但您可以购买具有极高可用性的DNS查询服务

至于高可用性,您可以通过集群设置允许会话复制,以便用户不会失去更多比潜在的一个请求失败。