2016-04-25 10 views
3

障害に対して非常に弾力性のあるrabbitMQクラスタを作成したいとします。異なるホスト間のDocker Container内のRabbitMQクラスタ

これまで私は3つのノードを持つクラスタを作成していましたが、これらのノードはそれぞれドッカーコンテナ内で実行されます。ノードがクラスタに加わることを可能にするために、ホストはリンクを介して互いに知る必要があります。

ここで、アーキテクチャ全体がクラウド上で実行されます(正確にはAWS上)。今までのコンテナは、同じAWSインスタンスで実行されている場合にのみ、互いにリンクすることができます。私は、ノードが異なるホスト上に置かれるようにクラスタを作成したいと考えています。

は、これまで私が試してみた:

  1. 代わりに、フェデレーション/シャベルを使います。これは私の目的を果たしていません。なぜなら、CAではなくCAP定理からCPが必要だからです。私は自分のノードが互いに複製され、クライアントと同じブローカーとして行動できるようにする必要があります。

  2. ドッカー群を作成する。私はドッカー集団をセットアップし、ドッカー集団を介して2つのインスタンスを接続することができます。しかし、私がこの群の上に複数のウサギの容器を走らせようとすると、同じノードに置かれるか、あるいはそれらを互いにリンクすることはできません。だから私は同じ星座で終わります。私のホストはすべて同じノードで動いています。

異なるAWSインスタンス/ホストの間でドッキング用の容器内にrabbitmMQ-clusterを作成する方法はありますか?

+0

ドッカーオーバーレイネットワークはどうですか? https://docs.docker.com/engine/userguide/networking/dockernetworks/#an-overlay-network – cantSleepNow

答えて

0

あなたは「ノードをクラスタに参加させるには、ホストはリンクを介して互いに知っている必要があります」と言いましたが、リンクが必要な理由がわかりません。主なことは、各コンテナがお互いの位置を突き止めることができることです。これは基本的にサービス発見の問題です。私はたくさんの異なるVM(swarmを使っていなくても)の上でconsulを使って同様のことを(rabbitmqを使って)やったことがありますが、既にswarmクラスタを実行している場合は、APIを打って他のコンテナ?