没有组播的tomcat会话复制

时间:2008-09-30 14:49:29

标签: java tomcat multicast failovercluster

我打算使用在托管服务提供商处租用的2台专用根服务器。这些机器将在集群中运行tomcat 6。 如果我稍后会添加其他机器 - 它们不太可能通过多播访问,因为它们将位于不同的子网中。

是否可以在没有多播的情况下运行tomcat? tomcat 6集群的所有教程都包括组播心跳。有没有SimpleTcpCluster的替代品?

或在这种情况下更适合的其他替代方案?

4 个答案:

答案 0 :(得分:3)

由于无法控制两台服务器之间的距离(它们可能位于两个不同的数据中心),也没有专用的服务器间通信线路,我宁愿通过循环DNS或负载均衡器将客户端重定向到www1.yourdomain.xxx或www2.yourdomain.xxx并仔细处理服务器通信。

如果服务器彼此之间进行了大量通信,您可能会改变您的架构,优化您的应用程序的地狱以“适应”一台服务器(至少一段时间)或者去控制专用托管服务器的位置,距离和布线。否则,您的服务器间通信,心跳等将使用与正在与之通信的客户端(例如,相同的网段)使用相同的信道,这可能减慢每个人的速度。

如果你真的期待那么大的负担,我想至少有一些钱涉及,不是吗?明智地使用它并使用您的设置技能来解决问题比设置没有控制或专用线路的分布式群集更困难。

答案 1 :(得分:3)

在给出我的另一个答案之后看到对问题的评论我很困惑你的问题是什么......它是关于会话复制的吗?群集通信?最好先陈述你的问题而不是你自己有问题的计划解决方案。

我将陈述一些可能的问题以及快速答案:

您的应用程序是CPU / RAM密集型

  • 对其进行配置,优化,再试一次
  • 购买更大/更好的服务器

您的应用程序是带宽密集型的

  • 使用您在问题中提到的cheapo群集很可能会使情况变得更糟,因为相同(隐形)通道用于服务器间通信以及客户端 - 服务器通信
  • 您可以分开不同类型的带宽,例如通过从与静态内容不同的服务器提供动态内容:此处不需要进行服务器间通信

您的应用程序是存储密集型的

  • 获得更大的服务器
  • 转到专用主机并适合您需要的旋转磁盘
  • 看看其他型号(如亚马逊S3存储设备)是否适用于你)

您的申请可能会被删除

  • 确定上述哪些因素(或其他因素)正在确定您的应用程序的限制,解决该问题。

您只需要会话复制吗?

  • Tomcats SessionManager界面很小,可以自己轻松实现/扩展。将它用于您喜欢的任何会话复制。有关详细信息,请参阅StandardManager文档和实施

更多想法

  • 查看更灵活的设置,如EC2(亚马逊),谷歌产品或其他云计算设置。利用自己的云存储和服务器间通信设施。小心不要太依赖这个基础设施。

我当然忘记了一些事情,但这可能会提供一些起点。更具体地了解潜在问题的本质,以获得更好的答案:)

答案 2 :(得分:1)

我正在尝试部署耶鲁中央身份验证服务器(CAS),我想将其集群以实现冗余,因为这是一个关键的基础架构。 CAS要求复制会话,因为在用户登录应用程序A并导航到参与单点登录域的应用程序B后,应用程序B向CAS发送请求以确定用户是否具有活动“票证” 。由于没有设备可以向应用程序B指示它应该向哪个节点发送以验证票证,因此必须将一个节点中的所有活动票证复制到集群中的所有节点。换句话说,会话粘性在这里不是解决方案,因为应用程序B在用户cookie中验证票证时,不知道用户登录的应用程序A中原始会话的sessionId。

因此,CAS要求在所有节点之间复制会话。网络支持多播的要求增加了非常微不足道的开销,并且使这种方法的部署更加重要。我在谷歌代码测试了这个项目:

http://code.google.com/p/memcached-session-manager

这似乎非常有用且易于部署(至少在Linux操作系统上),但不幸的是只提供了会话故障转移,而且不是会话复制解决方案。

答案 3 :(得分:0)

只需使用http://code.google.com/p/memcached-session-manager/即可。它很棒。我们使用它多年来进行此设置,共享20个Tomcat服务器。您可以使用一个或两个memcached服务器来处理会话复制。