SolrCloud是基于Solr和Zookeeper的分布式搜索方案,是正在开发中的Solr4.0的核心组件之一,它的主要思想是使用Zookeeper做为集群的配置信息中心。它有几个特点功能:html
基本能够用上面这幅图来概述,这是一个拥有4个Solr节点的集群,索引分布在两个Shard里面,每一个Shard包含两个Solr节点,一个是Leader节点,一个是Replica节点,此外集群中有一个负责维护集群状态信息的Overseer节点,它是一个总控制器。集群的全部状态信息都放在Zookeeper集群中统一维护。从图中还能够看到,任何一个节点均可以接收索引更新的请求,而后再将这个请求转发到文档所应该属于的那个Shard的Leader节点,Leader节点更新结束完成,最后将版本号和文档转发给同属于一个Shard的replicas节点。node
一、下载Solr-4.x http://lucene.apache.org/solr/downloads.html
二、下载Tomcat http://tomcat.apache.org/download-70.cgi
三、下载Zookeeper http://zookeeper.apache.org/releases.html
web
单机zookeeperapache
#解压 $ 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主要配置:json
# 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集群
一、在zookeeper-3.4.5/conf/zoo.cfg追加server配置tomcat
server.1=192.168.10.14:2888:3888 server.2=192.168.10.12:2888:3888 server.3=192.168.10.16:2888:3888
二、在每一个Zookeeper保存数据的目录下指定myid文件,对应服务名称IDbash
#如server.id,则在myid文件中写1便可 $ vi /tmp/zookeeper/myid
三、启动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
一、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/