SolrCloud入門

SolrCloudは、インデックスされたコンテンツとクエリリクエストを複数のサーバーに分散するための、高可用性でフォールトトレラントな環境を提供するように設計されています。

これは、データが複数の部分(シャード)に分割され、複数のマシンでホストできるシステムであり、レプリカはスケーラビリティとフォールトトレランスの両方の冗長性を提供し、ZooKeeperサーバーは全体の構造を管理して、インデックス作成と検索リクエストの両方を適切にルーティングできるようにします。

このセクションでは、SolrCloudとその内部動作を詳細に説明しますが、始める前に、達成しようとしていることを把握しておくことが最善です。

このページでは、SolrをSolrCloudモードで開始するための簡単なチュートリアルを提供します。これにより、インデックス作成時やクエリ配信時のシャード間の相互作用を理解することができます。そのため、単一マシン上でSolrCloudを設定する簡単な例を使用します。これは明らかに本番環境ではなく、複数のサーバーまたは仮想マシンを含みます。本番環境では、「localhost」ではなく実際のマシン名を使用します。

このセクションでは、スタートアップスクリプトと特定のconfigsetを使用してSolrCloudクラスタを開始する方法を学習します。

このチュートリアルでは、Solrの基本的な使用方法を既に理解していることを前提としています。復習が必要な場合は、Solrチュートリアルを参照して、Solrの概念を理解してください。その練習の一環としてドキュメントをロードする場合は、これらのSolrCloudチュートリアル用にSolrを新しくインストールし直してください。

セキュリティ上の理由から、Solrノードはデフォルトでlocalhostからの接続のみを受け入れます。複数のノードでSolrCloudデプロイメントを設定する管理者は、この設定をオーバーライドする必要があります。詳細については、ネットワーク設定セクションを参照してください。

SolrCloudの例

対話型起動

bin/solrスクリプトを使用すると、SolrCloudモードでSolrノードを起動し、コレクションを追加するプロセスを案内してくれるため、SolrCloudを簡単に開始できます。開始するには、次のように実行します。

$ bin/solr -e cloud

これにより、埋め込みZooKeeperを使用した単純なSolrCloudクラスタの設定手順を案内する対話型セッションが開始されます。

このスクリプトは最初に、ローカルクラスタで実行するSolrノードの数を尋ねます。デフォルトは2です。

Welcome to the SolrCloud example!

This interactive session will help you launch a SolrCloud cluster on your local workstation.
To begin, how many Solr nodes would you like to run in your local cluster? (specify 1-4 nodes) [2]

このスクリプトは最大4ノードの起動をサポートしていますが、最初はデフォルトの2を使用することをお勧めします。これらのノードはそれぞれ単一のマシン上に存在しますが、異なるサーバー上での動作を模倣するために異なるポートを使用します。

次に、スクリプトは各Solrノードをバインドするポートを要求します。例えば

 Please enter the port for node1 [8983]

各ノードで使用可能なポートを選択してください。最初のノードのデフォルトは8983、2番目のノードは7574です。スクリプトは各ノードを順番に起動し、サーバーを起動するために使用するコマンドを表示します。例えば

$ bin/solr start -cloud -s example/cloud/node1/solr -p 8983

最初のノードは、ポート9983にバインドされた埋め込みZooKeeperサーバーも起動します。最初のノードのSolrホームは、-sオプションで示されているように、example/cloud/node1/solrにあります。

クラスタ内のすべてのノードを起動した後、スクリプトは作成するコレクションの名前を要求します。

 Please provide a name for your new collection: [gettingstarted]

推奨されるデフォルトは"gettingstarted"ですが、特定の検索アプリケーションに適した名前を選択することもできます。

次に、スクリプトはコレクションを分散させるシャードの数を要求します。SolrCloud シャードとインデックス作成については後で詳しく説明しますが、不明な場合は、デフォルトの2を使用することをお勧めします。これにより、コレクションがSolrCloudクラスタ内の複数のノードに分散される様子を確認できます。

次に、スクリプトは各シャードに対して作成するレプリカの数を要求します。これもこのガイドの後半で詳しく説明しますが、不明な場合は、デフォルトの2を使用してください。これにより、SolrCloudでのレプリケーションの処理方法を確認できます。

