背景:
分别在三台服务器上安装solr,即搭建分布式搜索引擎,并且采用zookeeper集群来管理solr配置信息。
概要:
一、什么是SolrCloud
SolrCloud(solr云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用SolrCloud来满足这些需求。
SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。
它有几个特色功能:
1)集中式的配置信息
2)自动容错
3)近实时搜索
4)查询时自动负载均衡
solr集群的结构
安装步骤
一、下载solr安装包
这里下载最新版本solr6.3.0,下载tgz格式的即可,下载地址:http://apache.fayea.com/lucene/solr/6.3.0/
二、解压安装包
1、在下载目录中解压solr-6.3.0.tgz,即 tar -zxf solr-6.3.0.tgz
2、解压后得到目录solr-6.3.0 如果需要提供第三方的包给solr调用,那么将第三方的包放在目录solr-6.3.0/server/solr-webapp/webapp/WEB-INF/lib下即可;
3、然后将解压后的目录分别拷贝到其他两台服务器上去,或者把压缩包拷贝过去到时候再解压。
三、启动solr
1、分别在三台服务器的solr-6.3.0/bin目录下执行./solr start -force -c -z zookeeper节点1ip:2181,zookeeper节点2ip:2181,zookeeper节点3ip:2181 -m 3g
其中-force表示强制启动;
-c 表示solr启动时将会连接的zookeeper集群;
-z后面的参数值是zookeeper集群的各节点地址(ip:port),多个用英文逗号隔开;
-m表示给这台solr服务器分配的内存大小,此处为3g;
四、在solr中创建collection
1、自定义一个脚本create-collection.sh,脚本内容如下:
#!/bin/sh
SOLR_HOME=/data/solr/solr-6.3.0
if [ -z "$1" ] || [ -z "$2" ]
then
echo "usage : configdir collectionname"
exit
fi
echo "uploading configs [ $1 ] to zk with collection [ $2 ]"
$SOLR_HOME/server/scripts/cloud-scripts/zkcli.sh -z zookeeper节点ip:2181 -cmd upconfig -confdir $1 -n $2
echo "creating collection [ $2 ]"
$SOLR_HOME/bin/solr create -force -c $2 -n $2 -s 2 -rf 2
这里首先会通过zookeeper客户端将collection的配置目录$1上传到zookeeper集群中去;然后强制创建collection,即$2
实际执行如:sh create-collection.sh configDirName collectionName
五、在solr中删除collection
1、自定义一个脚本delete-collection.sh ,脚本内容如下:
#!/bin/sh
SOLR_HOME=/data/solr/solr-6.3.0
$SOLR_HOME/bin/solr delete -c $1 -deleteConfig $2
这里$1表示将要删除collection的名字,$2是一个布尔值,表示是否需要同时删除对应的配置文件;
实际执行如:sh delete-collection.sh collectionName true
六、停止solr
分别在三台服务器的solr-6.3.0/bin目录下执行./solr stop -all 表示停止所有的solr服务;