使用solr4.6,Tomcat部署SolrCloud

使用solr4.6在Tomcat中部署SolrCloud与前期的版本有些不同.在此记录下.

1.部署版本

JDK-1.7.0_51
Tomcat-7.0.50
Solr-4.6.0
Zookeeper-3.4.5

2.部署机器
SolrCloud:
192.168.4.11
192.168.4.12
192.168.4.14
192.168.4.15

Zookeeper(部署省略):
zoo1:2181,zoo2:2181,zoo3:2181


3.下载Tomcat-7.0.50,解压到/opt/tomcat-7.0.50;下载Solr-4.6.0解压到/data/solr-4.6.0.
注意:
(1)其中example/webapps/中的solr.war缺少example/lib/ext的包,
(2)也缺少example/resource/log4j.properties,不加的话没有日志输出
请将solr.war解压:
jar xvf solr.war
将example/lib/ext/*拷贝到WEB-INF/lib
将example/resource/log4j.properties拷贝到WEB-INF/classes
再进行打包jar cvf solr.war *

4.配置tomcat,将下面的xml保存在/opt/tomcat-7.0.50/conf/Catalina/localhost/solr.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Context docBase="/data/solr-4.6.0/example/webapps/solr.war" crossContext="true" >
  <Environment name="solr/home" type="java.lang.String" value="/data/solr-4.6.0/example/solr" override="true" />
</Context>

 
5.配置solr

   (1).配置/data/solr-4.6.0/example/solr/solr.xml,其中的host和hostPort根据机器做下调整

<?xml version="1.0" encoding="UTF-8" ?>
<solr>
 <solrcloud>
    <str name="host">192.168.4.11</str>
    <str name="zkHost">zoo1:2181,zoo2:2181,zoo3:2181</str>
    <int name="hostPort">8080</int>
    <str name="hostContext">solr</str>
    <int name="zkClientTimeout">${zkClientTimeout:15000}</int>-->
    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
  </solrcloud>

  <shardHandlerFactory name="shardHandlerFactory"
    class="HttpShardHandlerFactory">
    <int name="socketTimeout">${socketTimeout:15000}</int>
    <int name="connTimeout">${connTimeout:15000}</int>
  </shardHandlerFactory>

  (2)配置/data/solr-4.6.0/example/solr/collection1/core.properties,其中shard根据分片数据调整,本示例是2分片2复制,所以2台机器设置为shard1,2台设为shard2

name=collection1
shard=shard1
loadOnStartup=true
collection=collection1
properties=collection1/

6.上传collection1的配置信息到zookeeper

   (1)上传配置:将solr.war解压一个目录,在这个目录中的WEB-INF执行

java -cp .:./classes/*:./lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost zoo1:2181,zoo2:2181,zoo3:2181 -confdir /data/solr-4.6.1/example/solr/collection1/conf -confname collection1

   (2)将上传的配置和collections连接

   

java -cp .:./classes/*:./lib/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -zkhost zoo1:2181,zoo2:2181,zoo3:2181 -collection collection1 -confname collection1

7.启动Tomcat

   依次启动4个Tomcat: ./bin/startup.sh && tail -f logs/catalina.out

8.测试新建collection

http://192.168.4.11:8080/solr/admin/collections?action=CREATE&name=test&numShards=2&replicationFactor=2

应该返回success的xml.如果solr.xml使用老的配置模式,会报org.apache.solr.client.solrj.impl.HttpSolrServer$RemoteSolrException:Error CREATEing SolrCore 'test_shard1_replica2': 192.168.4.11:8080_solr_test_shard1_replica2 is removed异常.

9.打开http://192.168.4.15:8080/solr/#/~cloud,查看Cloud/Graph菜单,可以展示如下结构图



 

 10.参考资料

https://cwiki.apache.org/confluence/display/solr/Command+Line+Utilities

https://cwiki.apache.org/confluence/display/solr/Moving+to+the+New+solr.xml+Format

猜你喜欢

转载自ruijf.iteye.com/blog/2007852