4

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

没有多播可以运行tomcat吗?tomcat 6 集群的所有教程都包括多播心跳。有没有 SimpleTcpCluster 的替代品?

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

4

4 回答 4

3

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

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

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

于 2008-10-03T13:20:41.987 回答
3

在给出我的其他答案后看到对该问题的评论,我对您的问题是什么感到困惑......是关于会话复制吗?集群通信?陈述你的问题可能比你计划的解决方案本身有问题更好。

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

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

  • 分析它,优化它,再试一次
  • 购买更大/更好的服务器

您的应用程序占用大量带宽

  • 使用您在问题中提到的cheapo集群很可能会使情况变得更糟,因为服务器间通信与客户端服务器通信使用相同的(隐藏的)通道
  • 您可能能够分离不同类型的带宽,例如通过从不同的服务器提供动态内容而不是静态内容:这里不需要服务器间通信

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

  • 获得更大的服务器
  • 寻求专用托管并根据需要安装尽可能多的旋转磁盘
  • 看看其他模型(如亚马逊 S3 存储)是否适合您)

您的应用程序可能会被划线

  • 确定上述哪些因素(或其他因素)决定了您的应用程序的限制,修复它。

你只需要会话复制?

  • Tomcats SessionManager 接口很小,可以很容易地自己实现/扩展。将它用于您喜欢的任何会话复制。有关更多信息,请参阅StandardManager文档和实现

更多创意

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

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

于 2008-10-03T13:44:52.873 回答
1

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

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

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

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

于 2011-01-17T17:50:17.617 回答
0

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

于 2013-12-03T09:06:53.447 回答