SolrCloud
solr基于Zookeeper协调组件搭建的分布式搜索引擎,具有zookeeper的高可用以及集群的可伸缩性的特点。
SolrCloud结构图
Collection:对应standby模式Solr Core
Shard(分片): 对应Collection逻辑划分的Core,可以理解为多个Shard组成一个完整意义上的Solr Core,如果是单机模式下:1 Solr Core = 1 Shard = 1 Core = 1 replica,Shard对于用户接口是不可见的,主要通过上一层的Collection提供一个Façade接口
Core: Solr Core一个包含索引和配置文件的运行实例,一个Core对应一个Replica实际提供索引服务,SolrCloud提供冗余机制,多个Replica提供的索引数据服务是相同的
Replica: Shard实际物理存储,可提供类似HDFS的备份机制保证冗余特性
结构图分析
一个Solr Core,分片2个Shard,shard提供1个leader replica和2个slave replica,实现冗余,Zookeeper负责挑选出leader replica,客户端进行索引的时SolrCloud会请求传递给对应的Shard的leader replica,leader replica再分发请求到shard到slave replica进行处理
Solr Cloud特点:
- solr集群中心配置
- 负载均衡
- Zookeeper整合集群节点和配置:Zookeeper的应用场景
SolrCloud并没有Master节点去分配集群节点、shard和relica而是通过上传到Zookeeper的配置信息统一管理,客户端查询和更新指令可以被发送到集群的任意一个节点,Solr可根据注册在Zookeeper内置数据库的信息去决定处理客户端请求服务器的具体节点
SolrCloud常用命令
- solr -e cloud --noprompt
Solr自带测试案例,会自动创建一个Collection:gettingstarted 和 两个Solr Core: gettingstarted_shard1以及gettingstarted_shard2,一个Core作为备份,数据自动同步
参数分析:--noprompt, 无需提示直接按照默认配置创建实例
SolrCloud基础界面:
查询SolrCloud节点的运行状态:solr status
查询Collection的详细信息:solr healthcheck -c gettingstarted
关闭SolrCloud节点:solr stop –all
删除solr collection :solr delete -c gettingstarted
SolrCloud默认配置文件: data_driven_schema_configs
SolrCloud启动:solr start –c –s solr –p 8983 –z localhost:2181 –noprompt
Solr默认服务器目录:server
- -s solr:表明加载server目录下solr
重启SolrCloud节点:solr restart -c -p 8983 -s example/cloud/node1/solr
重启node节点:solr restart -c -p 7574 -z localhost:9983 -s example/cloud/node/solr
SolrCloud创建Collection: solr create –c name [-shards #] [-replicationFactor #]
测试案例:solr create -c solrCloud -shards 1 -replicationFactor 2
Solr create –c myCollection –d data_driven_schema_configs –s 3 –rf 2 –n myconf
SolrCloud内置Zookeeper访问:
zkCli.cmd -timeout 5000 -r -server localhost:9983
分析:solr自带的zookeeper随着solrCloud启动而启动,并保存整个solr集群的所有数据,并经过选举算法进行统一调度和负载均衡
创建Solr Cluster节点:Node
$ mkdir -p example/cloud/node/solr
$ cp server/solr/solr.xml example/cloud/node/solr
$ bin/solr start -cloud -s example/cloud/node/solr -p 8987 -z localhost:9983
特别注意
将新创建的Solr Core放在SolrHome的目录下,但SolrCloud无法启动并且报错,这种情况是因为SolrCloud启动后,Zookeeper会对SolrCloud集群的数据与实际的物理数据进行校验,如果发现物理节点未在Zookeeper中配置则出错
解决方法:
将物理节点数据上传至Zookeeper集群,保持物理节点数据与Zookeeper维护的数据进行同步
命令:将新创建的Solr Core配置上传Zookeeper
zkCli -zkhost localhost:2181 -cmd upconfig -collection computer
-confdir server/solr/configsets/sample\_techproducts\_configs/conf
-confname computerConf
参数说明:
- -zkhost :指定Zookeeper的访问地址
- -cmd :命令 upconfig:上传配置信息
- -collection:指定上传配置信息关联的solr core
- -confdir :上传配置的目录
- -confnmae :solr core上传信息关联的Solr Core:如果不关联则会出现空指针异常,Zookeeper无法处理