2011-07-23 32 views
4

ネットワークで負荷分散のために3つのブローカーを設定しようとしています。クライアントとプロデューサーはこれらのブローカーのいずれかに接続できます。ActiveMQ - 複数のブローカー構成のネットワーク

質問:

  1. これらのブローカーをネットワークに使用するための推奨トポロジーとは何ですか?具体的には、これらのブローカーのそれぞれで使用するnetworkConnector構成は何ですか?二重化設定を有効にする必要がありますか? (私は推測デュプレックス設定は、我々が選択したトポロジーに依存する)

    A-> B-> C->      又は      < - > B < - > C < - >

  2. クライアントはフェールオーバープロトコルを使用してこれらのブローカに接続する必要があります。例えばフェールオーバー://(tcp:// b1:6161、tcp:// b2:6161、tcp:// b3:6161)

  3. 再起動の際にクライアント側で重複したメッセージ処理が必要ですか? http://forum.springsource.org/showthread.php?108461-Failover-issue-in-ActiveMQを参照してください。ここに重複するメッセージの問題が存在する理由を明確にしないでください。

  4. http://edelsonmedia.com/?p=143のようにトポロジーを設定するのが理想的です。マスターとスレーブでnetworkConnectorを設定する方法は明確ではありません。

答えて

3

1)実際にはトポロジーを推奨できません。この選択は、ホップ数(メッセージがクラスタに入るブローカとコンシューマが接続されているブローカの間)で受け入れることができます。ヒーブトラフィックのシナリオでは、すべてのホップがネットワークの負荷に追加されます。 私の会社ではハイパーキューブネットワークを使用しています(すべてのブローカーは他のすべてのブローカーを知っています)。

一般的に、ノードの構成が可能な限り同じであることを確認する必要があります。デュプレックスを使用すると、設定するコネクションが少なくなります(BからAへの接続はすでにAからBへのデュプレックス接続の一部です)が、設定ファイルに大きな違いがあります。

私は、自分のクラスタ(mycluster-01〜06)のDNS名に基づいて接続設定を自動生成したActiveMQ用の独自の起動スクリプトを作成しました。

2.)はい。クライアントがリストの最初のエントリを使用していることを確認するには、?randomize = falseを追加するとよいでしょう。

3.重複したエントリは、メッセージの転送中に重大な負荷がかかるときに競合状態として発生することがあります。一般に、1つのメッセージは1つのブローカーが所有しています。

4.)マスターとスレーブの間にネットワークコネクタを設定しないでください(本当にDONT)。 activeMQの純粋なマスタスレーブ機能を使用し、各スレーブのマスタを設定します(マスター上に何も設定する必要はありません)。すべてのマスターに対して、スレーブへのフェイルオーバーを持つ他のマスターへのNetworkConnectionsの設定) http://activemq.apache.org/pure-master-slave.html

関連する問題