web-dev-qa-db-ja.com

Logstashとelasticsearchの間のデータブローカー/メッセージングシステムとしてのRedis Vs RabbitMQ

さまざまなマシンにインストールされたLogstash荷送人によってログ情報を収集し、1つのelasticsearchサーバーでデータを中央でインデックス化し、Kibanaをグラフィカルレイヤーとして使用するアーキテクチャを定義しています。 Logstashの配送業者とelasticsearchの間に配信を許可するための信頼できるメッセージングシステムが必要です。 Logstashの荷送人とelasticsearchの間、またはその逆でデータブローカー/メッセージングシステムとしてRabbitMQよりもRedisを選択する場合、どのような要因を考慮する必要がありますか?

69
Salindaw

RedisとRabbitMQの両方を評価した後、以下の理由からRabbitMQをブローカーとして選択しました。

  1. RabbitMQでは、SSL証明書を使用して、ブローカーに送信するデータを暗号化することにより、組み込みのセキュリティレイヤーを使用できます。つまり、誰もデータを盗聴せず、重要な組織データにアクセスできません。
  2. RabbitMQは非常に安定した製品であり、ボトルネックにならずに1秒あたりの大量のイベントと多くの接続を処理できます。
  3. 私たちの組織では、RabbitMQをすでに使用しており、RabbitMQの使用に関する十分な内部知識と、シェフとの準備済みの統合がありました。

スケーリングに関して、RabbitMQには、冗長ブローカー環境を実装するためにロードバランサーに加えて使用できる組み込みのクラスター実装があります。

RabbitMQクラスターはアクティブですか、アクティブですか?

次に、RabbitMQを使用する場合の弱点について説明します。

  1. ほとんどのLogstash配送業者はRabbitMQをサポートしていませんが、一方で、Beaverという名前の最良の配送業者は問題なくRabbitMQにデータを送信する実装を持っています。
  2. 現在のバージョンのRabbitMQを使用したBeaverの実装では、パフォーマンスが少し遅くなり(私の目的のため)、1つのサーバーからサービスがクラッシュするたびに3000イベント/秒のレートを処理できませんでした。
  3. 現在、RabbitMQのパフォーマンスの問題を解決し、ビーバーの荷送人をより安定させる修正に取り組んでいます。最初の解決策は、同時に実行できるプロセスを追加することで、荷送人により多くの力を与えます。 2番目の解決策は、Beaverを変更して、RabbitMQにデータを非同期的に送信することです。今週の終わりまでに両方のソリューションの実装を完了することを望みます。

ここで問題をフォローできます: https://github.com/josegonzalez/python-beaver/issues/32

そして、ここでプルリクエストを確認してください: https://github.com/josegonzalez/python-beaver/pull/324

さらに質問がある場合は、お気軽にコメントをお寄せください。

77
Tom Kregenbild

Redisは、一部の基本メッセージブローカー機能を備えているにもかかわらず、キー値データストアとして作成されます。

RabbitMQはメッセージブローカーとして作成されます。自然に多くのメッセージブローカー機能があります。

43
Ferhat

私はこのトピックに関するいくつかの研究を行ってきました。パフォーマンスが重要で永続性が重要でない場合は、RabbitMQが最適です。 Redisは、別の目的で開発されたテクノロジーです。

以下はRedisでRabbitMQを使用するための長所のリストです:

  • RabbitMQは、セキュリティの追加レイヤーであるSSLを使用するように構成できるAdvanced Message Queuing Protocol(AMQP)を使用します。
  • RabbitMQは、Redisがメッセージの受け入れに要する時間の約75%を取ります。
  • RabbitMQはメッセージの優先度をサポートします。ワーカーはこれを使用して、優先度の高いメッセージを最初に消費できます。
  • メッセージを消費した後にワーカーがクラッシュしても、メッセージを失う可能性はありませんが、Redisの場合はそうではありません。
  • RabbitMQには、さまざまなキューにメッセージを送信するための優れたルーティングシステムがあります。

RabbitMQを使用するためのいくつかの短所:

  • RabbitMQは、保守が少し難しく、クラッシュをデバッグするのが難しいかもしれません。
  • ノード名またはノードIPの変動によりデータが失われる可能性がありますが、適切に管理されていれば、永続的なメッセージで問題を解決できます。
37
Arun Reddy

私は同じことを疑問に思ってきました。 Logstashの人々による以前の推奨事項は、RabbitMQよりもRedisを推奨しています( http://logstash.net/docs/1.1.1/tutorials/getting-started-centralized )、しかし、メモのそのセクションはもはや存在しません現在のドキュメントでは、ブローカーを使用してスパイクに対処するための一般的な注意事項がありますが、ここで https://www.elastic.co/guide/en/logstash/current/deploying-and-scaling.html

また、RabbitMQを非常に喜んで使用していますが、AMQPプロトコルはロギングのユースケースでは多すぎる可能性があるため、現在Redisブローカーを調査しています。

4
opennomad

簡単な質問:

  1. なぜブローカーが必要なのですか?これらのサーバーからファイルを読み取るためにlogstashまたはlogstash-forwarderを使用している場合、パイプラインが混雑すると、両方とも速度が低下します。
  2. うさぎまたはredisを投与した経験はありますか?すべてが平等であるため、使用方法を知っているツールが優れたツールです。

意見の範囲では、私はブローカーとしてredisを実行し、それを嫌っていました。もちろん、それはredis(製品自体の問題ではない)での私の経験ではなかったかもしれませんが、それはパイプラインの最も弱いリンクであり、最も必要なときに常に失敗しました。

3
Alain Collins