ZooKeeperファイル管理

SolrCloudでは、設定ファイルはZooKeeperに保存されます。

これらのファイルは、次のいずれかの場合にアップロードされます。

  • bin/solrスクリプトを使用してSolrCloudの例を開始する場合。

  • bin/solrスクリプトを使用してコレクションを作成する場合。

  • 設定セットをZooKeeperに明示的にアップロードする場合。

起動時のブートストラップ

bin/solr -e cloudを使用して初めてSolrCloudを試行すると、関連するconfigsetが自動的にZooKeeperにアップロードされ、新しく作成されたコレクションにリンクされます。

以下のコマンドは、デフォルトのコレクション名(gettingstarted)とデフォルトのconfigset(_default)をアップロードしてリンクした状態でSolrCloudを開始します。

bin/solr -e cloud -noprompt

-dオプションを使用してbin/solrスクリプトでコレクションを作成する場合、設定ディレクトリを明示的にアップロードすることもできます。例:

bin/solr create -c mycollection -d _default

この作成コマンドは、_default設定ディレクトリの複製を/configs/mycollectionの下のZooKeeperにアップロードします。コレクションを作成するための作成コマンドの詳細については、Solrコントロールスクリプトリファレンスを参照してください。

設定ディレクトリがZooKeeperにアップロードされた後、Solrコントロールスクリプトを使用して更新できます。

これらのファイルをバージョン管理下に置くことをお勧めします。

bin/solrまたはSolrJを使用した設定ファイルのアップロード

本番環境では、Configsetsは、SolrのSolrコントロールスクリプトまたはSolrJを使用して、コレクションの作成とは独立してZooKeeperにアップロードすることもできます。

以下のコマンドを使用して、bin/solrスクリプトで新しいconfigsetをアップロードできます。

bin/solr zk upconfig -n <name for configset> -d <path to directory with configset>

次のコードは、SolrJを使用してこれを実現する方法を示しています。

getConfigSetService().uploadConfig("nameForConfigset", Paths.get(localConfigSetDirectory));

設定をGit、SVNなどのバージョン管理システムに保存することを強くお勧めします。

SolrCloud設定ファイルの管理

SolrCloud設定ファイルを更新または変更するには、

  1. ソースコントロールチェックアウトプロセスを使用して、ZooKeeperから最新の構成ファイルをダウンロードします。

  2. 変更を加えます。

  3. 変更されたファイルをソースコントロールにコミットします。

  4. 変更をZooKeeperにプッシュします。

  5. 変更を有効にするためにコレクションをリロードします。

最初のクラスタ起動前にZooKeeperを準備する

同じZooKeeperインスタンスを他のアプリケーションと共有する場合は、ZooKeeperでchrootを使用する必要があります。手順については、ZooKeeper chrootを参照してください。

クラスタ全体の設定を含む特定の設定ファイルがあります。これらのいくつかはクラスタが正しく機能するために不可欠であるため、初めてSolrクラスタを開始する前に、このようなファイルをZooKeeperにアップロードする必要がある場合があります。このような設定ファイルの例(網羅的ではありません)は、security.jsonclusterprops.jsonです。

たとえば、認証を有効にする場合は、bin/solrユーティリティ(Unixの例)を使用してsecurity.jsonファイルをZooKeeperにプッシュできます。

bin/solr zk cp file:local/file/path/to/security.json zk:/security.json -z localhost:2181
solr.in.sh/solr.in.cmdZK_HOSTを事前に定義済であれば(Solrインクルードファイルの更新を参照:xref:zookeeper-ensemble.adoc#updating-solr-include-files)、上記コマンドの`-z `は不要です。