1.什么是SolrCloud
SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用SolrCloud来满足这些需求。
SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。
它有几个特色功能:
1)集中式的配置信息
2)自动容错
3)近实时搜索
4)查询时自动负载均衡
2. Solr集群的结构
3. Solr集群的搭建
本教程的这套安装是单机版的安装,所以采用伪集群的方式进行安装,如果是真正的生产环境,将伪集群的ip改下就可以了,步骤是一样的。
SolrCloud结构图如下:
需要三个zookeeper节点
四个solr节点。
使用伪分布式实现solr集群。需要三个zookeeper实例,4个tomcat实例,可以在一台虚拟机上模拟。建议虚拟机1G以上内存。
4.Zookeeper集群的搭建 http://www.cnblogs.com/zuge/p/5756154.html
5. Solr实例的搭建
第一步:创建4个tomcat实例,修改其端口。8080-8083
[root@localhost solrcloud]# cp -r tomcat1 tomcat2
[root@localhost solrcloud]# cp -r tomcat1 tomcat3
[root@localhost solrcloud]# cp -r tomcat1 tomcat4
[root@localhost solrcloud]# vi tomcat2/conf/server.xml 改为8081
[root@localhost solrcloud]# vi tomcat3/conf/server.xml 改为8082
[root@localhost solrcloud]# vi tomcat4/conf/server.xml 改为8083
可以自己写个脚本
第二步:解压solr-4.10.3.tar.gz压缩包。从压缩包中复制solr.war到tomcat。
[root@localhost admin]# tar -zxvf solr-4.10.3.tgz.tgz
[root@localhost admin]# tar -zxvf apache-tomcat-7.0.47.tar.gz
[root@localhost admin]# cp apache-tomcat-7.0.47 /usr/local/solrcloud/tomcat1 -r
[root@localhost dist]# cp solr-4.10.3.war /usr/local/solrcloud/tomcat/webapps/solr.war
第三步:启动tomcat解压war包。把solr-4.10.3目录下example目录下的关于日志相关的jar包添加到solr工程中。
把/root/solr-4.10.3/example/lib/ext 目录下所有的jar包复制到solr工程中。
[root@localhost bin]#./startup.sh
[root@localhost webapps]#rm -rf solr.war
[root@bogon ext]# cp * /usr/local/solrcloud/tomcat/webapps/solr/WEB-INF/lib/
第四步:创建solrhome。修改web.xml指定solrhome的位置。
[root@bogon example]# pwd
/root/solr-4.10.3/example
[root@bogon example]# cp -r solr /usr/local/solrcloud/solrhome
需要修改solr工程的web.xml文件。
solrhome准备4份,solrhome1,solrhome2,solrhome3,solrhome4
5. solr集群的搭建
第一步
把solrhome中的配置文件上传到zookeeper集群。使用zookeeper的客户端上传。
客户端命令位置:/solr-4.10.3/example/scripts/cloud-scripts
先要把zookeeper启动
[root@localhost solrcloud]# cd /home/admin/solr-4.10.3/example/scripts/cloud-scripts/
./zkcli.sh -zkhost 192.168.206.145:2181,192.168.206.145:2182,192.168.206.145:2183 -cmd upconfig -confdir /usr/local/solrcloud/solrhome1/collection1/conf -confname myconf
查看配置文件是否上传成功:(目录在zookeeper的bin下面)
[root@bogon bin]# ./zkCli.sh
Connecting to localhost:2181
[zk: localhost:2181(CONNECTED) 0] ls /
[configs, zookeeper]
[zk: localhost:2181(CONNECTED) 1] ls /configs
[myconf]
[zk: localhost:2181(CONNECTED) 2] ls /configs/myconf
[admin-extra.menu-top.html, currency.xml, protwords.txt, mapping-FoldToASCII.txt, _schema_analysis_synonyms_english.json, _rest_managed.json, solrconfig.xml, _schema_analysis_stopwords_english.json, stopwords.txt, lang, spellings.txt, mapping-ISOLatin1Accent.txt, admin-extra.html, xslt, synonyms.txt, scripts.conf, update-script.js, velocity, elevate.xml, admin-extra.menu-bottom.html, clustering, schema.xml]
[zk: localhost:2181(CONNECTED) 3]
第二步
修改每个solrhome(1-4)下的solr.xml文件,指定当前实例运行的ip地址及端口号。
第三步
修改每一台solr的tomcat 的 bin目录下catalina.sh文件中加入DzkHost指定zookeeper服务器地址:
JAVA_OPTS="-DzkHost=192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183"
(可以使用vim的查找功能查找到JAVA_OPTS的定义的位置,然后添加)
第四步
重新启动tomcat。
一个主节点多个备份节点,集群只有一片。
第五步
创建一个两片的collection,每片是一主一备。
使用以下命令创建:(在浏览器的地址栏输入即可)
http://192.168.25.154:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
第六步
删除collection1.
http://192.168.25.154:8080/solr/admin/collections?action=DELETE&name=collection1