2013-03-28 9 views
6

すべてのデータをすべてのノードにレプリケートするか、各ノードにデータフラグメントを格納してから、実行時に必要なフラグメントを別のノードからフェッチしますか?または、これはどのように機能しますか?Ejabberdはクラスタリングのためにデータベースをどのように管理していますか?

Mnesiaの代わりにMySQLを使用すると、クラスタリングは正しく機能しますか?

答えて

3

Mnesiaはクラスタリングを簡単にサポートできますが、対話型erlセッションではrequire some tinkeringとなります。正確なメカニズムについては、erlangとmnesiaがクラスタリングで構築していますが、それは私の専門知識を超えています。各ノードにコピー(レプリカ)を格納するように指示することはできますが、それは細かい制御であり、ニーズに合わせて調整する必要があります。this documentの最初のコメントが示唆しています。残念ながら、私は、記憶装置が他のノードから取得した構造をキャッシュ(構成によってはメモリ内またはディスク上)にキャッシュすると思われますが、断片化の仕組みに関する情報は見つかりません。

を取るかもしれません.SQLの警告があることを説明しています。つまり、ejabberdのMnesiaの使用を排除することはできません。共有されたmysqlホストが1つのオプションになるか、または共有SQLサーバが動作しているので、mysqlのクラスタリング機能内でマスター/スレーブのレプリケーション設定を使用しているようです。

6

デフォルトではすべてが記憶喪失に行き、ほとんどのものは複製されます。また、記憶媒体テーブルがディスクまたはメモリに移動するかどうかを選択できます。基本的には、必要に応じてmnesiaテーブルの場所を再構成できますが、通常はテーブルをメモリに複製して閉じます。

また、ejabberdのクラスタリングは、mnesiaクラスタを介してスパニング・ノードを介して行われるので、おそらくそれを取り除く努力をする価値はありません。

ほとんどのmod(xepsを実装する)はmnesiaを使用しますが、mysqlに相当するものです。それはさらに幅広く、SQLに相当するものに "_odbc"という接尾辞が付いています。例:mod_rosterおよびmod_roster_odbc。

要約すると、コンフィグやメモリ内のものを扱うための軽量な記憶媒体と重いもののためのセントラルmysqlを使用することができます。 mysqlの場所はejabberd configで設定できます。

+0

私は、もっと多くのノードを追加することで、必要なサイズ(10M * n actives ..)まで簡単に成長できるような、最も簡単なセットアップを実現することを目指しています。 3つのことが思い浮かぶ。 (A)。 mnesiaのテーブルサイズの制限では、レプリケーションではなくローカルコンテンツテーブルが、見た目にはより良いオプションのように聞こえます。 (B)。 MySQLに何かを外部化することはせず、世俗的な設定に厳格に依存することは最も簡単な設定です。 (C)。非常に大規模なデプロイメントに集中型MySQL DBが必要なのでしょうか? –

+1

私が会ったeJabberdデプロイメントの大半はセットアップが混在しており、集中化されたmysqlを使用しています(レプリケートしやすく、システムの別のレイヤーで簡単にアクセスできます)。 mnesiaのテーブルサイズの上限はどういう意味ですか?メモリテーブルには制限がなく、ほとんどの場合、パフォーマンス上の理由からメモリ内の場所が必要です。 – user425720

関連する問題