SolrCloud
是Solr提供的分布式搜索系统,需要大规模,容错,分布式索引和检索能力时使用。
是基于Solr和Zookeeper的分布式解决方案,主要思想是使用Zookeeper作为集群的配置中心。
特色功能
- 集中式的配置信息
- 自动容错
- 近实时搜索
- 查询时自动负载均衡
配置
Zookeeper作为集群的管理工具。
集群管理:容错、负载均衡、配置文件的集中管理
集群的入口

- 要实现zookeeper 高可用。需要搭建集群。建议是奇数节点。
- 需要三个zookeeper服务器。
- 搭建solr集群需要7台服务器。
- 搭建伪分布式需要三个zookeeper节点 需要四个tomcat节点。
1.搭建zookeeper集群步骤
- 拷贝zookeeper三份 放到自定义文件夹SolrCloud中
- 创建data文件夹 zookeeper第一层目录内
- 在data文件夹内创建myid vim 存一个1
- 编写conf下zoo.cfg
- 剩下二个是一样的 区别是data目录和myid文件分别存2,3 还有记得和客户端通信的端口号需要修改clientPort=2182
- 启动三个节点 写个shell
- 查看时leader还是follewer vim:./zkServer.sh status
cd zookeeper1/bin/
./zkServer.sh start
cd ../../
cd zookeeper2/bin/
./zkServer.sh start
cd ../../
cd zookeeper3/bin/
./zkServer.sh start
dataDir=/Users/matteo/ITSoft/SolrCloud/zookeeper1/data
#zookeeper节点之间通信的端口
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883
2.搭建四个tomcat
- 在SolrCloud文件夹中创建四个Tomcat。
- tomcat配置四个 需要改三个地方 别再忘了。
- 弄完写一个shell脚本 直接全部运行吧。
3.四个SolrHome的配置
直接修改配置Solr的web.xml的配置
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/Users/matteo/ITSoft/SolrHome</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
4.需改SolrHome下的solr.xml
要改四个 慢慢改吧
<solrcloud>
<str name="host">127.0.0.1</str>
<!-- 这个端口号是tomcat的端口号 -->
<int name="hostPort">8090</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>
5.建立solr和zookeeper的关系
修改的是tomcat的配置文件catalina.sh
需要修改四个tomcat
#JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
JAVA_OPTS="-DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"
6.让zookeeper集中进行管理
到下面的文件夹下 并执行下面的命令
上传collections的配置给zookeeper 让他集中管理
使用./zkcli.sh工具
cd /Users/matteo/ITSoft/Solr/example/scripts/cloud-scripts/
###我上传的时候出现了问题 将ip:端口三个依次上传就没有问题了。
./zkcli.sh -zkhost 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 -cmd upconfig -confdir /Users/matteo/ITSoft/SolrCloud/SolrHome1/collection1/conf/ -confname myconf
到zookeepre1的bin下面的执行
./zkCli.sh -server 127.0.0.1:2181
得到:[zk: localhost:2181(CONNECTED) 0]
查看配置
ls /configs/myconf
7.启动四个tomcat 还是写个脚本吧。。。。
./Tomcat1/bin/startup.sh
./Tomcat2/bin/startup.sh
./Tomcat3/bin/startup.sh
./Tomcat4/bin/startup.sh
8.访问tomcat
点击Cloud出现下面的标志是成功了

9.创建新的Collection进行分片处理
在浏览器输入
//增加
http://127.0.0.1:8091/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
//删除
http://127.0.0.1:8091/solr/admin/collections?action=DELETE&name=collection1