sweli 发表于 2017-12-19 21:40:46

solr单机多实例部署文件锁冲突解决的方法

  给出一个有问题的单机多tomcat实例引用同一个solr实例部署图。
  这样的部署必定造成一个问题。启动第二个tomcat实例时,一定会报索引目录文件锁已经被占用。

  

  最初的解决的方法是。有多少个tomcat实例,就部署多少个solr的war包。
  然后依次改动每一个solr的core的data路径。
  如此完毕线上部署,实在麻烦,并且easy出错!
  今天请教了位有多年solr经验的同事,最终了了这个心结。
  在Java的启动參数 -Dname=value 上做文章。在启动參数上加入一个标志这个实例的独特參数。譬如:
  

-Dmyid=server1    然后再solrconfig.xml的data路径里读取这个參数,示比例如以下:  

<dataDir>/export/data/solr_data/jd_waiter/${myid}</dataDir>    实例不同,${myid}就不同,路径也就不同。  如此一来,一台server。无论你要起多少个solr实例,都仅仅用部署一套solr war包,用同样的配置就能够了。
  化繁为简的招数。
  解释下-D<name>=<value>。java -help里的文档是。set a system property。设置一个系统属性。通过System.getProperty()方法就能够获取java启动參数里的-D值。
  

  

  

  

  
页: [1]
查看完整版本: solr单机多实例部署文件锁冲突解决的方法