欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-14 21:57:41
...

开场白:

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

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

 声明:描述的比较笼统繁琐,有偏差的地方请大家毫不留情的拍砖Solr学习(三) 单独ZooKeeper(外部)实例 + SolrCloud(tomcat)实例
            
    
    博客分类: JavaSolr Lucene solr4.2.0ZooKeeperSolrSolrCloud 

完成目标: 

单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)实例
            
    
    博客分类: JavaSolr Lucene solr4.2.0ZooKeeperSolrSolrCloud 
 开始生产:

    步骤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)实例
            
    
    博客分类: JavaSolr Lucene solr4.2.0ZooKeeperSolrSolrCloud 

同样,把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)实例
            
    
    博客分类: JavaSolr Lucene solr4.2.0ZooKeeperSolrSolrCloud 
 

 

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

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

http://localhost:9090/solr


Solr学习(三) 单独ZooKeeper(外部)实例 + SolrCloud(tomcat)实例
            
    
    博客分类: JavaSolr Lucene solr4.2.0ZooKeeperSolrSolrCloud 
 发现此时 8080已经 gone了。   现在9090暂时变成了老大

 

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

 

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

  • Solr学习(三) 单独ZooKeeper(外部)实例 + SolrCloud(tomcat)实例
            
    
    博客分类: JavaSolr Lucene solr4.2.0ZooKeeperSolrSolrCloud 
  • 大小: 47.2 KB
  • Solr学习(三) 单独ZooKeeper(外部)实例 + SolrCloud(tomcat)实例
            
    
    博客分类: JavaSolr Lucene solr4.2.0ZooKeeperSolrSolrCloud 
  • 大小: 36.8 KB
  • Solr学习(三) 单独ZooKeeper(外部)实例 + SolrCloud(tomcat)实例
            
    
    博客分类: JavaSolr Lucene solr4.2.0ZooKeeperSolrSolrCloud 
  • 大小: 9.2 KB
  • Solr学习(三) 单独ZooKeeper(外部)实例 + SolrCloud(tomcat)实例
            
    
    博客分类: JavaSolr Lucene solr4.2.0ZooKeeperSolrSolrCloud 
  • 大小: 7.6 KB