我一直在尝试实现SolrCloud,一切正常,直到我尝试创建一个包含6个分片的集合。我的设置如下:
solrconfig.xml
在<dataDir>/solrData/Indexes</dataDir>
中设置了此值,并将其上传到ZooKeeper集合中。请注意,这些辅助磁盘既不是NAS也不是NFS,我知道它可能会导致问题。 solr
用户拥有/solrData
。所有服务器内部通信都是通过私有IP进行的,因为所有服务都由同一家公司托管。我正在使用iptables进行防火墙,端口已打开,所有服务器都正在成功通信。配置上传到ZooKeeper是成功的,我可以通过Solr管理界面看到两个节点都可用。
当我尝试使用以下命令创建集合时,麻烦就开始了:
http://xxx.xxx.xxx.xxx:8983/solr/admin/collections?action=CREATE&name=coll1&maxShardsPerNode=6&router.name=implicit&shards=shard1,shard2,shard3,shard4,shard5,shard6&router.field=shard&async=4444
通过Solr UI日志记录,我看到同时发出多个索引创建命令,如下所示:
6/25/2015, 7:55:45 AM WARN SolrCore [coll1_shard2_replica1] Solr index directory '/solrData/Indexes/index' doesn't exist. Creating new index...
6/25/2015, 7:55:45 AM WARN SolrCore [coll1_shard1_replica2] Solr index directory '/solrData/Indexes/index' doesn't exist. Creating new index...
最终,任务报告为完成,但在日志中,我有锁定错误:
Error creating core [coll1_shard2_replica1]: Lock obtain timed out: SimpleFSLock@/solrData/Indexes/index/write.lock
SolrIndexWriter was not closed prior to finalize(), indicates a bug -- POSSIBLE RESOURCE LEAK!!!
Error closing IndexWriter
如果我查看云图,可能会创建几个分片,其他分片已关闭或正在恢复,如果我重新启动Solr,则无法启动任何内核。
现在,我知道您要说什么:关注this SO post并将solrconfig.xml
锁定设置更改为:
<unlockOnStartup>true</unlockOnStartup>
<lockType>simple</lockType>
我做到了,并且它没有任何影响。因此问题。我将不得不将一个Solr实例发布到生产中,我讨厌这样做。有人知道如何解决这个问题吗?
答案 0 :(得分:1)
根据您提供的日志条目,看起来Solr可能正在为同一文件夹中的EACH分片创建数据(索引)目录。
Solr index directory '/solrData/Indexes/index' doesn't exist. Creating new index...
此消息针对两个不同的集合显示,并且它引用了相同的位置。我通常做的是将我的Solr Home更改为另一个目录,在该目录下所有集合&#34; instance&#34;东西将被创建。然后我手动编辑每个分片的core.properties以指定索引数据的位置。