1. 简介
SolrCloud是基于Solr和Zookeeper的分布式搜索方案,是正在开发中的Solr4.0的核心组件之一,它的主要思想是使用Zookeeper作为集群的配置信息中心。它有几个特色功能,集中式的配置信息、自动容错 、近实时搜索 、查询时自动负载均衡。
http://www.cnblogs.com/phinecos/archive/2012/02/10/2345634.html
http://www.cnblogs.com/saratearing/p/5690476.html
Collection:在SolrCloud集群中逻辑意义上的完整的索引。它常常被划分为一个或多个Shard,它们使用相同的Config Set。如果Shard数超过一个,它就是分布式索引,SolrCloud让你通过Collection名称引用它,而不需要关心分布式检索时需要使用的和Shard相关参数。
Core:也就是Solr Core,一个Solr中包含一个或者多个Solr Core,每个Solr Core可以独立提供索引和查询功能,每个Solr Core对应一个索引或者Collection的Shard,Solr Core的提出是为了增加管理灵活性和共用资源。在SolrCloud中有个不同点是它使用的配置是在Zookeeper中的,传统的Solr core的配置文件是在磁盘上的配置目录中。
Leader:赢得选举的Shard replicas。每个Shard有多个Replicas,这几个Replicas需要选举来确定一个Leader。选举可以发生在任何时间,但是通常他们仅在某个Solr实例发生故障时才会触发。当索引documents时,SolrCloud会传递它们到此Shard对应的leader,leader再分发它们到全部Shard的replicas。
Replica:Shard的一个拷贝。每个Replica存在于Solr的一个Core中。一个命名为“test”的collection以numShards=1创建,并且指定replicationFactor设置为2,这会产生2个replicas,也就是对应会有2个Core,每个在不同的机器或者Solr实例。一个会被命名为test_shard1_replica1,另一个命名为test_shard1_replica2。它们中的一个会被选举为Leader。
Shard:Collection的逻辑分片。每个Shard被化成一个或者多个replicas,通过选举确定哪个是Leader,保存索引时,会用哈希算法存储到不同分片上。
Zookeeper: Zookeeper提供分布式锁功能,对SolrCloud是必须的。它处理Leader选举。Solr可以以内嵌的Zookeeper运行,但是建议用独立的,并且最好有3个以上的主机。
当一个leader挂掉后,其中的几个replica 要重新选一个leader出来,但默认的是要等待3分钟,可以降低等待3分钟(如10秒或0秒)
配置选举等待时间:
在solr.xml上配置:
leaderVoteWait="${leaderVoteWait:20000}"
< xml version="1.0" encoding="UTF-8" >
<solr persistent="true">
<cores defaultCoreName="video_shard1" adminPath="/admin/cores" zkClientTimeout="${zkClientTimeout:1500}" hostPort="${jetty.port:}" hostContext="solr" leaderVoteWait="${leaderVoteWait:20000}">
</cores>
</solr>
2. zk相关操作:
注:zk常用命令中是使用zk目录下的zkCli.sh,
其他几节的内容为solr中提供的zkcli.sh的命令
1) Zk常用命令
http://www.cnblogs.com/sherrykid/p/5813148.html
zkCli.sh -server localhost:2181
create /dir (创建的是一个文件)
create /dir/node (dir自动成一个目录了)
ls /dir
delete /node
rmr /dir
2) 将SolrCloud的配置文件上传到ZooKeeper中
/opt/solr-5.5.3/server/scripts/cloud-scripts/zkcli.sh -zkhost 192.168.75.101:2181,192.168.75.102:2181,192.168.75.103:2181 -cmd upconfig -confname solrConfig_harvewifi -confdir /opt/solr-5.5.3/harvewifi/conf
confname :在zk中的配置目录名称
confdir :文件系统下的solr实例配置文件目录
3) 如果只更新单个文件使用putfile命令:
/opt/solr-5.5.3/server/scripts/cloud-scripts/zkcli.sh -zkhost 192.168.75.101:2181,192.168.75.102:2181,192.168.75.103:2181 -cmd putfile /configs/oldharvewifi/solrconfig.xml /opt/solrcloud/config/oldharvewifi/solrconfig.xml
需要注意的是如果Zookeeper中的这个文件存在需要先删除之,然后在上传更新。(经测试,可以不删,将直接覆盖)
4) 将上传到ZooKeeper中配置文件与Collection相关联
/opt/solr-5.5.3/server/scripts/cloud-scripts/zkcli.sh -cmd linkconfig -collection harvewifi -confname solrConfig_harvewifi -zkhost 192.168.75.101:2181,192.168.75.102:2181,192.168.75.103:2181
collection :solr实例名称
confname :zk中配置文件目录名