solrClund 是solr提供的分布式搜索方案
solrClund 是基于solr和zookeeper的分布式搜索方案,
主要思想是使用zookeeper作为集群的配置中心
特色功能:
1.集中式的配置信息
2.自动容错
3.近实时搜索
4.查询时自动负载均衡
zookeeper:动物园管理员,用于管hadoop(大象)、Hive(蜜蜂)的管理员
SolrCloud结构
需要由多台服务器共同完成索引和搜索任务
实现的思路是将索引数据进行shard(分片) 拆分,每个分片由多台的服务器共
同完成。当一个索引或搜索请求过来时会分别从不同的shard的服务器中操作
索引。
solrCloud需要 solr基于zookeeper部署,zookeeper是一个集群管理软件,
由solrCloud需要由多台服务器组成。由zookeeper来进行协调管理
多个分片相加起来才是一个完成的索引库
服务器数量:
zookeeper:3台服务器
solr:4台服务器
集群搭建
zookeeper集群:
zookeeper有一个选举机制,选举谁是leader,谁是follower,成为主
节点,需要得到半数以上的投票。所以尽可能为奇数节点
1.创建三个zookeeper实例:
2.分别在zookeeper文件夹下,创建data文件夹,下面创建myid(内容为1、2、3)
3.在E:\solr\solrColud\zookeeper1\conf 下将zoo_sample.cfg更名为zoo.cfg
#myid文件的位置
dataDir=E:/solr/solrColud/zookeeper1/data
# the port at which the clients will connect
#zookeeper对外提供的端口号:
clientPort=2181
#集群所有节点的信息
# server.1:代表第一台zookeeper,1为myid文件中的值,
#两个端口号:1个投票的,1个选举的
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883
//第二台和第三台则只需要修改myid的文件位置和端口号
4.启动zookeeper,三台都启动成功,则不再报错
solr实例
1.启动4个tomcat实例
2.搭建4个单机版solr实例
3.需改tomcat的端口号:
8080
8081
8082
8083
4.需改solrhome的位置
集群搭建
1.让zookeeper集群集中管理配置文件,把配置文件上传到zookeeper
2.将E:\solr\solrColud\solrhome1\collection1\conf 下面的内容上传到zookeeper集群中
3.在cmd 中 ,命令上传文件:
java -classpath E:\solr\solrColud\apache-tomcat1\webapps\solr\WEB-INF\lib/* org.apache.solr.cloud.ZkCLI -zkhost 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 -cmd upconfig -confdir E:\solr\solrColud\solrhome1\collection1\conf -confname myconf
4.查看上传的文件:有myconf说明上传成功
5.修改每个solrhome下的solr.xml文件
<solr>
<solrcloud>
//solr每个实例对应的ip
<str name="host">${host:127.0.0.1}str>
//tomcal的端口
<int name="hostPort">${jetty.port:8080}int>
<str name="hostContext">${hostContext:solr}str>
<int name="zkClientTimeout">${zkClientTimeout:30000}int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}bool>
solrcloud>
<shardHandlerFactory name="shardHandlerFactory"
class="HttpShardHandlerFactory">
<int name="socketTimeout">${socketTimeout:0}int>
<int name="connTimeout">${connTimeout:0}int>
shardHandlerFactory>
solr>
6.告诉每个solr实例,zookeeper集群的位置
修改每一台 tomcat的bin目录下catalina.bat文件中加入DzkHost指定
zookeeper服务器地址
set JAVA_OPTS="-DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"
7.启动所有tomcat
9.现在只有一片,1个主,三个备
10.使用命令进行分片,两分的集群
http://127.0.0.1:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
12删除集群的命令:
http://127.0.0.1:8080/solr/admin/collections?action=DELETE&name=collection1