![如何设置冗余 ejabberd 服务器?](https://linux22.com/image/672063/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%E5%86%97%E4%BD%99%20ejabberd%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9F.png)
我目前有一个在域 上运行的 ejabberd 服务器A
。它拥有一群拥有类似 帐户的用户xyz@A
。我想设置备用服务器,这样如果A
发生故障,客户端可以透明地使用备用服务器B
和C
(因此,同时仍使用他们的xyz@A
帐户)。
我认为 DNS 部分非常简单,我需要编辑A
区域文件以添加SRV
备用服务器的记录,如本例所示(http://wiki.xmpp.org/web/SRV_Records#Example_3):
_xmpp-client._tcp.example.net. 86400 IN SRV 5 50 5222 server1.example.net.
_xmpp-client._tcp.example.net. 86400 IN SRV 10 30 5222 server2.example.net.
_xmpp-client._tcp.example.net. 86400 IN SRV 10 10 5222 server3.example.net.
_xmpp-client._tcp.example.net. 86400 IN SRV 10 10 5222 server4.example.net.
_xmpp-client._tcp.example.net. 86400 IN SRV 15 0 5222 backup.example.net.
_xmpp-server._tcp.example.net. 86400 IN SRV 5 50 5269 server1.example.net.
_xmpp-server._tcp.example.net. 86400 IN SRV 10 30 5269 server2.example.net.
_xmpp-server._tcp.example.net. 86400 IN SRV 10 10 5269 server3.example.net.
_xmpp-server._tcp.example.net. 86400 IN SRV 10 10 5269 server4.example.net.
_xmpp-server._tcp.example.net. 86400 IN SRV 15 0 5269 backup.example.net.
B
在主机上设置 ejabberd 服务器以及C
wrt 身份验证和聊天室的步骤和具体配置是什么?
尽管使用初始用户数据库的冗余服务器A
就足够了(我不希望 A 长时间停机),但理想情况下,我认为我应该在所有 3 台服务器之间同步用户数据库,这样如果有人在停机B
时创建帐户,可以在稍后恢复时A
登录。ejabberd 是否提供了这样的机制?A
编辑:解决方案需要与这些约束/用例一起工作:
- 你可以透明地连接到集群的任意节点
- 只要至少一个节点启动,就可以工作(无单点故障)
- 通过互联网工作(可能存在高延迟)
答案1
您需要遵循此处的集群指南http://docs.ejabberd.im/admin/guide/clustering/