云中ejabberd集群的一致部署?

时间:2015-07-21 11:01:08

标签: ejabberd

来自文档@ http://docs.ejabberd.im/admin/guide/clustering/#clustering-setup

  

通过在同一网络中启动新的ejabberd节点并从群集节点运行命令,可以将节点添加到群集中。例如,在第二个节点上,当ejabberd已经启动时,使用ejabberdctl脚本运行以下命令作为ejabberd守护程序用户:ejabberdctl join_cluster 'ejabberd@first'

这如何转化为云中的部署 - 实例可以(希望)基于一致的图像并在负载均衡器后面关闭/重新启动?

在上面的示例中,所有这些(包括初始实例)都可以使用“example.com”作为“第一个”(假设“example.com”在DNS中设置为指向云负载均衡器)?

或者第一个实例必须不尝试加入群集,后续的所有实例都使用该初始实例的ip地址而不是“first”(如果是这种情况 - 如果初始实例发生故障,它会变得很古怪吗? )?

1 个答案:

答案 0 :(得分:1)

  

所有这些,包括初始实例,都可以使用" example.com" as" first"在上面的示例中(假设" example.com"在DNS中设置为指向云负载均衡器)?

不,节点名称参数是Erlang ejabberd节点的节点名称。它应该更多地位于亚马逊内部网络上,而不是公共网络上,因此它不应该依赖于中央DNS。它必须是Erlang节点的名称,作为新启动的节点,连接到现有节点以共享相同的"集群模式"并进行数据的初始同步。

因此,部署完成如下:

  • 第一个实例确实不需要加入群集,因为没有要共享的群集架构。
  • 新实例可以使用群集中任何其他节点的节点名称。这意味着他们将自己添加到ejabberd集群架构中。这意味着ejabberd知道用户可以在此群集的任何节点上。您可以指向群集中的任何正在运行的节点添加新节点,因为它们都是等效的(没有主节点)。
  • 您仍需要配置负载均衡器以平衡所有节点上公共XMPP端口的流量。

您只需为每个额外的群集节点执行一次群集配置。所有节点的配置都保留在本地,因此当您停止并重新启动节点时,它将在正确设置后自动重新加入群集。

相关问题