Я пытался реализовать SolrCloud, и все работает нормально, пока я не попытаюсь создать коллекцию из 6 осколков. Моя установка выглядит следующим образом:
- 5 виртуальных серверов под управлением Ubuntu 14.04, размещенных одной компанией в разных центрах обработки данных
- 3 сервера под управлением ZooKeeper 3.4.6 для ансамбля
- 2 сервера, на каждом из которых работает сервер Solr 5.1.0 (Jetty)
- Каждый экземпляр Solr имеет дополнительный диск ext4 емкостью 2 ТБ для индексов, смонтированный в / 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 я вижу, что несколько команд создания индекса выполняются одновременно, например:
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, ни одно из ядер не сможет запуститься.
Теперь я знаю, что вы собираетесь сказать: следите за этим сообщением SO и измените solrconfig.xml
настройки блокировки на следующие:
<unlockOnStartup>true</unlockOnStartup>
<lockType>simple</lockType>
Я сделал это, , и это ни на что не повлияло. Отсюда вопрос. Мне вот-вот придется выпустить в производство единственный экземпляр Solr, чего я ненавижу. Кто-нибудь знает, как это исправить?