Solr之——SolrCloud5.2.1+tomcat7+zookeeper3.4.6环境搭建

来源:互联网 发布:淘宝好评怎么改成差评 编辑:程序博客网 时间:2024/05/16 01:38

环境:Windows 7

tomcat-7.0.56 下载地址:http://tomcat.apache.org/download-70.cgi

Zookeepr v3.4.6 下载地址:http://apache.fayea.com/zookeeper/

solr-5.2.1 下载地址: http://archive.apache.org/dist/lucene/solr/

二、部署过程

1、部署单机版Tomcat7 +Solr5.2.1

第一步:在D盘根目录下建立solrCloud目录。并把apache-tomcat-7.0.56.zip解压到solrCloud目录下,复制apache-tomcat-7.0.56重命名为tomcat7_ser1

如图所示:

第二步,在solrCloud目录下新建solr_home_1 文件夹如下图,并在目录下,创建 home  和 server 文件夹

第三步:把solr-5.2.1\example\example-DIH\solr指定文件复制到solr_home_1\home目录下,如下图


第四步:把solr-5.2.1\server\webapps\solr.war复制到solr_home_1\server目录下。solr.war解压,解压后将solr.war文件删除,如下图



第五步:修改D:/solrCloud/solr_home_1/server/solr/WEB-INF目录下的web.xml文件,里面修改solr/homevalue

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <env-entry>  
  2.    <env-entry-name>solr/home</env-entry-name>  
  3.    <env-entry-value>D:/solrCloud/solr_home_1/home</env-entry-value>  
  4.    <env-entry-type>java.lang.String</env-entry-type>  
  5. </env-entry>  

如下图:


第六步:因为我们未将solr服务放到tomcat webapps下面,所以需要修改D:/solrCloud/tomcat7_ser1/conf/server.xml指向solr服务路径。

在Host节点下加入如下代码:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <Context path="/solr" docBase="D:/solrCloud/solr_home_1/server/solr">  
  2.     <Environment name="/solr/home" type="java.lang.String" value="D:/solrCloud/solr_home_1/home" override="true"/>  
  3. </Context>  
如下图:

第七步:将solr-5.2.1\distsolr-5.2.1\server\lib\ext目录下的jar包复制到solr_home_1\server\solr\WEB-INF\lib



第八步:现在单机版本的就已经配置OK了。启动tomcat,访问http://localhost:8080/solr


2、配置多Tomcat+solr同时运行

第一步:
把tomcat7_ser1复制2份,分别命名tomcat7_ser2,tomcat7_ser3; 
把solr_home_1复制2份,分别命名solr_home_2,solr_home_3。
目录结构如下


第二步:修改D:\solrCloud\tomcat7_ser*\conf\server.xml配置

1、 修改 tomcat7_ser* 分别对应 各自solrhome* 和 solr 服务 。
如下图:tomcat7_ser1对应solr_home_1、2对应2 、3对应3 

2、  为了三个tomcat能够在一台机器上同时启动,需要在server.xml修改tomcat的端口信息。修改方案如下:


第三步:配置各个tomcatsolr之间的关系,修改D:\solrCloud\solr_home_*\server\solr\WEB-INF目录下的web.xml文件(对应关系)

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <env-entry>  
  2.    <env-entry-name>solr/home</env-entry-name>  
  3.    <env-entry-value>D:/solrCloud/solr_home_1/home</env-entry-value>  
  4.    <env-entry-type>java.lang.String</env-entry-type>  
  5. </env-entry>  

第四步:验证修改是否成功,依次启动三个Tomcat。并在浏览器输入如下的URL

http://localhost:8080/solr/

http://localhost:8081/solr/

http://localhost:8082/solr/

如果都能正常访问到solradmin页面,那么说明配置是成功的。否则就需要检查哪里错了或者遗漏了。

3、配置ZooKeeper集群

这部分的内容与前面tomcat+solr是没有关联的

第一步:解压zookeeper-3.4.6.tar.gzD:\solrCloud目录,重命名为zookeeper-1

 如图所示:


第二步:把D:\solrCloud\zookeeper-1\conf\目录下的zoo_sample.cfg修改为zoo.cfg。并写入如下的配置参数:

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. tickTime=2000  
  2. initLimit=10  
  3. syncLimit=5  
  4. dataDir=D:/solrCloud/zookeeper-1/data  
  5. dataLogDir=D:/solrCloud/zookeeper-1/datalog  
  6. clientPort=2181  
  7. #autopurge.purgeInterval=1  
  8. server.1=127.0.0.1:2881:3881  
  9. server.2=127.0.0.1:2882:3882  
  10. server.3=127.0.0.1:2883:3883  
如下图所示:


并且按照配置创建相应的datadatalog目录。如果不不创建目录是无法正常启动的


data目录中创建文件myid(不需要后缀名),在myid文件中写入数字1并保存退出


第三步:把zookeeper-1复制2份,分别命名为zookeeper-2zookeeper-3。然后修改各个zookeeper-*conf目录下zoo.cfgdataDirdataLogDirclientPort。修改方案如下:


并且修改每个data目录下的myid文件中的内容。zookeeper-11zookeeper-22zookeeper-33

如下图所示:


第四步:启动三个zookeeper。并验证是否配置成功。目录结构以及启动目录如下图:


注意:连接第一台时有异常信息,不用管,等都连接起来就没有异常了。

进入cmd 命令,输入:netstat-ano|findstr 2181 查看端口是否启用


