我计划使用在托管服务提供商处租用的 2 台专用根服务器。这些机器将在集群中运行 tomcat 6。如果我稍后会添加其他机器 - 它们不太可能通过多播访问,因为它们将位于不同的子网中。
没有多播可以运行tomcat吗?tomcat 6 集群的所有教程都包括多播心跳。有没有 SimpleTcpCluster 的替代品?
还是在这种情况下其他替代方案更合适?
我计划使用在托管服务提供商处租用的 2 台专用根服务器。这些机器将在集群中运行 tomcat 6。如果我稍后会添加其他机器 - 它们不太可能通过多播访问,因为它们将位于不同的子网中。
没有多播可以运行tomcat吗?tomcat 6 集群的所有教程都包括多播心跳。有没有 SimpleTcpCluster 的替代品?
还是在这种情况下其他替代方案更合适?
由于无法控制两台服务器之间的距离(它们可能位于两个不同的数据中心)并且没有专用的服务器间通信线路,我宁愿通过循环 DNS 或将客户端重定向到 www1.yourdomain 的负载均衡器来运行它们.xxx 或 www2.yourdomain.xxx 并小心处理服务器通信。
如果服务器之间的通信量很大,您可能会寻求更改架构,优化您的应用程序以“适应”一台服务器(至少一段时间),或者使用控制位置的专用托管,服务器的距离和布线。否则,您的服务器间通信、心跳等将使用与与之通信的客户端相同的通道(例如,相同的网段),这可能会减慢每个人的速度。
如果您真的期望有那么多负载,我想至少会涉及一些钱,不是吗?明智地使用它并使用您的设置技能来解决比设置没有控制或专用线路的分布式集群更难的问题。
在给出我的其他答案后看到对该问题的评论,我对您的问题是什么感到困惑......是关于会话复制吗?集群通信?陈述你的问题可能比你计划的解决方案本身有问题更好。
我将说明一些可能的问题以及快速答案:
我当然忘记了一些东西,但这可能会提供一些起点。更具体地了解您的潜在问题的性质以获得更好的答案:)
我正在尝试部署 yale 中央身份验证服务器 (CAS),并且我想将其集群化以实现冗余,因为这是基础架构的关键部分。CAS 要求复制会话,因为在用户登录应用程序 A 并导航到参与单点登录域的应用程序 B 后,应用程序 B 向 CAS 发送请求以确定用户是否有活动的“票证” . 由于没有设备向应用程序 B 指示它应该将自己定位到哪个节点以验证票证,因此必须将一个节点中的所有活动票证复制到集群中的所有节点。换句话说,会话粘性在这里不是解决方案,因为应用程序 B 在验证用户 cookie 中的票证时,
因此,CAS 要求跨所有节点复制会话。网络支持多播的要求增加了不小的开销,并使这种方法的部署更加繁重。我在谷歌代码测试了这个项目:
http://code.google.com/p/memcached-session-manager
这似乎非常有用且易于部署(至少在 linux 操作系统上),但不幸的是仅提供会话故障转移,而不是会话复制解决方案。
只需使用http://code.google.com/p/memcached-session-manager/。它工作得很好。我们多年来一直使用它来进行此设置,其中有 20 个 Tomcat 服务器共享会话。您可以有一个或两个 memcached 服务器来处理会话复制。