【问题标题】:How to do ejabberd cluster load balancing the right way?如何正确地进行 ejabberd 集群负载均衡?
【发布时间】:2014-09-18 17:37:06
【问题描述】:

我已经按照步骤here 在同一个域(talk.example.com)中设置了一个集群(node1 和 node2)。

我已经用两个客户端测试了集群,它们连接到不同节点的 ip(不是域 talk.example.com)。但是如果我想让客户端连接到 DNS 记录(talk.example.com),而不是集群中节点的 IP,我想知道如何在集群中分配客户端?

DNS轮询?我不知道这是否适用于同一个客户端,如果相同的客户端返回不同的ip,因为XMPP协议是有状态的。或者Linux虚拟服务器?我以前从未尝试过。

我已阅读Service Load-Balancing,但哪个节点将是前端(客户端将连接到的那个)?

【问题讨论】:

标签: erlang xmpp ejabberd


【解决方案1】:

您必须使用 DNS 平衡或负载平衡器(例如 haproxy),甚至两者都使用。

DNS 实际上是最简单的一种,但您需要记住它是 SRV 记录 _xmpp-client._tcp。必须平衡{您的域},而不是您的真实域。

【讨论】:

  • Haproxy 充当 XMPP 服务器的网关。 (如果我错了,请纠正我),连接是持久的,haproxy 维护实时连接不是开销吗?我的意思是很快 HA 将由于保持与 XMPP 的连接而过载。通信是否会像 Client -> HA -> XMPP,反之亦然 (XMPP-> HA -> Client)。?还是它reroute 连接到其中一个 XMPP,从建立持久连接中解放出来?
  • Nginx也可以用来做负载均衡,
  • 您确定可以使用 NGINX 代理普通 TCP 连接吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-20
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
相关资源
最近更新 更多