Solr Cloud クラスタのノードに接続する方法 | KandaSearch Community Support Forum

Solr Cloud クラスタのノードに接続する方法

トピック作成者:ks-solruserml-bot (2025/07/17 11:03 投稿)
3
OpenOpen

(The bot translated the original post https://lists.apache.org/thread/3prk03mon01d775ydxkopbcs9t9vf7sd into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)

みなさん、こんにちは。

おそらく、皆さんにとっては愚問かもしれませんが、ドキュメントの中にヒントが見つからなかったので質問させてください。

SolrCloud クラスタを複数ノードで構築した場合、それらのノードのいずれかに接続して操作を行うにはどうすればよいのでしょうか?
ノードの前に何らかのプロキシを設置するのですか? それとも、Zookeeper に問い合わせて稼働中の既知のノードのエンドポイントを取得するのですか?
それともラウンドロビン的に接続を試みる(ただし、ダウンしているノードへのタイムアウトが長引くリスクもあります)のでしょうか?

SolrCloud におけるベストプラクティスはどのようなものでしょうか?

よろしくお願いします。
Andreas

返信投稿者:ks-solruserml-bot (2025/07/17 11:04 投稿)

haproxy はロードバランシングによく使われる一般的なツールです。
私たちは、32ノードのクラスタに対してラウンドロビン方式でロードバランスするために haproxy を使用しています。

https://www.haproxy.org/

返信投稿者:ks-solruserml-bot (2025/07/17 11:05 投稿)

こんにちは、

上記のどれでも構いません :)

もしインデックス作成や検索時のネットワークホップの最小化にこだわらないのであれば、アプリケーションのロジックを簡素化するために、ノードの前に HAProxy や NginX、あるいはハードウェア製のロードバランサーなどを使うことができます。

とはいえ、現在のベストプラクティスは、アプリケーションに複数の Solr ホスト名のリストを渡して、Solr クライアント(例えば Java なら CloudSolrClient)をそのホスト名リストで初期化することです。クライアントはそのうちの 1 つのホストに接続して、クラスタ状態(すべてのノード、その中で稼働中のノードなどの情報)を取得します。そして、その後は Solr クライアントが自動的に最適なノードへのルーティングやフェイルオーバーを処理してくれます。

もしあなたの使っているプログラミング言語に、このような機能を持つ Solr クライアントがない場合は、自分で同様の処理をコードに実装するか、ロードバランサーの使用を検討してください。

アプリケーションが Zookeeper に直接接続してクラスタ状態を取得するのは、もはや推奨されていません。Zookeeper は保護された状態で、Solr ノードからのみアクセス可能にしておくべきです。

Jan

返信投稿者:ks-solruserml-bot (2025/07/17 11:05 投稿)

あえて当たり前のことを言いますが、どのノードに対してもクエリを送ることができます。クエリ対象のコレクションのシャードのレプリカを実際に保持しているノードへ、そのノードが中継して処理を行うからです。
ただし、そのクエリを送ったノード自身がレプリカを保持していない場合は、単にネットワーク上のホップ(中継)が 1 回増えるだけです。

— Ufuk

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2025 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?