solrcloud 配置与搭建过程_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > solrcloud 配置与搭建过程

solrcloud 配置与搭建过程

 2014/9/20 12:11:57  quentinXXZ  程序员俱乐部  我要评论(0)
  • 摘要:本文的配置示例采用单台zookeeper与两台solr实例(即两个tomcat启动),collection分为两个shard(分片),每个shard两个replia(复本),本例使用版本为solr4.4,zookeeper3.4.6。实际生产不会采用单台zookeeper,读者可自行扩展。本文链接地址:http://quentinXXZ.iteye.com/blog/21184471、zookeeper配置这里使用zookeeper单机,ip为172.16.31.184
  • 标签:配置 过程

class="MsoNormal">本文的配置示例采用单台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搭建成功,不枉我费了近一下午。

  • 大小: 14.7 KB
  • 大小: 4.8 KB
  • 大小: 41.3 KB
  • 大小: 8.4 KB
  • 大小: 3 KB
  • 查看图片附件
发表评论
用户名: 匿名