2013-04-05 19 views
15

スタンドアロンのzookeeperを使用してSolrCloudレプリケーションをセットアップしました。しかし今、私は自分のSchema.xmlをいくつか変更し、コアをリロードしたいと思っています。問題は、単一のサーバーSolr(solrcloudなし)を実行すると新しいスキーマがロードされることですが、すべてのレプリケーション・サーバーでスキーマを再ロードする方法がわかりません。私は、サーバーにスキーマを再ロードしようとしましたが、何の影響もありませんでした。 zookeeperを使用する分散レプリケーション設定でSolrでschema.xmlを再ロードできる方法はありますか?Zookeeper solr conf(schema.xml)を再ロードする

答えて

25

私たちは変更された設定を飼い葉桶のアンサンブルにプッシュする必要があることを突き止めました。

だけ

sh zkcli.sh -cmd upconfig -zkhost 127.0.0.1:2181 -collection collection1 -confname myconf -solrhome ../solr -confdir ../solr/collection1/conf 

zkcli.shは以下

+1

をあなたが二回 '-confdir ../ Solrの/ collection1/conf'を持っています。 – zengr

+0

@ zengr:固定:) –

+0

それはすべてですか?ノードやコレクションをリロードする必要はありませんか?それがアップロードされるとすぐにコレクション全体で使用されていますか? – johnnyboy

1

は、ITは我々だけに必要なのUnixでほぼ同じになり、Windows用のコマンド、

ある例/クラウドスクリプトの下に存在し、使用Solrのパスとクラスパスのセパレータ; & :を変更してください。そのjavaコマンドはUnixでも実行する必要があるためです。コマンドについて

java -Dlog4j.configuration="file:E:/solr-5.5.1/server/scripts/cloud-scripts/log4j.properties" -classpath .;E:/solr-5.5.1/server/solr-webapp/webapp/WEB-INF/lib/*;E:/solr-5.5.1/server/lib/ext/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 192.168.42.13:2787 -confdir E:/New_Solor_Conf -confname Solor_conf 

ブリーフの詳細は以下の通り:ロギング用にlog4jの

設定。

  • -Dlog4j.configuration = "ファイル:E:実行するための/solr-5.5.1/server/scripts/cloud-scripts/log4j.properties

クラスパス" org.apacheを.solr.cloud.ZkCLI」クラス

UNIXおよびWindowsは異なる必要がありますを確認します。。(Unixの区切り文字);(Windowsのセパレータ)

  • -classpath。 ; E:/solr-5.5.1/server/solr-webapp/webapp/WEB-INF/lib/ ; E:/solr-5.5.1/server/lib/ext/
  • -zkhost 192.168.42.13/New_Solor_Conf (。私たちは、アップロードするために必要なものローカルディレクトリ)
  • -confname Solor_conf リモートインスタンス名:
  • -confdir E 2787(Solrの飼育係がを実行しているリモートホストとポート)。

あなたは正しいクラスパスを使用しない場合のように、あなたはエラーになります:私はせずに自分のローカル設定の変更をアップロードすることができる午前

Error: Could not find or load main class org.apache.solr.cloud.ZkCLI 

または

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFacto 
    ry 
      at org.apache.solr.common.cloud.SolrZkClient.<clinit>(SolrZkClient.java: 
    71) 
      at org.apache.solr.cloud.ZkCLI.main(ZkCLI.java:183) 
    Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory 
      at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
      at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 

リモートSolrボックスに物理的にログインします。それが他の人にとってもうまくいくことを願っています。

1

正しい答えが間違っています。使用する必要がありますSolr Collection API

SolrCloud用にSolr Collection APIが表示され、構成のリロードがクラスタ全体に広がります。私が知る限り、Solr Collection APIは少なくともSolr 4.8から利用できます。

手順は少し異なり、これらのAPIを使用すると、1回のAPI呼び出しでクラスタ全体の構成をリロードできます。

Solr zkcli.shユーティリティで更新した設定をアップロードするだけです。 Solr zkcli.shをZookeeper zkCli.shと混同しないように注意してください。名前は全く同じですが、目的はまったく異なります。

http://server1:8983/solr/admin/collections?action=RELOAD&name=collection1 

クラスタ全体が更新されます。

./zkcli.sh -cmd upconfig -zkhost 127.0.0.1:2181 -collection collection1 -confname myconf -confdir path/to/solr/collection1/conf 

次にあなたが設定を再ロードすることができますようには使用Solrのzkcli.shが言いました。

+0

そして、グローバルウォリアーの受け入れられた答えとの違いは何ですか? –

+0

@JackMiller質問はSolrCloud(おそらくクラスタ)に関連しています。「コア」という用語は、Solrインスタンス上の単一のインデックスを参照するために使用され、一方、「コレクション」は、SolrCloudクラスタ内の完全な論理インデックスです。 [Solr Collection API](https://cwiki.apache.org/confluence/display/solr/Collections+API)を使用すると、構成のリロードは現在のインスタンスだけでなく、クラスタ全体に広がります。ですから、Solrアーキテクチャ(例えば、複数のシャードやレプリカなど)がどれほど大きくても、コレクションAPIを常に使用してください。 – freedev

+0

これは最終的に見つかりました。*コア*の代わりにURLの* collections *でなければなりません。はい、それは重要な違いですが、回答の実際の違いがどこにあるかを明確にすることができます。最初の部分* zkcli ... upconfig *は完全に同一です。 –

1

は、これが私の仕事:

bin/solr zk -upconfig -n collectionName -d pathto/Conf_directory -z localhost:2181/solr 
+0

コアをリロードすると、コアがリロードされなくなります。しかし、それについてのドキュメントを見つけることはできません。 –

関連する問題