【问题标题】:Problems starting ejabberd cluster启动 ejabberd 集群的问题
【发布时间】:2019-08-26 01:53:20
【问题描述】:

我正在尝试使用 ejabberd-18.09 设置 ejabberd 集群。我看到了这个线程Ejabberd Clustering not working,cmets 说没有为集群安装 ejabberd。 我正在从 linux 实例上的源代码安装 ejabberd(通过 ssh),但没有收到消息询问我是否要安装 ejabberd 以进行集群。

我使用这些步骤:

1) wget ejabberd.tgz file
2) tar ejabberd.tgz 
3) cd /ejabberd
4) ./autugen.sh
5) ./configure --enable -mysql
6) make
7) sudo make install 

当我尝试创建一个集群时,我得到了与上述线程中给出的相同的错误,即

Error: {no_ping,ejabberd@node1}

我试过命令

net_kernel:verbose(1).
ignored

node().
nonode@nohost

所以我的问题是我需要如何安装 ejabberd 以便安装它以便在集群中进行设置。

【问题讨论】:

  • nonode@nohost 表示没有为此 erlang 节点分配任何名称。通常节点名称在 vm.args 文件中设置。 -sname somename 或 -name somename 的种类
  • 我猜它应该在 ejabberdctl.cfg 中,类似于erlang_node 左右
  • @OdobenusRosmarus ERLANG NODE 参数已设置为 'ejabberd@master.example.com'

标签: erlang ejabberd


【解决方案1】:
node().
nonode@nohost

怎么可能?如果我运行一个简单的 erlang 节点,那么它没有节点名称:

$ erl
Erlang/OTP 20 [erts-9.3.3.3] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:10] [kernel-poll:false]

Eshell V9.3.3.3  (abort with ^G)
1> node().
nonode@nohost
2> q().
ok

但 ejabberd 是以节点名开头的:

$ ejaberdctl start

$ ejabberdctl debug
Erlang/OTP 20 [erts-9.3.3.3] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:10] [kernel-poll:true]

Eshell V9.3.3.3  (abort with ^G)
(ejabberd@localhost)1> node().
ejabberd@localhost
(ejabberd@localhost)2> q().
ok

事实上,它的节点名在 ejabberd 日志和命令帮助中都有提及:

$ ejabberdctl  | grep nodename
  --node nodename    ejabberd node name: ejabberd@localhost

【讨论】:

  • 是的,你是对的。我对以下事实感到困惑(我的实际问题是)我们是否需要在安装 ejabberd 时遵循一些特殊步骤才能在集群中运行它,或者之后可以进行简单的 ejabberd 安装以加入集群。尽管如此,我还是成功了,因为正确答案是后一个。感谢您的回复。
猜你喜欢
  • 2017-05-26
  • 2012-12-01
  • 2018-03-07
  • 2020-07-03
  • 2014-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-01
相关资源
最近更新 更多