SolrCloud:无法创建集合,锁定问题

时间:2015-06-25 17:30:01

标签: solr apache-zookeeper solrcloud

我一直在尝试实现SolrCloud,一切正常,直到我尝试创建一个包含6个分片的集合。我的设置如下:

  • 5个虚拟服务器,全部运行Ubuntu 14.04,由一家公司在不同的数据中心托管
  • 为整体运行ZooKeeper 3.4.6的3台服务器
  • 2台服务器,每台服务器运行Solr 5.1.0服务器(Jetty)
  • 每个Solr实例都有一个2TB,ext4辅助磁盘用于索引,安装在/ solrData / Indexes。我通过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实例发布到生产中,我讨厌这样做。有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

根据您提供的日志条目,看起来Solr可能正在为同一文件夹中的EACH分片创建数据(索引)目录。

 Solr index directory '/solrData/Indexes/index' doesn't exist. Creating new index...

此消息针对两个不同的集合显示,并且它引用了相同的位置。我通常做的是将我的Solr Home更改为另一个目录,在该目录下所有集合&#34; instance&#34;东西将被创建。然后我手动编辑每个分片的core.properties以指定索引数据的位置。