最近几个月装了好几回windows solrcloud伪分布式,参考了其余博客,我本身也总结了一下,包含一些注意和一些错误的解决方法。
参考博客:
http://blog.csdn.net/wanghui2008123/article/details/37813525
http://blog.csdn.net/vltic/article/details/20998269java
系统:windows server 2008 64位
软件:jdk-7u80-windows-x6四、apache-tomcat-7.0.70、solr-4.10.三、zookeeper-3.4.6
注意:不一样版本的solr配置不同。web
一台服务器部署3个节点。apache
第一步:在D盘根目录下创建solrCloud目录。并把apache-tomcat-7.0.70.tar.gz解压到SolrCloud目录下,重命名为tomcat-server_1。把solr-4.10.3.zip解压,并把solr-4.10.3/example/solr目录下的solr文件夹复制到SolrCloud目录下,重命名为solr_home_1。以下图:bootstrap
第二步:把solr-4.10.3\example\webapps\solr.war复制到tomcat-server_1/webapps目录下。windows
第三步:修改D:\solrCloud\tomcat-server_1\bin目录下的catalina.bat文件,里面加入tomcat的启动参数,,参数以下:浏览器
set JAVA_OPTS=-Dsolr.solr.home=D:/SolrCloud/solr_home_1tomcat
配置solr/home的第二种方法,在D:\SolrCloud\tomcat-server_1\webapps\solr\WEB-INF\web.xml中配置:服务器
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>D:\\SolrCloud\\solr_home_1</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>app
关于solr/home的设置,其实有三种方法:一、在solr的web.xml中设置,在tomcat启动时附带参数,还有就是本文的方法。webapp
第二种方法,必须首先启动,tomcat,而后solr.war解压后才能找到solr\WEB-INF
第四步:若是solr版本小于4.3,此时单机solr版本就能够启动了,可是咱们是4.10.3。启动 tomcat-server_1 ,发现是会报错,此时你会发现D:\SolrCloud\tomcat-server_1\webapps\solr.war被解压成solr文件目录。此处能够删除 D:\SolrCloud\tomcat-server_1\webapps\solr.war,也能够不删除,我建议删除。
第五步:把solr-4.10.3\solr-4.10.3\example\lib\ext下面全部jar包拷贝到,D:\SolrCloud\tomcat-server_1\webapps\solr\WEB-INF\lib目录
第六步:在D:\SolrCloud\tomcat-server_1\webapps\solr\WEB-INF建立classes目录,将\solr-4.10.3\example\resources目录下的log4j.properties文件拷贝刚刚创建的classes文件下,而且修改第16行:
log4j.appender.file.File=../solr_logs/solr.log
注意:日志路径是本身制定的。
第七步:启动tomcat,并在浏览器中输入:http://localhost:8080/solr/ 验证是否配置成功。若是配置成功,浏览器的页面以下:
第一步:把tomcat-server_1复制2份,分别命名tomcat-server_2,tomcat-server_3;把solr_home_1复制2份,分别命名solr_home_2,solr_home_3。,目录以下:
第二步:为了三个tomcat可以在一台机器上同时启动,须要修改tomcat的端口信息,即修改 修改位置在D:\solrCloud\tomcat-server_*\conf\server.xml里面的参数,修改方案以下:
shutdown port | HTTP/1.1 Port | AJP/1.3 port | |
tomcat-server_1 | 8005 | 8080 | 8009 |
tomcat-server_2 | 8015 | 8081 | 8019 |
tomcat-server_3 | 8025 | 8082 | 8029 |
第三步:修改各个tomcat服务器catalina.bat文件里面的solrhome
tomcat-server_2修改为set JAVA_OPTS=-Dsolr.solr.home=D:/solrCloud/solr_home_2
tomcat-server_3修改为set JAVA_OPTS=-Dsolr.solr.home=D:/solrCloud/solr_home_3
第四步:验证修改是否成功,依次启动三个Tomcat。并在浏览器输入以下的URL:
http://localhost:8080/solr/
http://localhost:8081/solr/
http://localhost:8082/solr/
若是都能正常访问到solr的admin页面,那么说明配置是成功的。不然就须要检查哪里错了或者遗漏了。
这部分的内容与前面tomcat+solr是没有关联的。
第一步:解压zookeeper-3.4.6.tar.gz到D:/solrCloud目录,重命名为zk-server_1。
第二步:把D:\solrCloud\zk-server_1\conf\目录下的zoo_sample.cfg修改成zoo.cfg。并写入以下的配置参数:
tickTime=2000 initLimit=5 syncLimit=2 dataDir=D:/SolrCloud/zk-server_1/data clientPort=2181 dataLogDir=D:/SolrCloud/zk-server_1/logs server.1=127.0.0.1:2888:3888 server.2=127.0.0.1:2889:3889 server.3=127.0.0.1:2890:3890 |
而且按照配置建立相应的data和logs目录。若是不不建立目录是没法正常启动的。在data目录中建立文件myid(不须要后缀名),在myid文件中写入数字1并保存退出。
第三步:把zk-server_1复制2份,分别命名为zk-server_二、zk-server_3。而后修改各个zk-server的conf目录下zoo.cfg的dataDir和dataLogDir和clientPort。修改方案以下:
dataDir | dataLogDir | clientPort | |
zk-server_1/conf/zoo.cfg | D:/solrCloud/zk-server_1/data | D:/solrCloud/zk-server_1/logs | 2181 |
zk-server_2/conf/zoo.cfg | D:/solrCloud/zk-server_2/data | D:/solrCloud/zk-server_2/logs | 2182 |
zk-server_3/conf/zoo.cfg | D:/solrCloud/zk-server_3/data | D:/solrCloud/zk-server_3/logs | 2183 |
而且修改每一个data目录下的myid文件中的内容。zk-server_1是1, zk-server_2是2,zk-server_3是3 。
第四步:启动三个zk-server(D:\SolrCloud\zk-server_*\bin\zkServer.cmd)。并验证是否配置成功。注意:链接第一台时有异常信息,不用管,等都链接起来就没有异常了。
前面tomcat+solr可以启动和访问了,并且zookeeper也能启动和访问了。接下来就须要把他们关联起来。
第一步:修改solr_home_*的solr.xml配置信息,把hostPort分别修改为对应的tomcat端口。
solr_home_1/solr.xml
solr_home_2/solr.xml
<int name="hostPort">${jetty.port:8081}</int>
solr_home_3/solr.xml
<int name="hostPort">${jetty.port:8082}</int>
第二步:修改tomcat-server_*中的catalina.bat的参数信息。
tomcat-server_1参数信息以下:
set JAVA_OPTS=-Dsolr.solr.home=D:/solrCloud/solr_home_1 -Dbootstrap_confdir=D:/solrCloud/solr_home_1/collection1/conf -Dcollection.configName=myconf -DnumShards=3 -DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
tomcat-server_2的参数信息以下:
set JAVA_OPTS=-Dsolr.solr.home=D:/solrCloud/solr_home_2 -DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
tomcat-server_3的参数信息以下:
set JAVA_OPTS=-Dsolr.solr.home=D:/solrCloud/solr_home_3 -DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
参数解释:-DnumShards=3 表示 3个分片,因为3个节点,系统默认会一个节点一个分片。
第三步:因为zookeeper已经启动,先tomcat-server_1,后启动其它的tomcat-server。启动完成后,在浏览器中输入:
http://localhost:8080/solr/#/~cloud
http://localhost:8081/solr/#/~cloud
http://localhost:8082/solr/#/~cloud
以下图:
注意:在第三步中,第一次启动tomcat集群模式时候,必须先tomcat-server_1,后启动其它的tomcat-server,这里我通过屡次测试过。因为tomcat-server_1中有DnumShards=3的参数,集群会知道这个collection须要分为3个shard,若是先启动其余tomcat-server,最后启动tomcat-server_1,集群会默认collection只是一个shard作3个备份。
因为我这个步骤是参考别的博文的,因此遇到了一个错误,只要tomcat配置上zookeeper,就不能启动,单机就能启动,大概提示错误以下:org.apache.solr.common.SolrException: Could not load config for solrconfig.xml
窗口报次信息的前一行提示一个错误,大概意思是:shard1已经注册过了
缘由:因为咱们安装的时候不停的启动tomcat,zookeeper,且有修改tomcat的启动文件,致使zookeeper已经记录了shard1信息,tomcat-server_*启动时候又去注册。
解决方法:清空以下目录
D:\SolrCloud\zk-server_1\data\version-2
D:\SolrCloud\zk-server_2\data\version-2
D:\SolrCloud\zk-server_3\data\version-2
而后从新启动zookeeper,重启动tomcat就行了。
如何避免这个错误:这个错误真正的致使缘由是 tomcat-server_1参数 测配置
set JAVA_OPTS=-Dsolr.solr.home=D:/solrCloud/solr_home_1 -Dbootstrap_confdir=D:/solrCloud/solr_home_1/collection1/conf -Dcollection.configName=myconf -DnumShards=3 -DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
若是咱们配置的时候不配置红色部分,能够本身建立collection
http://localhost:8080/solr/admin/collections?action=CREATE&name= collection 1&numShards=3