Ejabberd聚类理解

时间:2013-12-27 07:20:04

标签: erlang ejabberd

假设我two ejabberd server认为XY具有相同的来源,我使用this为这些服务器进行了ejabberd群集。现在考虑将AB视为用户,并将其连接到X server。 A和B都处于ONLINE状态,并且通过X server连接。如果假设X服务器因某些问题而获得shutdowncrashed。在此场景中,ABOFFLINE状态还是AB处于ONLINE状态,由{{Y状态处理1}}服务器。我不知道我的想法是否正确。如果有人给我关于它的建议。

2 个答案:

答案 0 :(得分:0)

如果您有不同物理位置的节点,则应将它们设置为单独的群集(即使它是1个节点的群集)并将它们联合起来。群集应仅在数据中心级别完成,因为群集中的所有节点之间存在mnesia事务锁定(例如,创建MUC会议室)。

答案 1 :(得分:0)

“负载平衡”不是您在问题中描述的内容。

在负载平衡中,传入连接以平衡方式分布在多个节点上。这样就不会有任何一台服务器负载过高(因此称为“负载平衡”)。如果您的负载均衡器足够智能以检测和删除死节点,它还可以提供故障转移功能。

只要群集中至少有一个工作节点,智能负载均衡器就可以使连接始终成功。但是,在您的问题中,您谈到客户“维持连接”。这是完全不同的。

要做到这一点,您需要连接是无状态的,或者您需要每个客户端连接到所有节点。这不是XMPP的工作原理:它是与单个服务器的有状态连接。如果客户断开连接,您必须依赖客户重新连接。