什么是solrcloud,为什么要solrcloud
solrcloud分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用solr集群,即solrcloud。
结构
物理结构
逻辑结构
zookeeper
//Todo
简言之,就是一个管理员!(下次补充)
实验
搭建一个SolrCloud,将一个项目的单机solr实例改成集群环境下的。
配置
环境
3台zookeeper服务器,SolrCloud由
- 创建3个zookeeper实例
解压zookeeper,/usr/local/solrcloud下复制三份解压后的文件夹,zookeeper1、zookeeper2、zookeeper3
并创建data文件夹,创建一个myid。示例:zookeeper1/data下
echo 1 >> data/myid
- 进入conf 把zoo_sample.cfg改名为zoo.cfg
cp zoo_sample.cfg zoo.cfg
修改配置文件
dataDir=/usr/local/zookeeper2/data/ //创建data的目录全路径
# the port at which the clients will connect
clientPort=2182 //客户端连接的端口
server.1=192.168.176.102:2881:3881 //集群中节点信息包括ip以及投票和选举的端口
server.2=192.168.176.102:2882:3882
server.3=192.168.176.102:2883:3883
- 启动zookepper
/bin/zookeeper*/bin/zkServer.sh start
配置solr实例
-
配置4个solr实例,就需要4个tomcat
修改conf/server.xml 端口号
- 复制jar包到lib,创建solrhome,修改webapps/solr/WEB-INF/web.xml(指定solrhome实例)
- 测试
编写脚本,启动4个tomcat实例,浏览器里访问192.168.176.102:808*/solr 正常solr的操作面板出现,启动成功!
配置solr集群
- 把solrhome中的配置文件上传到zookeeper集群。使用zookeeper客户端上传。
命令位置: /usr/local/solr-4.10.3/example/scripts/cloud-scripts/
[root@localhost cloud-scripts]# ./zkcli.sh -zkhost 192.168.176.102:2181,192.168.176.102:2182,192.168.176.102:2183 -cmd upconfig -confdir /usr/local/solrcloud/solrhome1/collection1/conf -confname myconf
zookeeper/bin/zkCli.sh 查看配置文件是否上传成功
- 修改solr.xml
修改solrhome下的solr.xml,指定当前实例运行的IP地址和端口 - 将solr与zookeeper关联
修改每一台solr的tomcat 的 bin目录下catalina.sh文件中加入DzkHost指定zookeeper服务器地址:
JAVA_OPTS="-DzkHost=192.168.176.102:2181,192.168.176.102:2182,192.168.176.102:2183"
- 测试
- 创建一个两片的collection,每片是一主一备
http://192.168.176.102:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
项目整合
//todo