在 aws EC2 linux ami 上集群 ejabberd

clustering ejabberd on aws EC2 linux ami

我目前正在尝试使用 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 不同。我确保相同的 .erlang.cookie in same EC2 instances 。网络负载均衡器侦听端口 5280、5269、5222 和 4369 并将流量路由到 2 个实例。我使用

开始我的第一个实例
ejabberdctl start

它工作正常,因为我可以访问网络管理控制台。我使用 using

在第二个实例中启动我的 ejabberd
ejabberdctl start

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

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

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

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

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