我目前正在尝试使用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控制台。我使用
在第二个实例上启动我的ejabberdejabberdctl start
,当我尝试使用以下命令将群集添加到实例时,它运行良好
ejabberdctl --no-timeout join_cluster ejabberd@1.1.1.1
Error: {no_ping,'ejabberd@1.1.1.1'}
我知道实例看不到彼此的对话,但是我找不到或调试错误
答案 0 :(得分:0)
看看这些手册。试试看,也许其中之一可以为您提供有关设置问题的一些线索。例如,您可以看到如何检查两个节点是否使用相同的cookie字符串(只是确保它们读取了正确的文件)。您也可以尝试从一个erlang节点手动ping到另一个erlang节点...