本文的配置示例采用单台zookeeper与两台solr实例(即两个tomcat启动),collection分为两个shard(分片),每个shard两个replia(复本),本例使用版本为solr 4.4, zookeeper 3.4.6。
实际生产不会采用单台zookeeper,读者可自行扩展。
本文链接地址:http://quentinXXZ.iteye.com/blog/2118447
1、 zookeeper配置
这里使用zookeeper单机, ip为172.16.31.184。在conf 文件夹 新建zoo.cfg,内容如下
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/data/zookeeper # the port at which the clients will connect clientPort=2181
2、zookeeper服务启动
bin 目录下 执行zkServer.cmd/zkServer.sh
3、 上传solr配置
在solr机器上,新建目录,用于存放conf文件
mkdir /home/solr/solrhome/zkConf
将solr 中的相关配置文件复制进去
cp -r /home/solr/solrhome/collection1/conf/* /home/solr/solrhome/zkConf
调用上传命令, 这里使用的solr自身提供的jar包,本例将相应的solr 的相关jar放在tomcat 的lib中,大家自行替换目录,利用tomcat启动solr的配置不在此讲解。
java -classpath .:/home/solr/tomcat-6.0.41/webapps/solr/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 172.16.31.184:2181 -confdir /home/solr/solrhome/zkConf -confname myconf可以利用zookeeper/bin 目录下的zkCli命令验证上传是否成功,利用如下命令连接zookeeper
zkCli.sh -server 127.0.0.1:2181
查看配置结点
ls /configs/myconf
如上所示所有配置文件成功上传
4、将上传到ZooKeeper中配置文件与Collection相关联
java -classpath .:/home/solr/tomcat-6.0.41/webapps/solr/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd linkconfig --collection mycollection --confname myconf --zkhost 172.16.31.184:2181
这里将myconf与mycollection相关联。 myconf为zookeeper配置结点,mycolletion为即将建立的solrcloud的collection(集合)名。
5、 启动solr
大家应该在之前配置standalone与master/salve形式的solr时,注意到了solr example示例中solr.xml文件中的<solrcloud>配置结点,其实在上述两种形式下,该配置结点并不会生效。《Apache Solr Reference Guide》中的描述如下:
This element defines several parameters that relate so SolrCloud. This section is ignored unless the solr instance is started with either -DzkRun or –DzkHost
可见只有指定-DzkRun 或 –DzkHost参数时,才能使solrCloud生效。
修改solr.xml文件如下:
<solr> <solrcloud> <str name="zkHost">172.16.31.184:2181</str> <str name="host">${host:}</str> <int name="hostPort">8080</int> <str name="hostContext">${hostContext:solr}</str> <int name="zkClientTimeout">${zkClientTimeout:15000}</int> <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool> </solrcloud> <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory"> <int name="socketTimeout">${socketTimeout:0}</int> <int name="connTimeout">${connTimeout:0}</int> </shardHandlerFactory> </solr>
其中8080为tomcat的端口
接着,在Tomcat的启动脚本bin/catalina.sh中,增加如下配置
JAVA_OPTS='-DzkRun'
当然有些人将zkHost,zkClientTimeout等上述配置也放到JAVA_OPTS中去,也是可以的。但是我还是觉得着尽量这些配置放到solr专属的配置文件中更好。
接下来,启动solr所在的tomcat,不用我说了吧。
验证: 进入zkCli命令,查看live_nodes结点
ls /live_nodes
返回结果如下
如上所示,zookeeper已经检测到了该solr服务了。
6、 replia与shard配置
solr 是使用restful,基于restful的,没想到replia与shard配置也是都通过http来的,反正我没找到还可文件或者web界面配置的方式。
访问solr的地址,执行solrcloud的CREATE命令:
http://199.155.122.32:8080/solr/admin/collections?action=CREATE&name=mycollection&numShards=2&replicationFactor=2&maxShardsPerNode=3
结果提示创建不成功 This requires 4 shards to be created (higher than the allowed number)
说明我们的solr运行实例还是不够。
我采用同一台机器上开始两个tomcat的方式模拟两个solr运行实例,读者条件允许的话,可以使用多台机器。在同一台solr服务器上,另外复制一个tomcat 端口为8081,并复制另一个solrhome为,我保存为solrhome1,
<solr> <solrcloud> <str name="zkHost">172.16.31.184:2181</str> <str name="host">${host:}</str> <int name="hostPort">8081</int> <str name="hostContext">${hostContext:solr}</str> <int name="zkClientTimeout">${zkClientTimeout:15000}</int> <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool> </solrcloud> <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory"> <int name="socketTimeout">${socketTimeout:0}</int> <int name="connTimeout">${connTimeout:0}</int> </shardHandlerFactory> </solr>
当然要记得将webapps/solr/WEB_INF/web.xml的solrhome地址修改
再次访问地址
http://199.155.122.32:8080/solr/admin/collections?action=CREATE&name=mycollection&numShards=2&replicationFactor=2&maxShardsPerNode=3
返回结果如下:
在Solr web界面上查看cloud的graph结果如下:
至止solrcloud搭建成功,不枉我费了近一下午。
相关推荐
solrcloud环境搭建 windows平台搭建档案 全文检索实现
solrcloud高可用集群搭建: 1.jdk安装 2.zookeeper集群安装 3.solr集群安装
SolrCloud集群搭建和使用步骤
centos下搭建好solrcloud集群,可以直接使用!!!!!!
solrcloud6安装配置
文件内含有solrcloud搭建需要的文件,内含:IK中文解析器、tomcat7.0、安装solr的文件solr4.10.3版本、zookeeper3.4.6版本。如需要请下载。也可以直接使用solr+tomcat搭建单机版的solr服务也可以。
SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。 它有几个特色功能: 1)集中式的配置信息 2)自动容错 3)近实时搜索 4)查询时自动负载均衡 zookeeper是...
为三台远程Linux服务器搭建SolrCloud 本次目的是在tomcat以及zookeeper的基础上,搭建三台远程服务器的SolrCloud 工具:WinSCP,SecureCRT,apache-tomcat-7.0.62,solr-4.10.4,zookeeper-3.4.6 WARNING: 版本注意 ...
SolrCloud是Solr4.0版本以后基于Solr和Zookeeper的分布式搜索方案。SolrCloud是Solr的基于Zookeeper一种部署方式。Solr可以以多种方式部署,例如单机方式,多机Master-Slaver方式。
Window与Linux下搭建SolrCloud分布式集群环境 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以...
这是solrCloud的集群搭建和部署,详细讲解了solr集群的部署
详细描述solrCloud单机以及单机伪集群在windows下的部署安装并配图。
4. 查询时自动负载均衡 SolrCloud索引的多个Replication可以分布在多台机器上,均衡查询压力 5.自动分发的索引和索引分片 发送文档到任何节点
solrcloud5结合zookeeper搭建、使用详解,是一部难得的好教程
本文档是介绍在centos7系统上部署solrcloud的过程,涉及的技术包括:部署zookeeper、使用solr默认的jetty服务器初始化solrcloud、使用zookeeper管理solrcloud配置文件、在linux系统上安装python3、通过python3操作...
solrcloud 搭建solr集群 solr4.7.2+zookeeper3.4.14 用到的工具包
SolrCloud5.2.1+tomcat7+zookeeper3.4.6搭建教程S
solrcloud与zookeeper