最後に、スクリプトはコレクションの構成ディレクトリの名前を要求します。_defaultまたはsample_techproducts_configsを選択できます。構成ディレクトリはserver/solr/configsets/から取得されるため、必要に応じて事前に確認できます。_default構成は、ドキュメントのスキーマを設計中で、Solrで実験しながら柔軟性を必要とする場合に便利です(スキーマレス機能を持つため)。ただし、コレクションを作成した後、スキーマレス機能を無効にしてスキーマをロックダウンするか(その後インデックスされるドキュメントがスキーマを変更しないようにするため)、自分でスキーマを構成できます。これは、次のように実行できます(コレクション名がmycollectionであると仮定します)。

V1 API

$ curl http://host:8983/solr/mycollection/config -d '{"set-user-property": {"update.autoCreateFields":"false"}}'

V2 API SolrCloud

$ curl http://host:8983/api/collections/mycollection/config -d '{"set-user-property": {"update.autoCreateFields":"false"}}'

この時点で、ローカルSolrCloudクラスタに新しいコレクションが作成されているはずです。これを確認するには、statusコマンドを実行します。

$ bin/solr status

このプロセス中にエラーが発生した場合は、example/cloud/node1/logsexample/cloud/node2/logsにあるSolrログファイルを確認してください。

Solr Admin UIのクラウドパネルにアクセスして、コレクションがクラスタ全体にどのように展開されているかを確認できます。https://127.0.0.1:8983/solr/#/~cloud。Solrは、healthcheckコマンドを使用してコレクションの基本的な診断を実行する方法も提供しています。

$ bin/solr healthcheck -c gettingstarted

healthcheckコマンドは、コレクション内の各レプリカに関する基本的な情報(ドキュメントの数、現在の状態(アクティブ、ダウンなど)、アドレス(クラスタ内のレプリカが存在する場所))を収集します。

ドキュメントは、Postツールを使用してSolrCloudに追加できます。

SolrCloudモードでSolrを停止するには、bin/solrスクリプトを使用し、次のようにstopコマンドを実行します。

$ bin/solr stop -all

-nopromptで開始

インタラクティブセッションではなく、すべてのデフォルト値を使用してSolrCloudを起動することもできます。そのコマンドは以下のとおりです。

$ bin/solr -e cloud -noprompt

ノードの再起動

bin/solrスクリプトを使用してSolrCloudノードを再起動できます。たとえば、ポート8983で実行されている(埋め込みZooKeeperサーバーを持つ)node1を再起動するには、次のようにします。

$ bin/solr restart -c -p 8983 -s example/cloud/node1/solr

ポート7574で実行されているnode2を再起動するには、次のようにします。

$ bin/solr restart -c -p 7574 -z localhost:9983 -s example/cloud/node2/solr

node2を起動する際にZooKeeperアドレス(-z localhost:9983)を指定する必要があることに注意してください。これにより、node1とクラスタに参加できます。

クラスタへのノードの追加

既存のクラスタにノードを追加することは少し高度であり、Solrについてもう少し理解する必要があります。スタートアップスクリプトを使用してSolrCloudクラスタを起動したら、次のようにして新しいノードを追加できます。

$ mkdir <solr.home for new Solr node>
$ bin/solr start -cloud -s solr.home/solr -p <port num> -z <zk hosts string>

上記では、Solrホームディレクトリを作成する必要があることに注意してください。

"bin/solr -e cloud"で開始された例にノードを追加する例(ディレクトリ構造付き)

$ mkdir -p example/cloud/node3/solr
$ bin/solr start -cloud -s example/cloud/node3/solr -p 8987 -z localhost:9983

上記のコマンドは、Solrホームがexample/cloud/node3/solrに設定された、ポート8987で別のSolrノードを起動します。新しいノードは、ログファイルをexample/cloud/node3/logsに書き込みます。

SolrCloudの例の使い方に慣れてきたら、Solrを本番環境に移行するで説明されているプロセスを使用して、本番環境でSolrCloudノードを設定することをお勧めします。