在AWS EC2 Linux AMI上集群ejabberd

时间:2018-07-28 08:17:31

标签: amazon-ec2 cluster-computing ejabberd nlb

我目前正在尝试使用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控制台。我使用

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

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

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

我知道实例看不到彼此的对话,但是我找不到或调试错误

1 个答案:

答案 0 :(得分:0)

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

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