开场白:
简单讲述如何配置独立的外部 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的项目根目录(解压后的目录,尽量不要放在中文目录中)如下图
步骤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服务器”根目录下。(如果没看之前文章的朋友,这里解释一下“solrapp”是solr-work目录,是我们后来自己建立的文件夹。详见:solr学习一 )
同样,把“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文件夹。