4、搭建Tomcat7+ solr-5.2.1+zookeeper3.4.6集群

前面tomcat+solr能够启动和访问了,而且zookeeper也能启动成功了。接下来就需要把他们关联起来。大家看那么多贴子应该知道(当然不知道也要记住这个知识点):solrcloud的所有配置需要zookeeper统一管理

第一步:将需要的配置库集中放到一个目录中。

D:\solrCloud下创建cloud_conf文件夹作为配置库,如下图:


solr-5.2.1\server\solr\configsets\sample_techproducts_configs\conf下配置文件复制到cloud_conf文件夹中。(也可以使用solr-5.2.1\example\example-DIH\solr\solr\conf中的配置文件,我这里复制的就是solr-5.2.1\example\example-DIH\solr\solr\conf中的配置文件)


第二步:配置zookeeper路径

D:\solrCloud\tomcat7_ser1\bin\catalina.bat文件中,我是在 setlocal上一行添加:

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. set JAVA_OPTS=-Dbootstrap_confdir=D:/solrCloud/cloud_conf -Dcollection.configName=myconf -DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 -DnumShards=3  
如下图:


配置参数解释:

-DzkHost是用来指定zookeeper服务器的ip和端口。

-Dnumshareds=3用来指定当前集群中分片数为3

-Dcollection.configName  是在指定你的配置文件上传到zookeeper后的名字,省略这个参数将导致配置名字为默认的“configuration1

-Dbootstrap_confdir zooKeeper需要准备一份集群配置的副本,所以这个参数是告诉SolrCloud这些配置是放在哪里。同时作为整个集群共用的配置文件。可以看作是第一份solr配置。因为后续我们可以通过上传,来实现多collection

其余tomcat7_ser* catalina.bat设置

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. set JAVA_OPTS= -DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183  

第三步:  因为配置由zookeeper统一管理了,所以home下面的solr配置就不起作用了。删除D:\solrCloud\solr_home_*\home\solr文件夹, 修改配置solr.xml,如下图


同时,solr.xml改成如下所示:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
  2. <solr>  
  3.   <solrcloud>  
  4.     <str name="host">${host:}</str>  
  5.     <int name="hostPort">${jetty.port:8080}</int>  
  6.     <str name="hostContext">${hostContext:solr}</str>  
  7.     <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>  
  8.     <int name="zkClientTimeout">${zkClientTimeout:30000}</int>  
  9.     <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int>  
  10.     <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>  
  11.   </solrcloud>  
  12.   <shardHandlerFactory name="shardHandlerFactory"  
  13.     class="HttpShardHandlerFactory">  
  14.     <int name="socketTimeout">${socketTimeout:600000}</int>  
  15.     <int name="connTimeout">${connTimeout:60000}</int>  
  16.   </shardHandlerFactory>  
  17. </solr>  

hostPort 修改为对应的tomcat端口号 8080 80818082

第四步:重启tomcat。访问任何一个端口都成,比如: http://localhost:8081,能正常访问,且菜单中,出现了Cloud说明我们已经部署成功了




三、问与答

问题一:点击Cloud可以看到Cloud还没有形成分部式分支的图片。是不是有问题?

答:这说明我这现在服务器是干净的,需要我们创建Core来实现是属性那个Collection、那个Shard。当我们创建完Core后分支图就会展现出来了。

我们可以看下Cloud 的 Tree 下面就可以看到我们上传的配置文件,我上传时 -Dcollection.configName=myconf 所以这里也是显示myconf


问题二: 如何创建Core?

答:输入 name , instanceDir, collection, shard,点击AddCore。 说明下,当collection 名称样的core 索引是通用的。(反之collection不一样则索引之前不可相互访问了)

即 你在 new_core 下面创建的索引,在new_core1下面也是能够查询到的。 当我们创建完core之后,分支图就已经出现了。如下:



问题三:如何上传另一份collection

答: 在window cmd模式

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. java -classpath .;D:\solrCloud\solr_home_1\server\solr\WEB-INF\lib\* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 -confdir D:\solrCloud\cloud-config -confname mycollection  
命令说明:
上传(upconfig) 到指定的服务(-zkhost 27.0.0.1:2181, 127.0.0.1:2182, 127.0.0.1:2183)  配置文件路径(-confdir):D:\solrCloud\cloud-config。 配置名称(-confname)为: mycollection
注: 要添加 D:\solrCloud\solr_home_1\server\solr\WEB-INF\lib\*  cmd才能识别  org.apache.solr.cloud.ZkCLI 的命令

问题四:如何删除服务器配置文件

答:在window cmd 模式

1、指定文件删除:

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. java -classpath .;D:\solrCloud\solr_home_1\server\solr\WEB-INF\lib\* org.apache.solr.cloud.ZkCLI -cmd clear /configs/mycollection -zkhost 127.0.0.1:2181,127.0.0.1:2281,127.0.0.1:2381  
  2. 说明:清空(clear) /configs 下的 mycollection  文件夹。  
  3. 如下只有mycollection一份配置了:  


2、删除所有

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. java -classpath .;D:\solrCloud\solr_home_1\server\solr\WEB-INF\lib\* org.apache.solr.cloud.ZkCLI -cmd clear /configs -zkhost 127.0.0.1:2181,127.0.0.1:2281,127.0.0.1:2381  

说明:清空(clear)/configs  文件。因为上传的所有zookeeper 都是保存到 /configs 目录下面的,所以当我们删除configs   即将所有配置都删除了。

删除所有后:

0 0