SolrCloud是基于Solr和Zookeeper的分布式搜索方案,是正在开发中的Solr4.0的核心组件之一,它的主要思想是使用Zookeeper作为集群的配置信息中心。它有几个特色功能:
基本可以用上面这幅图来概述,这是一个拥有4个Solr节点的集群,索引分布在两个Shard里面,每个Shard包含两个Solr节点,一个是Leader节点,一个是Replica节点,此外集群中有一个负责维护集群状态信息的Overseer节点,它是一个总控制器。集群的所有状态信息都放在Zookeeper集群中统一维护。从图中还可以看到,任何一个节点都可以接收索引更新的请求,然后再将这个请求转发到文档所应该属于的那个Shard的Leader节点,Leader节点更新结束完成,最后将版本号和文档转发给同属于一个Shard的replicas节点。
1、下载Solr-4.x http://lucene.apache.org/solr/downloads.html
2、下载Tomcat http://tomcat.apache.org/download-70.cgi
3、下载Zookeeper http://zookeeper.apache.org/releases.html
单机zookeeper
#解压 $ tar -zxvf zookeeper-3.4.5.tar.gz #更改配置 $ cp zookeeper-3.4.5/conf/zoo_sample.cfg zookeeper-3.4.5/conf/zoo.cfg #启动服务 $ bin/zkServer.sh start #验证 $ bin/zkCli.sh -server host:port
zookeeper主要配置:
# Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳 tickTime=2000 # 这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒 initLimit=10 # 这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒 syncLimit=5 # Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。 dataDir=/tmp/zookeeper # 这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。 clientPort=2181
zookeeper集群
1、在zookeeper-3.4.5/conf/zoo.cfg追加server配置
server.1=192.168.10.14:2888:3888 server.2=192.168.10.12:2888:3888 server.3=192.168.10.16:2888:3888
2、在每个Zookeeper保存数据的目录下指定myid文件,对应服务名称ID
#如server.id,则在myid文件中写1即可 $ vi /tmp/zookeeper/myid
3、启动zookeeper服务 bin/zkServer.sh start
第一台Solr服务器启动过程:
第二台solr服务器的启动过程:
包含2个shard的集群,每个shard中有replica节点
$ copy -r solr $TOMCAT_HOME1/conf $ copy -r solr $TOMCAT_HOME2/conf $ copy -r solr $TOMCAT_HOME3/conf $ copy -r solr $TOMCAT_HOME4/conf
$TOMCAT_HOME1/bin/catalina.sh run
1、solr.xml配置文件解释
<cores adminPath="/admin/cores" defaultCoreName="deals" host="${host:}" hostPort="${jetty.port:}" hostContext="${hostContext:}" leaderVoteWait="${leaderVoteWait:1000}"> <core name="deals" instanceDir="deals" /> </cores>
hostContext:指定服务名称
hostPort:指定端口
leaderVoteWait:选举leader的等待时间ms
原文链接:http://demi-panda.com/2013/03/30/solr-cloud-install/