本机主要演示SolrCloud基于zookeeper集群搭建,多台zookeeper服务器具备系统高可靠性,高可用性,任意一台zookeeper服务器挂掉,系统会选举出一台服务器为leader。多台Solr,任意一台solr服务器挂掉,系统还是可以用的。solr安装包里面已经包含zookeeper,但是这样集成在一起,耦合度太高,不利于扩展。每一次重启tomcat,就相当于重启zookeeper了一遍,造成zookeeper集群不稳定,一般都是单独安装配置zookeeper集群,zookeeper集群最好有3个以上的主机,solr根据实际需求扩展。
一、安装zookeeper和solr
由于机器有限,这里我们使用zookeeper一台,solr二台机器演示。
zookeeper:192.168.100.90
solr:192.168.18.119 192.168.18.177
1.安装zookeeper
参考:linux上Zookeeper集群安装及监控
2.安装solr
wget http://mirrors.cnnic.cn/apache/lucene/solr/5.2.1/solr-5.2.1.zip
solr下载包中提供了Jetty服务器部署,直接bin/solr start启动即可,下面我们通过tomcat部署solr:
1)安装jdk1.7.0_60和apache-tomcat-7.0.30略
2)复制solr安装包到tomcat下
cp solr-5.2.1/server/webapps/solr.war ~/apache-tomcat-7.0.30/webapps/
3)启动tomcat,会自动解压solr.war在apache-tomcat-7.0.30/webapps/solr/下新建文件夹solr_home,把官网下载的solr(本文为:solr-5.2.1.zip)解压目录中的"solr-5.2.1\server\solr"目录下的所有内容复制到solr_home中。
4)配置solr_home
修改tomcat-7.0.30/webapps/solr/WEB-INF/web.xml,取消注释,配置“env-entry-value”的值为
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/home/slim/apache-tomcat-7.0.30/webapps/solr/solr_home</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
5)配置日志
拷贝solr-5.2.1/example/lib/ext/下所有jar包至apache-tomcat-7.0.30/webapps/solr/WEB-INF/lib/下,将solr-solr-5.2.1/example/resources/log4j.properties拷贝到apache-tomcat-7.0.30/webapps/solr/WEB-INF/classes下:
cp solr-5.2.1/example/lib/ext/* apache-tomcat-7.0.30/webapps/solr/WEB-INF/lib/
mdkir -p apache-tomcat-7.0.30/webapps/solr/WEB-INF/classes/
cp solr-5.2.1/example/resources/log4j.properties apache-tomcat-7.0.30/webapps/solr/WEB-INF/classes
二、配置
1.上传配置至zookeeper
在任意一台机器上新建SolrCloud配置文件目录:/home/slim/solrcloud/config-files,将solr-5.2.1/server/solr/configsets/basic_configs/conf目录拷贝到config-files目录下。新建Solr Zk CLI库文件目录:/home/slim/solrcloud/solr-lib,将第三步apache-tomcat-7.0.30/webapps/solr/WEB-INF/lib/目录文件拷贝过来。
cp -rf solr-5.2.1/server/solr/configsets/basic_configs/conf/* solrcloud/config-files/
cp -rf apache-tomcat-7.0.30/webapps/solr/WEB-INF/lib/* solrcloud/solr-lib/
将配置文件上传到ZooKeeper中
java -classpath .:/home/slim/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 192.168.100.90:2181 -confdir /home/slim/solrcloud/config-files -confname testconf
备注:更新配置文件也是上面的命令。
将上传到ZooKeeper中配置文件与Collection相关联
java -classpath .:/home/slim/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -collection mycollection -confname testconf -zkhost 192.168.100.90:2181
关于org.apache.solr.cloud.ZkCLI类可查看solr-core-4.3.1.jar。
若要删除配置文件,可将/home/develop/xq/zookeeper/data/version-2/目录下所有文件删除。
运行以上命令,会生成zookeeper.out文件,可以查看命令是否运行成功。
运行zkCli.sh,查看配置文件是否上传成功。
[slim@localhost zookeeper-3.4.6]$ ./bin/zkCli.sh
查看配置文件:
[zk: localhost:2181(CONNECTED) 2] ls /configs/testconf
[currency.xml, protwords.txt, synonyms.txt, _rest_managed.json, solrconfig.xml, stopwords.txt, lang, schema.xml]
2.solr配置
新建solrhome/solr目录,作为索引存储目录。创建solr.xml文件,作为solrcloud配置文件。
<solr>
<solrcloud>
<str name="host">${host:}</str>
<int name="hostPort">${jetty.port:8080}</int>
<str name="hostContext">${hostContext:solr}</str>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int>
<int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>
</solrcloud>
<shardHandlerFactory name="shardHandlerFactory"
class="HttpShardHandlerFactory">
<int name="socketTimeout">${socketTimeout:600000}</int>
<int name="connTimeout">${connTimeout:60000}</int>
</shardHandlerFactory>
</solr>
修改tomcat的bin目录下的catalina.sh,加入以下命令:
export JAVA_OPTS="-DzkHost=192.168.100.90:2181"
在其他机器上配置如上。
3.启动tomcat,配置collection和core
#bin/startup.sh ;tail -f logs/catalina.out
在浏览器中输入以下命令进行创建collection和core。
http://192.168.18.119:8080/solr/admin/collections?action=create&name=testcollection&numShards=2&replicationFactor=1&maxShardsPerNode=2
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">20227</int>
</lst>
<lst name="success">
<lst>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">10830</int>
</lst>
<str name="core">testcollection_shard1_replica1</str>
</lst>
<lst>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">18575</int>
</lst>
<str name="core">testcollection_shard2_replica1</str>
</lst>
</lst>
</response>
注意,用create和CREATE都行,不区分大小写。以下删除同上。
删除collection和core:
http://192.168.18.199:8080/solr/admin/collections?action=delete&name=testcollection&numShards=2&replicationFactor=1&maxShardsPerNode=2
参数说明:
numShards:默认为1.分片数。
replicationFactor:每个分片的复本数
maxShardsPerNode:每个Solr服务器节点上最大分片数(Solr 4.2新增)
注意:一个机器上的分片数<=maxShardsPerNode.即:numShards*replicationFactor<=maxShardsPerNode.
若不符合以上规则,创建的时候会报错。
创建完成,可以在页面看到分片的图形
由于节点数为2个,创建2个分片,solr会自动分片,每台机器一个分片,没有副本。
参考文章:
1.一个zookeeper,一个solr服务器配置
2.一台zookeeper服务器,多台solr服务器配置
3.多台zookeeper服务器,多台solr服务器配置
4.tomcat solrcloud zookeeper外部部署
5.solrCloud+tomcat+zookeeper集群配置
6.solrcloud分布式集群部署及索引操作实例
来源:CSDN
作者:slimina
链接:https://blog.csdn.net/tianwei7518/article/details/46731887