我计划使用2个专用的根服务器租用在一个托管提供商。这些机器将在集群中运行tomcat6。如果稍后我将添加其他计算机,则不太可能通过多播访问它们,因为它们将位于不同的子网中。
有没有可能在没有多播的情况下运行tomcat?tomcat 6集群的所有教程都包含多播心跳。有没有SimpleTcpCluster的替代品?
或者,在这种情况下,其他选择是否更合适?
发布于 2008-10-03 13:20:42
由于无法控制两台服务器之间的距离(它们可能位于两个不同的数据中心),也没有专用的服务器间通信线路,我宁愿通过轮询DNS或负载均衡器运行它们,负载均衡器将客户端重定向到www1.yourdomain.xxx或www2.yourdomain.xxx,并小心地处理服务器通信。
如果服务器之间的通信很频繁,你可能会改变你的体系结构,优化你的应用程序来“适应”一台服务器(至少在一段时间内),或者去专门的托管,控制你服务器的位置,距离和布线。否则,您的服务器间通信、心跳等将与与其通信的客户端使用相同的通道(例如,相同的网段),这可能会减慢所有人的速度。
如果你真的希望有那么多的负载,我想至少会涉及到一些钱,不是吗?明智地使用它,并使用您的设置技能来解决问题,比在没有控制或专用线路的情况下设置分布式集群更困难。
发布于 2008-10-03 13:44:53
在给出了另一个答案之后,我看到了对这个问题的评论,我对你的问题是什么感到困惑……是关于会话复制的吗?集群通信?陈述你的问题可能更好,而不是你计划的解决方案本身有问题。
我将陈述一些可能存在的问题,并提供快速答案:
您的应用程序是CPU/RAM密集型的
您的应用程序是带宽密集型的
使用您在问题中提到的低成本集群的
您的应用程序是存储密集型的
您的应用程序可能带有斜线
你只需要会话复制吗?
的详细信息,请参阅StandardManager文档和实现
更多想法
我当然忘记了一些东西,但这可能提供了一些起点。更具体地说明您的潜在问题的性质,以获得更好的答案:)
发布于 2011-01-18 01:50:18
我正在尝试部署yale Central Authentication Server (CAS),并希望将其集群以实现冗余,因为这是基础设施的关键部分。CAS要求复制会话,因为在用户登录应用程序A并导航到参与单点登录域的应用程序B之后,应用程序B会向CAS发送一个请求,以确定用户是否具有活动的“票证”。由于没有设备可以指示应用程序B应将自身寻址到哪个节点来验证票证,因此必须将一个节点中的所有活动票证复制到群集中的所有节点。换句话说,会话粘性在这里不是一种解决方案,因为应用程序B在验证用户的cookie中的票证时,不知道用户在其间登录的应用程序A中的原始会话的sessionId。
因此,CAS要求跨所有节点复制会话。网络支持多播的要求增加了大量的开销,并使此方法部署起来有点繁重。我在google code上测试了这个项目:
http://code.google.com/p/memcached-session-manager
它似乎非常有用且易于部署(至少在linux OS上),但不幸的是,它只提供会话故障转移,而不是一个会话复制解决方案。
https://stackoverflow.com/questions/153392
复制相似问题