我打算使用在托管服务提供商处租用的2台专用根服务器。这些机器将在集群中运行tomcat 6。 如果我稍后会添加其他机器 - 它们不太可能通过多播访问,因为它们将位于不同的子网中。
是否可以在没有多播的情况下运行tomcat? tomcat 6集群的所有教程都包括组播心跳。有没有SimpleTcpCluster的替代品?
或在这种情况下更适合的其他替代方案?
答案 0 :(得分:3)
由于无法控制两台服务器之间的距离(它们可能位于两个不同的数据中心),也没有专用的服务器间通信线路,我宁愿通过循环DNS或负载均衡器将客户端重定向到www1.yourdomain.xxx或www2.yourdomain.xxx并仔细处理服务器通信。
如果服务器彼此之间进行了大量通信,您可能会改变您的架构,优化您的应用程序的地狱以“适应”一台服务器(至少一段时间)或者去控制专用托管服务器的位置,距离和布线。否则,您的服务器间通信,心跳等将使用与正在与之通信的客户端(例如,相同的网段)使用相同的信道,这可能减慢每个人的速度。
如果你真的期待那么大的负担,我想至少有一些钱涉及,不是吗?明智地使用它并使用您的设置技能来解决问题比设置没有控制或专用线路的分布式群集更困难。
答案 1 :(得分:3)
在给出我的另一个答案之后看到对问题的评论我很困惑你的问题是什么......它是关于会话复制的吗?群集通信?最好先陈述你的问题而不是你自己有问题的计划解决方案。
我将陈述一些可能的问题以及快速答案:
我当然忘记了一些事情,但这可能会提供一些起点。更具体地了解潜在问题的本质,以获得更好的答案:)
答案 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服务器来处理会话复制。