solrCloud搭建的方式方法
1.zoookeeper集群搭建
①下载zookeeper解压,将conf目录下的zoo_sample.cfg文件重命名为:zoo.cfg。
②在某个盘符下面新建data和logs两个文件夹,并将zoo.cfg文件的dataDir指向data目录,dataLogDir指向logs目录。以下:
dataDir=D:/zookeeper1/data
dataLogDir=D:/zookeeper1/logs
③在data目录下新建myid文件,内容为1。若是多个zookeeper的话就须要创建多个data和logs,而且myid的内容必须不相同。
④配置zookeeper服务器。在zoo.cfg文件中已server.A=B:C:D形式添加相应的服务器。
A:myid的值
B:zookeeper服务器的IP
C:端口号
D:备用端口号
⑤zoo.cfg文件中端口号clientPort的修改。若是有多个zookeeper,则clientPort不一致
2.启动集群,查看运行状态。
①依次运行各个服务器:zkServer.sh start启动 zkServer.sh status查看状态。可能会提示错误,不要紧,所有启动就行了。
②链接主服务器:zkCli.sh -server IP:clientPort(端口号)。
3.在tomcat上启动solr。java
4.将tomcat与zookeeper关联起来。
①在主节点tomcat/bin目录下的catalina.sh文件中添加以下代码:
JAVA_OPTS='$JAVA_OPTS -DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 -
Dbootstrap_confdir=/usr/bizwork/solrCloud/solr/order_core/conf -Dcollection.configName=myconf -DnumShards=3'web
若是是windows下则catalina.bat添加以下:apache
set JAVA_OPTS=-Dbootstrap_confdir=D:\\solr-home\\myCore\\conf -Dcollection.configName=myConf -DzkRun -DzkHost=127.0.0.1:2181 -DnumShards=3 -Dbootstrap_conf=truebootstrap
②在子节点tomcat/bin目录下的catalina.sh文件中添加以下代码:
JAVA_OPTS='$JAVA_OPTS -DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 -DnumShards=3 -Dbootstrap_conf=true'windows
若是是windows下则catalina.bat添加以下:tomcat
set JAVA_OPTS=-DzkRun -DzkHost=127.0.0.1:2181 -DnumShards=3 -Dbootstrap_conf=true服务器
5.将主服务器的配置文件上传到zookeeper,便于其余服务器共享一个配置文件。
java -classpath D:/solrCloud/tomcat1/webapps/solr/WEB-INF/lib/*
org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 -confdir D:/solrCloud/solr1/myCore/conf -confname myconf
app
java -classpath .:/usr/bizwork/tomcat-pay-solr/mywebapps/solr/WEB-INF/lib/*
org.apache.solr.cloud.ZkCLI -zkhost 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
-cmd linkconfig -collection order_core -confname myconfwebapp
6.配置solr.xml文件spa
<solrcloud>
<str name="host">${host:}</str>
<int name="hostPort">${port:8070}</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
<str name="zkHost">127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183</str>
</solrcloud>
7.在solr_home/solr/order_core/conf/solrconfig.xml配置服务器数据主从同步。 ①在Master里面的配置以下: <requestHandler name="/replication" class="solr.ReplicationHandler" > <lst name="master"> <str name="replicateAfter">commit</str> <!-- master上有数据写入时,触发commit操做,slave就会发起一次同步请求--> <str name="replicateAfter">startup</str> <!-- startup参数不影响同步请求--> <str name="replicateAfter">optimize</str> <!-- master触发optimize操做,slave就会发起一次同步请求--> <str name="confFiles">schema.xml,mapping-ISOLatin1Accent.txt,protwords.txt,stopwords.txt,synonyms.txt,elevate.xml</str> <!-- 除了索引同步外,一些配置文件的同步,默认是在conf目录下 --> <str name="commitReserveDuration">00:10:00</str> </lst> </requestHandler> ②各个Slave上的配置以下: <requestHandler name="/replication" class="solr.ReplicationHandler" > <lst name="slave"> <!-- masterUrl表明主机的solr路径,若是存在多个core时,地址写http://localhost:9001/solr/(core名) 便可 --> <str name="masterUrl">http://192.168.0.181:9883/solr/order_core/replication</str> <str name="pollInterval">00:10:00</str> <!-- 同步时间间隔10分钟一次 --> <str name="compression">internal</str> <str name="httpConnTimeout">5000</str> <str name="httpReadTimeout">10000</str> </lst> </requestHandler> ③各solrconfig.xml配置 <!--容错查询--> <requestHandler name="/select" class="solr.SearchHandler"> <lst name="defaults"> <str name="echoParams">explicit</str> <str name="shards.tolerant">true</str> <int name="rows">10</int> <str name="df">text</str> </lst> </requestHandler>