solrCloud搭建及使用

###solrCloud介绍

SolrCloud是基于Solr和Zookeeper的分布式搜索方案。当索引越来越大,一个单一的系统无法满足磁盘需求,查询速度缓慢,此时就需要分布式索引。在分布式索引中,原来的大索引,将会分成多个小索引,solr可以将这些小索引返回的结果合并,然后返回给客户端。 solrCloud具有很多优势:集中式的配置信息,自动容错,近实时搜索,查询时自动负载均衡,查询时自动负载均衡,等等。

###solrCloud搭建示例: 示例中solrCloud的搭建为伪分布式搭建,在一台服务器上,通过端口号来区分不同节点,这次要搭建一个4节点,2分片+2副本的Solr Cloud,而Zookeeper我们也选择了单节点,生产环境下请使用Zookeeper集群来保证高可用性。

节点名 ip:port
solr Node1 120.79.213.xxx:8983
solr Node2 120.79.213.xxx:8984
solr Node3 120.79.213.xxx:8985
solr Node4 120.79.213.xxx:8986
zookeeper node 120.79.213.xxx:2181

各节点如上。

####1.搭建zookeeper

cd ~
//1.下载、安装、启动Zookeeper
wget http://apache.fayea.com/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz
tar -zxvf zookeeper-3.4.11.tar.gz
cd zookeeper-3.4.11
//复制一份配置文件
cp ./conf/zoo_sample.cfg ./conf/zoo.cfg
//启动它
./bin/zkServer.sh start

####2.建立solr节点,并注册到zookeeper

//创建solr-cloud目录(这里以home目录为根目录)
$ cd ~
$ mkdir solr-cloud
//将solr-7.2.1移动到solr-cloud目录下
$ mv solr-7.2.1 solr-cloud/
$ cd solr-cloud/
//创建节点目录node1
$ mkdir node1
//将单节点solr-home文件夹复制过来
$ cp -rf  ~/solr-home/ node1/
//其实只需要solr.xml,我们可以把test-core配置文件删了,稍后我们上传到Zookeeper由它管理。
$ rm -rf node1/solr-home/test-core/
//复制出其它3个节点
$ cp -rf node1/ node2/
$ cp -rf node1/ node3/
$ cp -rf node1/ node4/
//最终应该是下面这样的目录结构
$ ls
node1  node2  node3  node4  solr-7.2.1
//3.启动节点
//进入solr-7.2.1目录下
$ cd solr-7.2.1
//启动node1
$ ./bin/solr start -z 172.16.1.202:2181 -s ~/solr-cloud/node1/solr-home/ -p 8983
//启动node2
$ ./bin/solr start -z 172.16.1.202:2181 -s ~/solr-cloud/node2/solr-home/ -p 8984
//启动node3
$ ./bin/solr start -z 172.16.1.202:2181 -s ~/solr-cloud/node3/solr-home/ -p 8985
//启动node4
$ ./bin/solr start -z 172.16.1.202:2181 -s ~/solr-cloud/node4/solr-home/ -p 8986
//我们可以通过status查看下Solr Server的状态,如果成功启动你可以看到4个节点的信息。
$ ./bin/solr status
//4.将配置文件托管给Zookeeper
$ ./bin/solr zk -upconfig -z 172.16.1.202:2181 -n test-conf -d ~/solr-home/test-core/conf/
//5.创建Collection(名字为test-collection,2片,2副本)
$ ./bin/solr create_collection -c test-collection -n test-conf -shards 2 -replicationFactor 2

通过以上操作,现在我们访问任一一个节点都能看到cloud菜单,并且能监听到其他节点的状态。

执行以上的操作,一个solrcloud伪分布式服务就搭建好了。

####solrj对solrCloud的操作 solrj操作solrCloud的方式和操作solr服务类似 solrj在声明连接solrCloud服务的client时:

CloudSolrClient.Builder builder = new CloudSolrClient.Builder();
//绑定zookeeper地址
builder.withZkHost(“120.79.213.xxx:2181”);

solrj在声明连接solr服务的client时:

HttpSolrClient.Builder builder = new HttpSolrClient.Builder();
builder.withBaseSolrUrl(“http://120.79.213.17:8983/solr”);

猜你喜欢

转载自my.oschina.net/jeker8chen/blog/1631177