共计 5605 个字符,预计需要花费 15 分钟才能阅读完成。
这篇文章将为大家详细讲解有关 windows solrcloud 伪分布式如何搭建,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
一、概述
最近几个月装了好几次 windows solrcloud 伪分布式,参考了其他博客,我自己也总结了一下,包含一些注意和一些错误的解决方法。
二、环境
系统:windows server 2008 64 位
软件:jdk-7u80-windows-x64、apache-tomcat-7.0.70、solr-4.10.3、zookeeper-3.4.6
注意:不同版本的 solr 配置不一样。
三、部署步骤
一台服务器部署 3 个节点。
3.1 单机版 Tomcat+Solr
第一步:在 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。如下图:
第二步:把 solr-4.10.3\example\webapps\solr.war 复制到 tomcat-server_1/webapps 目录下。
第三步:修改 D:\solrCloud\tomcat-server_1\bin 目录下的 catalina.bat 文件,里面加入 tomcat 的启动参数,,参数如下:
set JAVA_OPTS=-Dsolr.solr.home=D:/SolrCloud/solr_home_1
配置 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
关于 solr/home 的设置,其实有三种方法:1、在 solr 的 web.xml 中设置,在 tomcat 启动时附带参数,还有就是本文的方法。
第二种方法,必须首先启动,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/ 验证是否配置成功。如果配置成功,浏览器的页面如下:
3.2 配置多 Tomcat+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 PortAJP/1.3 porttomcat-server_1800580808009tomcat-server_2801580818019tomcat-server_3802580828029
第三步:修改各个 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 页面,那么说明配置是成功的。否则就需要检查哪里错了或者遗漏了。
3.3 配置 ZooKeeper 集群
这部分的内容与前面 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_2、zk-server_3。然后修改各个 zk-server 的 conf 目录下 zoo.cfg 的 dataDir 和 dataLogDir 和 clientPort。修改方案如下:
dataDirdataLogDirclientPortzk-server_1/conf/zoo.cfgD:/solrCloud/zk-server_1/dataD:/solrCloud/zk-server_1/logs2181zk-server_2/conf/zoo.cfgD:/solrCloud/zk-server_2/dataD:/solrCloud/zk-server_2/logs2182zk-server_3/conf/zoo.cfgD:/solrCloud/zk-server_3/dataD:/solrCloud/zk-server_3/logs2183
并且修改每个 data 目录下的 myid 文件中的内容。zk-server_1 是 1,zk-server_2 是 2,zk-server_3 是 3。
第四步:启动三个 zk-server(D:\SolrCloud\zk-server_*\bin\zkServer.cmd)。并验证是否配置成功。注意:连接第一台时有异常信息,不用管,等都连接起来就没有异常了。
3.4 配置 Tomcat+solr+zookeeper 集群
前面 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 个备份。
3.5:报错处理
由于我这个步骤是参考别的博文的,所以遇到了一个错误,只要 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
关于“windows solrcloud 伪分布式如何搭建”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。