web-dev-qa-db-ja.com

冗長ejabberdサーバーをセットアップする方法は?

現在、ドメインAでejabberdサーバーを実行しています。 xyz@Aのようなアカウントを持つユーザーがたくさんいます。 Aがダウンした場合に、クライアントが代替サーバーBおよびCを透過的に使用できるように代替サーバーをセットアップしたいと思います(したがって、xyz@Aアカウントを引き続き使用します)。

DNSの部分は非常に単純だと思います。この例のように、Aゾーンファイルを編集して、代替サーバーのSRVレコードを追加する必要があります( http://wiki.xmpp.org/web/SRV_Records#Example_ =):

_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およびCw.r.t認証およびチャットルームでejabberdサーバーをセットアップするための手順と特定の構成は何ですか?

Aの初期ユーザーデータベースで冗長サーバーを操作するだけで十分ですが(Aが長時間ダウンすることはないと思います)、理想的には、誰かがアカウントを作成した場合に、3つのサーバーすべての間でユーザーデータベースを同期する必要があると思いますBがダウンしているときにAをオンにすると、後でAがバックアップされたときにログオンできます。 ejabberdはそのためのメカニズムを提供しますか?

編集:ソリューションはこれらの制約/ユースケースで機能する必要があります:

  • クラスターの任意のノードに透過的に接続できます
  • 少なくとも1つのノードが稼働している場合に機能します(単一障害点はありません)
  • インターネット上で動作します(潜在的に高い遅延)
4
knarf

ここでクラスタリングガイドに従う必要があります http://docs.ejabberd.im/admin/guide/clustering/

4
Anubioz