本文记录win7下使用tomcat、zookeeper、solr搭建solrCloud伪集群配置过程。
1. 准备
去各个官网下载对应软件版本。
创建伪集群工作目录,我的是E:\Solr_Workspace,后面会把tomcat、zookeeper、SOLR_HOME都放在这个目录下。
2. 配置zookeeper集群
建立3个文件夹分别存放3个zookeeper:E:\Solr_Workspace\service1,E:\Solr_Workspace\service2,E:\Solr_Workspace\service3,实际环境中这些应该在不同的机器上。
这一步将会配置3个zookeeper,先来配置第一个:
解压zookeeper到E:\Solr_Workspace\service1\zookeeper-3.4.6;
创建data、datalog文件夹:E:\Solr_Workspace\service1\data,E:\Solr_Workspace\service1\datalog,并在data文件夹下新建myid文件,用记事本编辑内容为”1”。这里的1为serverid
修改conf目录zoo_sample.cfg文件为zoo.cfg,修改配置项:
tickTime=2000
tickTime=2000
initLimit=5
syncLimit=2
dataDir=E:/Solr_Workspace/service1/data(刚才创建的目录)
dataLogDir=E:/Solr_Workspace/service1/datalog(刚才创建的目录)
clientPort=2181(服务端口)
server.1=192.168.1.200:2888:3888(1为serverid,与myid文件内容对应,等号后面分别为ip、zk通讯端口、选举端口)
server.2=192.168.1.200:2889:3889
server.3=192.168.1.200:2890:3890
配置好zk1后再配置zk2、zk3就容易多了。
拷贝2份,修改myid、和zoo.cfg。
zk2的myid写入2;zk3的myid写入3。
zk2的zoo.cfg:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=E:/Solr_Workspace/service2/data
dataLogDir=E:/Solr_Workspace/service2/datalog
clientPort=2182server.1=192.168.1.200:2888:3888
server.2=192.168.1.200:2889:3889
server.3=192.168.1.200:2890:3890
zk3的zoo.cfg:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=E:/Solr_Workspace/service3/data
dataLogDir=E:/Solr_Workspace/service3/datalog
clientPort=2183
server.1=192.168.1.200:2888:3888
server.2=192.168.1.200:2889:3889
server.3=192.168.1.200:2890:3890
3. 部署solr
将下载来的solr-5.1.0.zip解压。
创建E:/Solr_Workspace/solr_home1目录,复制solr-5.1.0\server\solr下所有文件到E:\Solr_Workspace\solr_home1,修改solr.xml。
把solr-5.1.0\server\webapps\solr.war放到tomcat的webapps目录下;启动tomcat自动解压得到solr文件夹。
把solr-5.1.0\server\lib\ext下所有的jar,复制到刚才得到的solr文件夹下的WEB-INF\lib目录下。
把solr-5.1.0\server\resources\log4j.properties复制到webapps\solr\WEB-INF\classes目录下。
修改webapps\solr\WEB-INF\web.xml的:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>E:/Solr_Workspace/solr_home1</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
指定solr/home为E:/Solr_Workspace/solr_home1目录。
修改E:/Solr_Workspace/solr_home1\solr.xml,修改hostPort为该tomcat的端口号。
拷贝solr-5.1.0\server\solr\configsets\basic_configs\conf目录到E:\Solr_Workspace\solr_home1\collection1中。
4. 配置tomcat
修改tomcat的server.xml,服务的口号我改为了18080。
修改tomcat的catalina.bat文件,在
setlocal
下增加这一行内容:
set “JAVA_OPTS=%JAVA_OPTS% -DzkHost=192.168.1.200:2181,192.168.1.200:2182,192.168.1.200:2183 -Dbootstrap_confdir=E:/Solr_Workspace/solr_home1/collection1/conf -Dcollection.configName=myconf”
把tomcat再复制2份,注意修改端口号。
我的3个tomcat路径分别为:
E:\Solr_Workspace\apache-tomcat-7.0.62_18080
E:\Solr_Workspace\apache-tomcat-7.0.62_28080
E:\Solr_Workspace\apache-tomcat-7.0.62_38080
把solr_home1拷贝2份:solr_home2,solr_home3
然后把tomcat2、3下的webapps下的solr文件夹按照步骤3再配置一遍,修改1、2、3有区别的地方,使之分别与tomcat1、2、3对应。(注意:solr_home2和solr_home3下的collection1目录删除,不需要)。
tomcat2和3的catalina.bat的set JAVA_OPTS分别为:
set “JAVA_OPTS=%JAVA_OPTS% -DzkHost=192.168.1.200:2181,192.168.1.200:2182,192.168.1.200:2183”
不需要指定bootstrap_confdir和collection.configName了,这是区别的地方。
注意:此处也可不修改catalina.bat,而直接在solr/home变量配置的目录下的solr.xml文件的solr>solrcloud节点下添加:
<str name="zkHost">192.168.1.200:2181,192.168.1.200:2182,192.168.1.200:2183</str>
需要把solr.xml中的端口改为容器服务端口,例如tomcat的8080
<int name="hostPort">${jetty.port:8080}</int>
5. 启动
双击每个\zookeeper-3.4.6\bin目录下的zkServer.cmd即可启动zk了。
依次启动每个tomcat。
访问http://192.168.1.200:18080/solr/#/~cloud,如果左侧有cloud节点则表示成功了。