Win10下基于zookeeper的solrCloud集群搭建
solr5.3.1
tomcat8.0.28
zookeeper-3.5.1-alpha
目录结构如下:
solrCloud
├─service01
├─service02
├─service03
├─solr-5.3.1
├─solrhome01
├─solrhome02
├─solrhome03
├─solrhome04
├─tomcat01
├─tomcat02
├─tomcat03
├─tomcat04
└─启动zookeeper和solr服务器
在一台服务器上部署3个zk,4个tomcat,由于是在同一台服务器上,zk和tomcat的端口不能重复,若是分布在不同的服务器上,这一步可以省略
新建solrCloud\service01\zookeeper-3.4.14\conf\zoo.cfg
,
再data目录新建myid文件,并写入zookeeper的id。
#在`zoo_sample.cfg`文件的基础上对如下内容做修改
#dataDir=/tmp/zookeeper
dataDir=D:\\NLZ_HD\\solrCloud\\service03\\data
dataLogDir=D:\\NLZ_HD\\solrCloud\\service03\\datalog
# the port at which the clients will connect
clientPort=2183
#新增如下内容,其中第一个端口为通讯端口,第二个为投票选举端口
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
zookeeper配置完成,依次启动即可。
复制单机版的tomcat
编辑solrCloud\tomcat01\webapps\solr\WEB-INF\web.xml
文件,找到env-entry节点,编辑为以下内容
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>D:\NLZ_HD\solrCloud\solrhome01</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
修改solrCloud\tomcat01\conf\server.xml
中指定的tomcat运行端口
<!--共修改三处,每个tomcat都需要做对应的修改-->
<!--第1处-->
<Server port="8105" shutdown="SHUTDOWN">
<!--第2处-->
<Connector port="8180" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!--第3处-->
<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />
将单机版solrhome下的文件拷贝至solrhome
修改solrCloud\solrhome01\solr.xml
<!--将端口号修改为当前tomcat的运行端口-->
<solrcloud>
<str name="host">${host:}</str>
<int name="hostPort">${jetty.port:8180}</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:15000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>
新建配置文件目录(用于zk的集群配置管理),我是直接再solr_home中新建一个collection1文件夹,如下:
..\solrhome01\collection1(此文件夹只需要建一个,不需要再每个机器上建,他会通过zk分发到各个机器)
将solr原包中../solr/server/solr/configsets/basic_configs/*拷贝到../solrhome01/collection1/下
修改tomcat的solrCloud\tomcat01\bin\catalina.bat
文件
<--其中一台添加如下信息-->
set JAVA_OPTS=-Dsolr.solr.home=D:\NLZ_HD\solrCloud\solrhome01 -Dbootstrap_confdir=D:\NLZ_HD\solrCloud\solrhome01\collection1\conf -Dcollection.configName=myconf -DnumShards=3 -DzkHost=localhost:2181,localhost:2182,localhost:2183
<--其他添加如下信息-->
set JAVA_OPTS=-Dsolr.solr.home=D:\NLZ_HD\solrCloud\solrhome02 -DzkHost=localhost:2181,localhost:2182,localhost:2183
solrCloud配置完成
依次启动zk和tomcat,开始启动zk的时候会报错,没关系,因为zk是2n+的机制,当你依次启动就好了。
删除zookeeper的配置文件需要
#连接zookeeper服务器
zkCli.sh -server localhost:2181
#使用rmr命令删除指定文件
rmr /configs/collection1Conf
上传文件、配置;创建、reload、起别名、删除collection
#使用solr原包中的solr-5.3.1\server\scripts\cloud-scripts下的zkcli.bat执行下述命令
#上传一个文件
zkcli.bat -zkhost 127.0.0.1:2181 -cmd putfile /configs/collectionxConf/data-config.xml D:\NLZ_HD\solrCloud\solrhome01\collection1\collectionxConf\data-config.xml
#上传一组collection的配置
zkcli.bat -zkhost 127.0.0.1:2181 -cmd upconfig -confname collectionxConf -confdir D:\NLZ_HD\solrCloud\solrhome01\collection1\collectionxConf
#创建一个collection
http://localhost:8180/solr/admin/collections?action=CREATE&name=collection1&numShards=3&replicationFactor=3&maxShardsPerNode=3&collection.configName=collectionxConf
#删除一个collection
http://localhost:8180/solr/admin/collections?action=DELETE&name=collection1
http://localhost:8180/solr/admin/collections?action=DELETE&name=core2
#为collection创建别名
http://localhost:8180/solr/admin/collections?action=CREATEALIAS&name=collection1U2&collections=collection1,collection2
#reload一个collection
http://localhost:8180/solr/admin/collections?action=RELOAD&name=collection1
#Link a collection to a configuration set
zkcli.bat -zkhost 127.0.0.1:2181 \ -cmd linkconfig -collection core2 -confname new_config
参考: