2016-11-04 9 views
0

私のelasticsearchクラスターがどのようにトラフィックを処理するか少し混乱します。私はいくつかのEC2インスタンスをクラスタに接続しています。さて、私のアプリケーションでは、インスタンスの1つのipを使ってクラスタに接続するように設定しました。私は、このノードがクラスタ内の他のすべてのノードに接続して適切に転送できることを知っていますが、トラフィックがすべてそのノードに最初に向けられているので、その特定のインスタンスは過負荷にならないでしょうか?ロードバランサを使用してアプリケーションをポイントする必要がありますか、これを正しく理解していませんか?Amazon EC2上で動作するElasticsearchクラスタにロードバランサを使用する必要がありますか?

ありがとうございます! :)

答えて

0

私はあなたの質問や思考が合法的だと思います。私の経験では、クライアントは複数のインスタンスを認識し、ロードバランサを必要とせずに負荷を分散することができます。答えをMultiple nodes and retry on falure

+0

これは理にかなっています - クライアントでは、elasticsearchノードの配列を作成し、乱数ジェネレータを使ってノードをランダムに選択するとどう思いますか? 例: [node1、node2、node3] 乱数ジェネレータが2を選択すると、クライアントはこの特定の検索のためにnode2にヒットしますか? –

+0

それはOKですが、私はクライアントライブラリがあなたのためにそれを行うと期待しています。さらに、良いクライアントライブラリでは、別のノードで失敗したクエリを再試行し、さらに多くの場合、常に失敗している場合はしばらくノードをアレイから削除します。 – Andreyy

0

いいえ、必要ありません。 Elasticsearchはすでに、クラスタ内の異なるノード間で検索インデックスデータをシャーディングして複製することによって、負荷分散を処理します。

参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/_basic_concepts.html#_shards_amp_replicas

可能な重複:Is using a load balancer with ElasticSearch unnecessary?

+0

おかげで、私はすでにこの行動について知っている:

は、ルビーのため、このクライアントの設定例を参照してください。私が心配しているのは、すべてのリクエストに対してクラスタ内の単一ノードのIPアドレスを使用しているということです。そのノードはもちろん、適切にリクエストを指示しますが、依然としてその1つのノードです私の要求のすべてに直接的に当たっているので、トラフィックスループットのすべてを処理しなければならないノードが1つありますか? –

+0

'TransportClient'を使用している場合は、クラスタ内のノードに複数のIPアドレスを設定することができます。また、 'client.transport.sniff = true'を使うこともできます。この場合、データノードは自動的に発見され、要求はそれらの間で負荷分散されます。 – ck1

関連する問題