Solr学习(三) 单独ZooKeeper(外部)实例 + SolrCloud(tomcat)实例

开场白:

简单讲述如何配置独立的外部 ZooKeeper 集群管理组件来管理 solr集群(多实例solr)

本章建立在 Solr学习(一)  、Soer学习(二)基础上进行配置。

 声明:描述的比较笼统繁琐,有偏差的地方请大家毫不留情的拍砖尴尬

完成目标: 

单zookeeper(独立)实例 + 多solr-4.2.0(tomcat)实例集群管理。

 

前期准备: 

1、下载ZooKeeper-3.4.5.tar.gz解压。

2、完成Solr-4.2.0+Tomcat6.0环境部署(如果为完成请参考Solr学习一

 

名词解释:

8080服务器:下文统称端口为8080的Tomcat6.0服务器。

9090服务器:下文统称端口为9090的Tomcat6.0服务器。

ZooKeeper:下文指ZooKeeper的项目根目录(解压后的目录,尽量不要放在中文目录中)如下图


Solr学习(三) 单独ZooKeeper(外部)实例 + SolrCloud(tomcat)实例
 开始生产:

    步骤1:在 ZooKeeper目录“D:\zookeeper-3.4.5\conf”找到“zoo_sample.cfg”文件(将其备份一下),改名为“zoo.cfg”,打开它(最好用UE打开!防止乱码!)修改里头内容为(原本很多注释。都被我干掉了!因为哥有强迫症 +_+!!)

tickTime=2000 
initLimit=10
syncLimit=5
dataDir=D:/zookeeper-3.4.5/temp
clientPort=2181

这里我们要改的是第四个配置 “dataDir”(数据文件的路径)自己设定吧。我是放在ZooKeeper下新建一个文件夹“temp”。

步骤2:

找到“ZooKeeper\\bin”目录的“zkServer.cmd”文件。 双击启动。。。。启动没有报错,说明OK。 

步骤3:

现在开始搞多个solr 实例配置,(分别有多个tomcat 每个tomcat带起1个solr实例)

之前我们配置过tomcat6.0下启动单一solr实例(详见:solr学习一),目前配置多实例(solr+tomcat)  就要解决TOMCAT端口冲突问题。 这里我不多做介绍。我的做法是打开tomcat的startup.bat 文件。  把里头的所有变量都加上2 。

例如: 

set "CURRENT_DIR=%cd%"
if not "%CATALINA_HOME%" == "" goto gotHome
改成 
set "CURRENT_DIR2=%cd%"
if not "%CATALINA_HOME2%" == "" goto gotHome 

还有server.xml 里头的端口,我这里把常用的 8080改成 9090了,8443改成 9443  反正各种变9.  只要不冲突!只要你记得你改了多少就成!这里自己折腾吧。

 

步骤4:

    偷懒!把原先8080服务器根目录下的solrapp文件夹拷贝到9090服务器根目录下。(如果没看之前文章的朋友,这里解释一下solrappsolr-work目录,是我们后来自己建立的文件夹。详见:solr学习一 


Solr学习(三) 单独ZooKeeper(外部)实例 + SolrCloud(tomcat)实例

同样,把8080服务器下webapps里头的solr 文件夹也拷贝到 9090服务器的同样目录 webapps里。 

 

步骤5:

    此时要在9090服务器上建立jndi指引文件,到E:\apache-tomcat-6.0.35.9090\conf\Catalina\localhost下新建solr.xml文件(也可以直接去8080服务器那边拷贝过来)然后写入内容

 

<?xml version="1.0" encoding="UTF-8" ?>
<Context docBase="E:/apache-tomcat-6.0.35.9090/webapps/solr.war" debug="0" crossContext="true" > 
   <Environment name="solr/home" type="java.lang.String" value="E:/apache-tomcat-6.0.35.9090/solrapp/solr" override="true" /> 
</Context>
   XML注意: docBase 与 value 两个值根据自己的路径不同做改变, 前者是war包的位置,后者是刚刚自己建立的solrapp目录位置的solr文件夹。   

步骤6:

    打开“8080服务器”路径“E:\apache-tomcat-6.0.35\solrapp\solr”找到项目内的“sor.xml”打开找到“cores”节点。改为如下配置。 

<cores adminPath="/admin/cores" defaultCoreName="collection1" host="localhost" hostPort="8080" hostContext="solr" zkClientTimeout="${zkClientTimeout:15000}">
    <core name="collection1" instanceDir="collection1" />
  </cores> 

    (同上)打开“9090服务器”路径“E:\apache-tomcat-6.0.35\solrapp\solr”找到项目内的“sor.xml”打开找到“cores”节点。改为如下配置

<cores adminPath="/admin/cores" defaultCoreName="collection1" host="localhost" hostPort="9090" hostContext="solr" zkClientTimeout="${zkClientTimeout:15000}">
    <core name="collection1" instanceDir="collection1" />
  </cores>

 上注意面2个solr.xml 并不是  tomcat\conf\Catalina\localhost目录下的。而是在 \solrapp\solr目录下的。请别弄错了。 xml中defaultCoreName值如果你之前有改变solr的配置,请自行更改,否则照抄我代码, host是ip地址,hostPort则为端口,2个tomcat的端口不一样。注意!

 

步骤7:

      既然是集群,要选举一个默认的solr老大对吧。(关于zookeeper选举老大的原则后续在说) 

哈哈。 我指定8080服务器solr服务为默认老大。

打开8080服务器目录下的bin目录E:\apache-tomcat-6.0.35\bin”找到文件catalina.bat”编辑它(再次建议用UE打开,注意文件编码)在文件第二行加入

 

Set JAVA_OPTS=-Dbootstrap_confdir=../solrapp/solr/collection1/conf -Dcollection.configName=clusterconf -DzkRun -DzkHost=localhost:2181 -DnumShards=1 

      注意黄色字体部分。需要根据个人情况不同做不同配置。  

“../solrapp/solr/collection1/conf这个就是 E:/apache-tomcat-6.0.35.8080/solrapp/solr/collection1/conf的后半段。自己看清楚啦。

 然后开始分配小弟(目前刚做老大,只有一个小弟跟着)“9090服务器”是小弟“catalina.bat”文件。第二行加入(别弄错了是9090的文件。)

 

set JAVA_OPTS= -DzkHost=localhost:2181
     只要指明zookeeper的路径位置即可。(如果你有很多个小弟。你其他小弟也这么配。)

 

 

此时完成了配置了。

 

测试阶段:

我们测试下!~首先打开zookeeper服务,再分别打开 8080 9090 tomcat 服务(注意要先打开zookeeper服务,后开tomcat)。之后IE里头输入 http://localhost:8080/solr


Solr学习(三) 单独ZooKeeper(外部)实例 + SolrCloud(tomcat)实例
 

 

出现以上图就OK了。  完成~

此时我们关掉其中的一个服务。。 我关了8080服务(废了老大)。 此时我们打开 9090服务地址。

http://localhost:9090/solr


Solr学习(三) 单独ZooKeeper(外部)实例 + SolrCloud(tomcat)实例
 发现此时 8080已经 gone了。   现在9090暂时变成了老大

 

目前为止。 zookeeper和多solr的配置已经完成了。 谢谢观赏。

 

小贴士(加入你在启动时候发现,只看到一个solr服务。说明配置有问题,此时修改配置后,需要删除zookeeper的数据文件。  还记得吗? 数据文件地址在  X:\zookeeper-3.4.5\conf 下的zoo.cfg里头写着呢。   打开看看吧。  其实zookeeper是可以自动横向扩容的。 只是这里没配置。 

你可能感兴趣的:(zookeeper,Solr,solrCloud,solr4.2.0)