Zookeeper-solrCloud-tomcat整合部署
1. 准备工作
1. 下载solr(本文使用的是solr4.3.1): http://www.apache.org/dyn/closer.cgi/lucene/solr
2. 下载tomcat(本文apache-tomcat-8.0.0-RC1): http://tomcat.apache.org/download-80.cgi
3. 下载安装jdk(1.5以上版本),并配置环境变量(必须配置JAVA_HOME)
http://www.oracle.com/technetwork/java/javase/downloads/index.html
4. 关于solrCloud的更多解释请参阅:http://wiki.apache.org/solr/SolrCloud/
2. 配置步骤
1. 在F盘新建solrCloud文件夹,将下载的solr和tomcat复制到这个文件夹中
2. 复制4个tomcat,分别命名为:apache-tomcat-8.0.0-8081,apache-tomcat-8.0.0-8082,apache-tomcat-8.0.0-8083,apache-tomcat-8.0.0-8084,如图1(这里用4个tomcat,使用不同的端口号,模拟4台服务器)
图1
3. 打开F:\solrCloud\apache-tomcat-8.0.0-8081\conf\server.xml文件,将文件中所有的端口号都加1;以同样的方式修改其他三个tomcat,分别对8082,8083,8084的所有端口加2,加3,加4
4. 将F:\solrCloud\solr-4.3.1\dist目录下的solr-4.3.1.war文件分别复制到4个tomcat的webapps文件夹内,启动这4个tomcat,然后再关闭这4个tomcat;此时每个tomcat的webapps文件夹下会自动生成solr文件夹,现在将webapps文件夹下的solr.war文件删除即可
5. 在上文中的4个tomcat下的solr文件夹下,新建文件夹“solr_home”;将F:\solrCloud\solr-4.3.1\example\solr目录下的所有文件复制到每个tomcat下的solr_home文件夹内
6. 在F:\solrCloud\apache-tomcat-8.0.0-8081\webapps\solr\WEB-INF\web.xml中添加:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>
F:\solrCloud\apache-tomcat-8.0.0-8081\webapps\solr\solr_home
</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
在F:\solrCloud\apache-tomcat-8.0.0-8082\webapps\solr\WEB-INF\web.xml中添加:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>
F:\solrCloud\apache-tomcat-8.0.0-8082\webapps\solr\solr_home
</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
在F:\solrCloud\apache-tomcat-8.0.0-8083\webapps\solr\WEB-INF\web.xml中添加:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>
F:\solrCloud\apache-tomcat-8.0.0-8083\webapps\solr\solr_home
</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
在F:\solrCloud\apache-tomcat-8.0.0-8084\webapps\solr\WEB-INF\web.xml中添加:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>
F:\solrCloud\apache-tomcat-8.0.0-8084\webapps\solr\solr_home
</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
注:如果是solr4.2以前的版本,到这里已经配置完成了,由于solr4.3的日志模块与以前的版本不同,所以对于solr4.3还需要配置
7. 将F:\solrCloud\solr-4.3.1\example\lib\ext目录下的5个jar包,分别复制到:
F:\solrCloud\apache-tomcat-8.0.0-8081\webapps\solr\WEB-INF\lib
F:\solrCloud\apache-tomcat-8.0.0-8082\webapps\solr\WEB-INF\lib
F:\solrCloud\apache-tomcat-8.0.0-8083\webapps\solr\WEB-INF\lib
F:\solrCloud\apache-tomcat-8.0.0-8084\webapps\solr\WEB-INF\lib
目录下,分别在
F:\solrCloud\apache-tomcat-8.0.0-8081\webapps\solr\WEB-INF
F:\solrCloud\apache-tomcat-8.0.0-8082\webapps\solr\WEB-INF
F:\solrCloud\apache-tomcat-8.0.0-8083\webapps\solr\WEB-INF
F:\solrCloud\apache-tomcat-8.0.0-8084\webapps\solr\WEB-INF
目录下新建classes文件夹,将
F:\solrCloud\solr-4.3.1\example\resources目录下的log4j.properties文件分别复制到刚才创建的4个classes文件夹中;在这里可以修改一下日志保存路径:打开log4j.properties文件在第15行可以修改路径,如图2所示,是将solr的相关日志保存到tomcat根目录下的solr_logs文件夹下的solr.log文件中
图2
8. 启动这4个tomcat,在浏览器中分别访问:
会出现如图3所示界面,至此说明单个的solr和tomcat的整合已经完成
图3
9. 接下来就是要把配置好的tomcat注册到zookeeper上,形成solrCloud;由于这里使用的tomcat是绿色版本,所以要先配置一下CATALINA_HOME,分别用记事本打开
F:\solrCloud\apache-tomcat-8.0.0-8081\bin\catalina.bat
F:\solrCloud\apache-tomcat-8.0.0-8082\bin\catalina.bat
F:\solrCloud\apache-tomcat-8.0.0-8083\bin\catalina.bat
F:\solrCloud\apache-tomcat-8.0.0-8084\bin\catalina.bat
分别在文件的第一行添加如下代码:
set CATALINA_HOME=F:\solrCloud\apache-tomcat-8.0.0-8081
set CATALINA_HOME=F:\solrCloud\apache-tomcat-8.0.0-8082
set CATALINA_HOME=F:\solrCloud\apache-tomcat-8.0.0-8083
set CATALINA_HOME=F:\solrCloud\apache-tomcat-8.0.0-8084
10. 打开F:\solrCloud\apache-tomcat-8.0.0-8081\webapps\solr\solr_home\solr.xml文件,修改倒数第4行,hostPort="${jetty.port:8983}"改为 hostPort="8081",其他3个tomcat的solr.xml采用同样方式修改,主机端口号分别为:8082,8083,8084
(这里通过修改defaultCoreName="video"和<corename="video" instanceDir="collection1" />,可以修改core的名字,由于这里是针对视频的搜索,本文的name="video")
11. 用记事本打开F:\solrCloud\apache-tomcat-8.0.0-8081\bin\catalina.bat文件,在第2行输入如下代码:
set JAVA_OPTS=-Dbootstrap_confdir=../webapps/solr/solr_home/collection1/conf-Dcollection.configName=clusterconf -DzkRun -DzkHost=localhost:9081-DnumShards=2
(这里-DnumShards=2,表示分两个片)
在其他3个tomcat的catalina.bat文件中的第2行分别输入:
set JAVA_OPTS=-DzkRun -DzkHost=localhost:9081
注:这里的端口号是solr内嵌的zookeeper的端口号,内嵌的zookeeper的端口号默认是tomcat的端口号+1000,这里zookeeper运行在端口号为8081的tomcat上,所以要将其他三个tomcat都注册到第一个tomcat的zookeeper上
12. 在浏览器中访http://localhost:8081/solr/#/~cloud,可以看到如图4的界面,全部配置完成。
图4
补充:
1. 如果修改配置以后,记得要删除每个tomcat,
F:\solrCloud\apache-tomcat-8.0.0-8083\webapps\solr\solr_home路径下的zoo_data文件夹
2. schema.xml和solrconfig.xml文件所在位置
F:\solrCloud\apache-tomcat-8.0.0-8081\webapps\solr\solr_home\collection1\conf
根据需求配置schema.xml文件时,必须保证所有的tomcat下的配置一样
3. 关于IK分词器的配置,参考:http://blog.csdn.net/wzg_911/article/details/10456199