6

こんにちは、私は私が唯一つのサーバは、CPUや他のRabbitMQサーバはCPURabbitMQクラスタの負荷分散方法は?

を利用しない利用したメッセージを公開するとき、私はCPU使用率にRabbitMQのクラスタベースをスケールアウトしたいが、EC2

上でクラスタ内で実行されている3台のRabbitMQのサーバーを作成どのようにしてRabbitMQクラスタに負荷を分散できますか

答えて

9

RabbitMQクラスタは、スケーラビリティを向上させるように設計されていますが、システムは完全に自動ではありません。

クラスタ内のノードにキューを宣言すると、キューはその1つのノードにのみ作成されます。したがって、公開するノードに関係なく、キューが1つの場合、メッセージはキューが存在するノードで終了します。

適切RabbitMQのクラスタを使用するには、あなたは、次のことを行うことを確認する必要があります。

  • ように作業が多少均等に分散され、ノード間で分散された複数のキューを持って、
  • はにあなたのクライアントを接続異なるノード(そうでなければ、1つのノードを通してすべてのメッセージを集めることになります)
  • 可能であれば、使用しているキューを保持するノードにパブリッシャ/コンシューマを接続させようとします(メッセージ転送を最小限に抑えるためですクラスタ内で)。

また、High Availability Queuesをご覧ください。それらは通常のキューのようですが、キューの内容は複数のノードにまたがって反映されます。したがって、あなたのケースでは、1つのノードに公開し、RabbitMQはパブリッシュを他のノードにミラーリングし、コンシューマは内部転送によるクラスタのダウンを心配することなく、どちらのノードにも接続できます。

+0

こんにちは、scvalex。 「複数のキューを複数のノードに分散させて作業を均等に分散させる」ためには、プログラムを解決するためのロードバランサプログラムを実行するためにLinuxサーバを追加する必要がありますか?または、アプリケーションのソースコードを変更して、すべてのノード名情報を「rabbitmq」に追加して、負荷バランスをプログラムに追加する必要がありますか? –

+1

私は、「アプリケーションのソースコードを変更して、 'rabbitmq'すべてのノード名情報を負荷分散のためのプログラムに追加する」と言っていますが、ロードバランサを成功させた人もいます。 – scvalex

+0

あなたの投稿を見つける前に、私はrabbitmqが非常に強力だと思います。しかし、その後、私はそれがあなたが言ったように自動ではないと思う。使用するのは簡単ではありません。 –

関連する問題