0

我目前正在尝试使用 2 个 EC2 实例对 ejabberd 进行集群,但我遇到了一些问题。我有 2 个实例,在这 2 个实例前面有一个 AWS 网络负载均衡器。网络负载均衡器连接到域名 (www.example.com) 并将流量路由到两个实例。我当前用于两个实例的 ejabberd.yml 文件具有以下主机:-

hosts:
  - "www.example.com"

对于 node1,我修改 ejabberdctl.cfg 并更改 ejabberd 名称,如下所示

ERLANG_NODE=ejabberd@1.1.1.1
INET_DIST_INTERFACE=1.1.1.1

其中 1.1.1.1 是我的 EC2 实例的私有 ip,第二个 ec2 实例也是如此,但私有 ip 不同。我确保我在相同的 EC2 实例中具有相同的 .erlang.cookie。网络负载均衡器侦听端口 5280、5269、5222 和 4369 并将流量路由到 2 个实例。我通过使用开始我的第一个实例

ejabberdctl start

它工作正常,因为我可以访问 webadmin 控制台。我使用 using 在第二个实例上启动我的 ejabberd

ejabberdctl start

当我尝试使用以下命令将集群添加到实例时它运行良好

ejabberdctl --no-timeout join_cluster ejabberd@1.1.1.1
Error: {no_ping,'ejabberd@1.1.1.1'}

我知道实例看不到每个实例的对话,但我找不到或调试错误

4

1 回答 1

0

看看那些手动提示。试一试,也许其中一个可以为您提供有关设置中问题的一些线索。例如,您可以查看如何检查两个节点是否使用相同的 cookie 字符串(只是为了确保它们读取正确的文件)。您也可以尝试手动从一个 erlang 节点 ping 到另一个节点...

https://www.ejabberd.im/interconnect-erl-nodes/index.html

于 2018-07-30T10:38:05.133 回答