rainyzz's blog

SolrCloud介绍

最近的项目中都在使用 Solr,和 Lucene 相比,Solr 更加的便捷,不需要编写过多的逻辑,简单编写配置文件就可以投入使用。

SolrCloud是Solr的分布式实现,达到处理过大的索引文件,负载均衡,数据备份等目的。本文总结一下 SolrCloud 的最简单配置和使用。

主要概念

collection: 一个 collection 就是一个类型的索引,比如说我有两类的数据,一部分是网页数据,一部分是论文的数据,我可以选择分成两个 webpages 和 articles 两个 collection。一个 collection 可以由多个 core 组成。

shard: 一个 collection 的在每个 Solr 进程中的部分是一个 shard,包含了该 collection 对应索引文件的一部分。shard的类型分两种,一种是 leader,一种是 replica。

leader: leader 是主节点,索引的处理都是 leader 节点在处理。

replica: replica 是备份节点,其对应的 leader 节点数据发生更新以后, replica 会实时得到消息,将对应 leader 节点的数据复制一份,replica节点不处理索引的建立,但是在处理搜索请求会分担 leader 节点的请求,实现负载均衡。

多核使用一个 Solr 内嵌的 ZooKeeper

Apache ZooKeeper 是 Apache 软件基金会的一个软件项目,他为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。ZooKeeper 曾经是 Hadoop 的一个子项目,但现在是一个独立的顶级项目。

SolrCloud 使用 ZooKeeper 来对配置文件进行同步,只要更改配置文件后上传到 ZooKeeper 就是可以同步到其他节点,Solr 中自己内嵌了Zookeeper,当然也可以使用独立的 ZooKeeper 来达到同样的效果。

-Dbootstrap_confdir 指定了配置文件的地址,-DzkRun 指定使用内置的 ZooKeeper,-DnumShards=2 指定了该集群使用两个 shard。-DzkHost 指定了所有的 ZooKeeper 地址。

Master 节点

1
java -Dbootstrap_confdir=./solr/collection1/conf -Dcollection.configName=myconf -DzkRun -DzkHost=master:9983 -DnumShards=2 -jar -Xmx2000m start.jar

Slave 节点

1
java DzkHost=master:9983 -DnumShards=2 -jar -Xmx2000m start.jar

多核使用多个 Solr 内嵌的 ZooKeeper

Master 节点

1
java -Dbootstrap_confdir=./solr/collection1/conf -Dcollection.configName=myconf -DzkRun -DzkHost=master:9983,slave1:9983,slave2:9983, slave3:9983 -DnumShards=2 -jar -Xmx2000m start.jar

Slave 1, 2, 3 节点

1
java -DzkRun -DzkHost=master:9983,slave1:9983,slave2:9983, slave3:9983 -DnumShards=2 -jar -Xmx2000m start.jar