使用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